Biblioteca de consolidación del motor de plantillas.
$ npm install consolidate
Algunos paquetes tienen el mismo nombre de clave, la consolidación los cargará según el número de pedido. Por ejemplo, para el polvo, consolidaremos intentará usarlo en este orden: dust
, dustjs-helpers
y dustjs-linkedin
. Si se instala dust
, Consolidate no utilizará dustjs-linkedin
.
cons.* | Nombre del paquete/pedido | Sitio web / Estado |
---|---|---|
atpl | npm install atpl | - |
soporte | npm install bracket-template | - |
punto | npm install dot | (sitio web) |
npm install dust (1) | (sitio web) / (sin mantenimiento) Ver: polvojs-linkedin | |
polvo | npm install dustjs-helpers (2) onpm install dustjs-linkedin (3) | (sitio web) |
npm install eco | /! Problema de seguridad | |
etc. | npm install ect | (sitio web) |
ejs | npm install ejs | (sitio web) |
aldea | npm install hamlet | - |
hamljs | npm install hamljs | - |
café-haml | npm install haml-coffee | - |
bigote daliniano | npm install handlebars | (sitio web) |
hogan | npm install hogan.js | (sitio web) |
HTMLing | npm install htmling | - |
npm install jade | (sitio web) / (renombrado pug ) | |
jazz | npm install jazz | - |
npm install jqtpl | (en desuso) | |
justo | npm install just | - |
líquido | npm install tinyliquid | (sitio web) nunca agregará ninguna característica nueva |
espíritu | npm install liquor | - |
lodash | npm install lodash | (sitio web) |
marco | npm install marko | (sitio web) |
mota | npm install mote | (sitio web) |
bigote | npm install mustache | - |
nunjucks | npm install nunjucks | (sitio web) |
platos | npm install plates | - |
doguillo | npm install pug | (sitio web) / (anteriormente jade) |
qejs | npm install qejs | - |
ractivo | npm install ractive | - |
navaja | npm install razor | - |
reaccionar | npm install react | - |
slm | npm install slm | - |
ardilla | npm install squirrelly | (sitio web) |
npm install swig (1) | (sin mantenimiento) Ver: plantillas de trago | |
trago | npm install swig-templates (2) | - |
taza para té | npm install teacup | - |
plantilla | npm install templayed | (sitio web) |
caramelo | npm install toffee | - |
ramita | npm install twig | (wiki) |
punzadas | npm install twing | (sitio web) |
subrayar | npm install underscore | (sitio web) |
vash | npm install vash | - |
velocidadjs | BETA | (sitio web) |
morsa | npm install walrus | (sitio web) |
bigotes | npm install whiskers | - |
NOTA : aún debe instalar los motores que desea utilizar y agregarlos a las dependencias de su paquete.json.
Todas las plantillas admitidas por esta biblioteca se pueden representar usando la firma (path[, locals], callback)
como se muestra a continuación, que resulta ser la firma que admite Express, por lo que cualquiera de estos motores se puede usar dentro de Express.
NOTA : Todo este código de ejemplo utiliza cons.swig para el motor de plantillas Swig. Reemplace swig con cualquier plantilla que esté usando. Por ejemplo, utilice cons.hogan para hogan.js, cons.jade para jade, etc. console.log(cons)
para obtener la lista completa de identificadores.
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
O sin opciones/variables locales:
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
Para pasar dinámicamente el motor, simplemente use el operador de subíndice y una variable:
var cons = require ( 'consolidate' )
, name = 'swig' ;
cons [ name ] ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
Además, todas las plantillas devuelven opcionalmente una promesa si no se proporciona ninguna función de devolución de llamada. La promesa representa el resultado final de la función de plantilla que se resolverá en una cadena, se compilará a partir de la plantilla o será rechazada. Las promesas exponen un método then
que registra devoluciones de llamada para recibir el valor final de la promesa y un método catch
que explica el motivo por el cual la promesa no se pudo cumplir. Las promesas permiten una estructura de código más sincrónica y resuelven problemas como las condiciones de carrera.
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } )
. then ( function ( html ) {
console . log ( html ) ;
} )
. catch ( function ( err ) {
throw err ;
} ) ;
Para habilitar el almacenamiento en caché, simplemente pase { cache: true }
. Los motores pueden usar esta opción para almacenar en caché elementos que leen el contenido del archivo, Function
compiladas, etc. Los motores que no admiten esto pueden simplemente ignorarlo. Todos los motores para los que consolidate.js implementa E/S almacenarán en caché el contenido del archivo, ideal para entornos de producción. Cuando se utiliza consolidar directamente: cons.swig('views/page.html', { user: 'tobi', cache:true }, callback);
Usando versiones de Express compatibles: app.locals.cache = true
o configure NODE_ENV en 'producción' y Express lo hará por usted.
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' ) ;
Los motores de plantillas se exponen a través del objeto cons.requires
, pero no se crean instancias de ellos hasta que hayas llamado al método cons[engine].render()
. Puede crear instancias de ellos manualmente de antemano si desea agregar filtros, globales, mixins u otras características del motor.
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
en lib.consolidate.js
. Puede pasar su propio motor/entorno a través de options.nunjucksEnv
, o si desea admitir Express, puede pasar options.settings.views
, o si tiene otro caso de uso, pase options.nunjucks
(consulte el código para obtener más información).options.partials
options.loader
.options.filters
y especifique una serie de propiedades, cada una de las cuales es una función de filtro con nombre. Una función de filtro toma una cadena como parámetro y devuelve una versión modificada de la misma.options.customTags
para especificar una serie de funciones de etiqueta que sigan la definición de etiqueta personalizada de tinyliquid.options.includeDir
.React
Para representar contenido en una plantilla base html (por ejemplo, index.html
de su aplicación React), pase la ruta de la plantilla con options.base
. Instalar departamentos de desarrollo:
$ npm install -d
Ejecute las pruebas:
$ make test
(La licencia MIT)
Copyright (c) 2011-2016 TJ Holowaychuk
Por el presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el 'Software'), para operar con el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión. , publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.