在项目中使用预编译jade模板
如果对js模板不是很清楚的同学可以参考: 推荐五款流行的JavaScript模板引擎
下边切入正文: jade官网
最初jade是为nodejs设计的html模板,但是html模板不能服役于纯前端的项目将是一件非常遗憾的事情,这里我们就来谈一谈如何让jade服役于纯前端项目。
我们这里假设你已经使用grunt完成了你的web项目的开发流程自动化。
关于为什么需要做javascript模板的预编译? 可以参考1 可以参考2
下边来说一下具体的操作步骤:
-
在script目录下新建目录template,内置两个目录jade/jade-generated
-
jade目录下存放编写的jade模板文件,比如:noresult-tips.jade
-
jade-generated 目录内存放自动编译jade生成的 client js template 文件。
-
配置grunt jade任务
- 安装grunt-contrib-jade这一任务插件,github访问地址
-
修改grunt配置文件
jade: { options: { client: true, processName: function(str) { return str.match(/^app\/scripts\/public\/template\/jade\/(.*)\.jade$/)[1]; } }, dist: { files: [ { src: '<%= yeoman.app %>/scripts/public/template/jade/noresult-tips.jade', dest: '<%= yeoman.app %>/scripts/public/template/jade-generated/noresult-tips.js' } ] } }
说一下几个参数各自的含义:
-
client: 将jade模板编译成client-side使用的js模板函数,而不是html文件;
-
processName: 生成的预编译模板对象的索引key
-
- 在js文件中如何使用:
-
首先需要引入jade的运行时文件,下载地址
<script src="scripts/public/template/jade/jade-runtime.js"></script>
-
引入通过grunt-contrib-jade生成的js文件
<script src="scripts/public/template/jade/jade-runtime.js"></script> <script src="scripts/public/template/jade-generated/noresult-tips.js"></script>
-
在逻辑js中的调用方法是:
<script src="scripts/public/template/jade/jade-runtime.js"></script> <script src="scripts/public/template/jade-generated/noresult-tips.js"></script> <script src="scripts/logic.js"></script>
在logic.js 里边的调用:
renderHtml = window.JST["noresult-tips"]({ // 这里传入用于渲染模板的data数据模型 }); document.getElementById("result-sec").innerHTML = renderHtml
-
- 说一件在手Q查找中遇到的非常奇葩的事情,在android2.3低端机上, 使用jade生成的js模板文件根本就不执行, 一直到我换用handlebars模板引擎,我也没有找到问题所在,最后放弃,如果有知道原因的朋友,欢迎不吝赐教啊。