用JSLint+Ant检验HTML代码
JSLint真是一个强大的工具。之前只是关注它对Javascript的作用方面,其实它同样可以检验HTML代码以及内联的Javascript代码。
JSlint应该说跟WDG HTML Validator(http://htmlhelp.com/tools/validator/)的作用不完全一样。JSLint不仅作语法检查,还做写法上的检查。JSLint的出发点是为了保证代码的品质。
比如在链接里写脚本会报错,如下:
[apply] Lint 在行 23 字符 14: Script URL.
[apply]
????????
JSlint在语法检查上不会那么严格,但都是最重要的,比如标签是否对称嵌套,标签是否闭合。(详情见http://www.jslint.com/lint.html)
将检验HTML代码这个任务加入到前端开发Build环节中。但在实践中,我遇到了编码问题,如果源文件是UTF-8的就会有麻烦。迫不得以采取一个笨方法,通过ant的copy任务先将源文件备分为ISO-8859-1编码(ant不支持GBK的转换)的文件,再对它进行校验。之后再统一删除备分文件。
关于编码问题,文章下面评论有人写到,不知道是否可行?
slint.js 文件中有个 readFile( 方法(在文件尾部),
给他加个参数:
readFile(f,'utf-8')
即可指定文件编码。
还有一篇文章:《用 Ant 构建组件》
它的build.xml如下,有涉及编码的问题,可以看一下:
<?xml version="1.0" encoding="UTF-8"?> <project name="Smart Queue" default="compress" basedir="."> <description>Build file for Ant</description> <property name="src" location="src" /> <property name="build" location="build" /> <property name="lib" location="lib"/> <property name="inputencoding" value="utf-8"/> <property name="outputencoding" value="gbk"/> <target name="init"> <mkdir dir="${build}"/> </target> <target name="concat" depends="init"> <concat destfile="${build}/smart-queue.source.js" encoding="${inputencoding}" outputencoding="${outputencoding}"> <filelist dir="${src}" files="intro.js, lang.js, smart-queue.js" /> </concat> </target> <target name="compress" depends="concat"> <java jar="${lib}/yuicompressor.jar" fork="true"> <arg line="--type js --charset utf-8 -o ${build}/smart-queue.js ${build}/smart-queue.js"/> </java> </target> <target name="clean"> <delete dir="${build}"/> </target> </project>