模板引擎整合库。
$ npm install consolidate
有些包有相同的键名,consolidate 会按照顺序号加载它们。以dust为例,consolidate将尝试按以下顺序使用: dust
、 dustjs-helpers
和dustjs-linkedin
。如果安装了dust
, dustjs-linkedin
将不会被consolidate使用。
名称cons.* | 封装名称/订单 | 网站/状态 |
---|---|---|
阿特普 | npm install atpl | - |
括号 | npm install bracket-template | - |
点 | npm install dot | (网站) |
npm install dust (1) | (网站)/ (未维护) 请参阅:dustjs-linkedin | |
灰尘 | npm install dustjs-helpers (2) 或npm install dustjs-linkedin (3) | (网站) |
npm install eco | /! 安全问题 | |
等 | npm install ect | (网站) |
埃杰斯 | npm install ejs | (网站) |
村庄 | npm install hamlet | - |
哈姆利什 | npm install hamljs | - |
火腿咖啡 | npm install haml-coffee | - |
车把 | npm install handlebars | (网站) |
霍根 | npm install hogan.js | (网站) |
html处理 | npm install htmling | - |
npm install jade | (网站)/ (更名为pug ) | |
爵士乐 | npm install jazz | - |
npm install jqtpl | (已弃用) | |
只是 | npm install just | - |
液体 | npm install tinyliquid | (网站) 永远不会添加任何新功能 |
酒 | npm install liquor | - |
洛达什 | npm install lodash | (网站) |
马尔科 | npm install marko | (网站) |
微尘 | npm install mote | (网站) |
胡子 | npm install mustache | - |
修女 | npm install nunjucks | (网站) |
盘子 | npm install plates | - |
哈巴狗 | npm install pug | (网站)/ (以前的翡翠) |
奎杰斯 | npm install qejs | - |
活跃的 | npm install ractive | - |
剃刀 | npm install razor | - |
反应 | npm install react | - |
可持续发展管理 | npm install slm | - |
松鼠般的 | npm install squirrelly | (网站) |
npm install swig (1) | (未维护) 请参阅: swig-templates | |
痛饮 | npm install swig-templates (2) | - |
茶碗 | npm install teacup | - |
模板化的 | npm install templayed | (网站) |
奶糖 | npm install toffee | - |
枝条 | npm install twig | (维基百科) |
孪生 | npm install twing | (网站) |
下划线 | npm install underscore | (网站) |
瓦什 | npm install vash | - |
速度js | 测试版 | (网站) |
海象 | npm install walrus | (网站) |
胡须 | npm install whiskers | - |
注意:您仍然必须安装您想要使用的引擎,并将它们添加到您的 package.json 依赖项中。
该库支持的所有模板都可以使用签名(path[, locals], callback)
进行渲染,如下所示,这恰好是 Express 支持的签名,因此这些引擎中的任何一个都可以在 Express 中使用。
注意:所有此示例代码都使用 cons.swig 作为 swig 模板引擎。将 swig 替换为您正在使用的任何模板。例如,使用 cons.hogan 表示 hogan.js,使用 cons.jade 表示 jade 等。console.log console.log(cons)
表示完整的标识符列表。
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
或者没有选项/局部变量:
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
要动态传递引擎,只需使用下标运算符和变量:
var cons = require ( 'consolidate' )
, name = 'swig' ;
cons [ name ] ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
此外,如果没有提供回调函数,所有模板都可以选择返回一个承诺。 Promise 表示模板函数的最终结果,该结果要么解析为字符串,从模板编译,要么被拒绝。 Promise 公开了一个then
方法,该方法注册回调以接收 Promise 的最终值,以及一个catch
方法,该方法用于解释 Promise 无法实现的原因。 Promise 允许更多类似同步的代码结构并解决竞争条件等问题。
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } )
. then ( function ( html ) {
console . log ( html ) ;
} )
. catch ( function ( err ) {
throw err ;
} ) ;
要启用缓存,只需传递{ cache: true }
即可。引擎可以使用此选项来缓存读取文件内容、编译的Function
等的内容。不支持此选项的引擎可能会忽略它。 consolidate.js 实现 I/O 的所有引擎都将缓存文件内容,非常适合生产环境。直接使用 consolidate 时: cons.swig('views/page.html', { user: 'tobi', cache:true }, callback);
使用受支持的 Express 版本: app.locals.cache = true
或将 NODE_ENV 设置为“生产”,Express 将为您执行此操作。
var express = require ( 'express' )
, cons = require ( 'consolidate' )
, app = express ( ) ;
// assign the swig engine to .html files
app . engine ( 'html' , cons . swig ) ;
// set .html as the default extension
app . set ( 'view engine' , 'html' ) ;
app . set ( 'views' , __dirname + '/views' ) ;
var users = [ ] ;
users . push ( { name : 'tobi' } ) ;
users . push ( { name : 'loki' } ) ;
users . push ( { name : 'jane' } ) ;
app . get ( '/' , function ( req , res ) {
res . render ( 'index' , {
title : 'Consolidate.js'
} ) ;
} ) ;
app . get ( '/users' , function ( req , res ) {
res . render ( 'users' , {
title : 'Users' ,
users : users
} ) ;
} ) ;
app . listen ( 3000 ) ;
console . log ( 'Express server listening on port 3000' ) ;
模板引擎通过cons.requires
对象公开,但在调用cons[engine].render()
方法之前它们不会实例化。如果您想添加过滤器、全局变量、mixin 或其他引擎功能,您可以事先手动实例化它们。
var cons = require ( 'consolidate' ) ,
nunjucks = require ( 'nunjucks' ) ;
// add nunjucks to requires so filters can be
// added and the same instance will be used inside the render method
cons . requires . nunjucks = nunjucks . configure ( ) ;
cons . requires . nunjucks . addFilter ( 'foo' , function ( ) {
return 'bar' ;
} ) ;
lib.consolidate.js
中的exports.nunjucks.render
函数。您可以通过options.nunjucksEnv
传递您自己的引擎/环境,或者如果您想支持 Express,您可以传递options.settings.views
,或者如果您有其他用例,则传递options.nunjucks
(有关更多信息,请参阅代码)。options.partials
传递部分内容options.loader
传递加载器。options.filters
并指定一个属性数组,每个属性都是一个命名的过滤器函数。过滤器函数将字符串作为参数并返回它的修改版本。options.customTags
指定遵循tinyliquid 自定义标签定义的标签函数数组。options.includeDir
。React
要将内容渲染到 html 基本模板(例如 React 应用程序的index.html
)中,请使用options.base
传递模板的路径。 安装开发部门:
$ npm install -d
运行测试:
$ make test
(麻省理工学院许可证)
版权所有 (c) 2011-2016 TJ Holowaychuk
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。