感慨几句

最近开搞Android开发了,没怎么弄js。跳出这个圈,开始考虑是不是可以做点代码之外的事。编程语言一直在发展,新特性总会层出不穷。那么,语言之外呢?

拿Web前端开发来说,js之外,还是有很多东西要做的。比如说发布脚本,比如说提速等等。

好,进入正题。

话说之前写过一个把写在html里的模板代码,抽取到js里面的脚本,开始的时候用了一段时间,感觉还可以再优化下。后来做了个新项目,里面与多个html页面,也都包含有模板代码,也都要抽取。这时之前的脚本就有点力不从心了。

所以把抽取脚本升级了下,给了个名字叫 template-picker,添加了一下特性:

  1. 支持多个html的模板抽取到一个js文件里面;
  2. 模板代码抽取之后,直接生成js function,这样就可以用压缩脚本对模板代码本身进行压缩(比如说Uglify-js或Google Cloud Compiler)了,可以压缩掉很多空格和变量名。

more

使用方法

  1. 安装
npm install template-picker
  1. 配置,配置说明开下面的注释即可
{
    //需要抽取模板的文件,如果是一个可以直接写成字符串
    //如果是多个,要写成数组,如:["index.html", "index2.html"]
    "source": "index.html",
    //抽取后的文件的输出目录,默认输出到 ./
    "target": "./out/",
    //容纳模板代码的js文件
    "templateOutput": "output.js",
    //模板代码在 templateOutput 中的占位符
    "templatePlaceholder": "/*%HtmlTemplateFunctions%*/",
    //指定是否把模板代码里的连续空格或TAB压缩成一个空格
    //可能有些地方的空格会意外的被压缩掉,默认 false
    "compressWhitespace": false
}
  1. 使用
//如果把代码下载下来直接调用的话,可以这样用
node picker.js config.js
//如果在js里面调用,则像下面调用
require('template-picker').exec('config.json');
//or
require('template-picker').exec(configObject);

一些后话

模板代码输出成js方法,除了得到更大的压缩率之外,还可以使代码在执行的时候更快,因为已经没必要在运行时把模板字符串转换成方法了。虽说这么一点点的速度并不是很明显,但是所谓性能优化、提速优化,都是建立在每一个小点上的。把所有优化点综合在一起,性能就上去了。

这里解析模板使用的模板引擎是 jstemplate,但是可能不同人会喜欢不同的模板引擎。因此如果你不喜欢这个模板引擎的话,可以直接把代码里的jstemplate调用替换成自己的即可。

本项目托管在Github(https://github.com/iazrael/template-picker)上,有需要的同学可自行前往下载。更详细的实例可以看看test目录下的代码。

Comments
Write a Comment

Tags

css3   魅力CSS   nodejs   loading   CSS   疯狂的菊花   html5   animation   compiler   编译脚本   png   WordPress   智能   旅行   优化   模板   历史记录   跨域   manifest   frame   canvas   动画   js   离线应用   codelet   transform   抽取   java   兼容问题   发布脚本   富文本   那一年在他乡   htaccess   iframe   帧动画   加载速度   intelligent   跨浏览器   DNS解析   插件   checkbox   单边   step-start   vary   复选框   自动更新   转换   文本溢出   盒子阴影   menu   blob   西安   滑动背景   box-shadow   内存占用   键盘事件   python   auto   text overflow   background   所见所得   android   rotate   字节数   合并   文本框   slide   字符串连接符   协议   伪类   兄弟选择符   网格   节点位置比较   空白   斜线拼接   自定义命令   溢出   clock   素描   无法更新   分隔符   字符编码   body   下载文件   精灵图   step   nodej   ubuntu   apache   css3选择器   创建文件   多级菜单   编辑状态   ajax   阴影   垂直   chrome   管道   时钟   firefox   背景   文件上传   createobjecturl   游记   下载   放射渐变   版本号   宽高   照片   localStorage   渐变背景   图片   图片拼接   属性值检测   自动生成   计算   返回键   oauth   合图   reset   调用   cavnas   漏洞   按钮   margin   线性渐变   xsrf   被黑   tab   checked   修复   border   消失   step-end   sprite   common-upload   菜单   兄弟选择器   字符串   svn   九寨沟   缩进   css遮罩   svg   添加系统服务   gzip   插入代码   动态   加速   模拟