Библиотека консолидации шаблонизатора.
$ npm install consolidate
Некоторые пакеты имеют одинаковое имя ключа, консолидация загрузит их в соответствии с номером заказа. В качестве примера пыли консолидация попытается использовать в следующем порядке: dust
, dustjs-helpers
и dustjs-linkedin
. Если установлена dust
, dustjs-linkedin
не будет использоваться консолидацией.
cons.* | Название пакета/заказ | Веб-сайт/Состояние |
---|---|---|
atpl | npm install atpl | - |
кронштейн | npm install bracket-template | - |
точка | npm install dot | (веб-сайт) |
npm install dust (1) | (веб-сайт) / (не поддерживается) См.: dumpjs-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 | (веб-сайт) |
HTMLing | 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-шаблоны | |
глоток | 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(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 ) ;
} ) ;
Кроме того, все шаблоны могут возвращать обещание, если не указана функция обратного вызова. Промис представляет собой конечный результат функции шаблона, который либо разрешится в строку, скомпилированную из шаблона, либо будет отклонен. Промисы предоставляют метод then
, который регистрирует обратные вызовы для получения конечного значения обещания, и метод catch
, который определяет причину, по которой обещание не может быть выполнено. Промисы обеспечивают более синхронную структуру кода и решают такие проблемы, как условия гонки.
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
и т. д. Движки, которые не поддерживают это, могут просто игнорировать это. Все движки, в которых консольный.js реализует ввод-вывод, кэшируют содержимое файла, что идеально подходит для производственных сред. При прямом использовании консолидации: cons.swig('views/page.html', { user: 'tobi', cache:true }, callback);
Использование поддерживаемых версий Express: app.locals.cache = true
или установите для NODE_ENV значение «production», и 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()
. Вы можете заранее создать их экземпляры вручную, если хотите добавить фильтры, глобальные переменные, примеси или другие функции движка.
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' ;
} ) ;
exports.nunjucks.render
в lib.consolidate.js
. Вы можете передать свой собственный движок/среду через options.nunjucksEnv
, или, если вы хотите поддерживать Express, вы можете передать options.settings.views
, или, если у вас есть другой вариант использования, передать options.nunjucks
(дополнительную информацию см. в коде).options.partials
options.loader
.options.filters
и укажите массив свойств, каждое из которых является именованной функцией фильтра. Функция фильтра принимает строку в качестве параметра и возвращает ее измененную версию.options.customTags
, чтобы указать массив функций тега, которые соответствуют определению пользовательского тега tinyliquid.options.includeDir
.React
Чтобы визуализировать контент в базовый шаблон html (например, index.html
вашего приложения React), передайте путь к шаблону с помощью options.base
. Установите разработчика:
$ npm install -d
Запустите тесты:
$ make test
(Лицензия MIT)
Copyright (c) 2011-2016 Т.Дж. Холовайчук
Настоящим бесплатно любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), предоставляется разрешение на использование Программного обеспечения без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ПРАВОНАРУШЕНИЮ ИЛИ ДРУГИМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ОТ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.