这篇回答不适合初学者!
使用Jade模板引擎...向Jade模板传递变量是一个非常普遍的用例。
我正在使用grunt(grunt-contrib-jade),但你不必使用grunt。只需使用标准的npm jade模块即可。
如果使用grunt,则gruntfile应该像这样...
jade: {
options: {
},
dev: {
options: {
data: {
pageTitle: '<%= grunt.file.name %>',
homePage: '/app',
liveReloadServer: liveReloadServer,
cssGruntClassesForHtmlHead: 'grunt-' + '<%= grunt.task.current.target %>'
},
pretty: true
},
files: [
{
expand: true,
cwd: "src/app",
src: ["index.jade", "404.jade"],
dest: "lib/app",
ext: ".html"
},
{
expand: true,
flatten: true,
cwd: "src/app",
src: ["directives/partials/*.jade"],
dest: "lib/app/directives/partials",
ext: ".html"
}
]
}
},
我们现在可以轻松地在Jade模板中访问grunt传递的数据。
与Modernizr使用的方法类似,我根据传递的变量值在HTML标记上设置了一个CSS类,并且可以根据CSS类是否存在使用JavaScript逻辑。
如果使用Angular,这很棒,因为您可以根据类是否存在来包含页面中的元素。
例如,如果存在该类,我可能会包含一个脚本...
(例如,在开发中我可能会包含实时重新加载脚本,但在生产中不会)
<script ng-if="controller.isClassPresent()" src="//localhost:35729/livereload.js"></script>