Biblioteca de consolidação do mecanismo de modelo.
$ npm install consolidate
Alguns pacotes possuem o mesmo nome de chave, a consolidação irá carregá-los de acordo com o número do pedido. Por exemplo para poeira, consolidate tentaremos usar nesta ordem: dust
, dustjs-helpers
e dustjs-linkedin
. Se dust
estiver instalado, dustjs-linkedin
não será usado pela consolidação.
Nomeie cons.* | Nome do pacote/pedido | Site / Estado |
---|---|---|
atpl | npm install atpl | - |
suporte | npm install bracket-template | - |
ponto | npm install dot | (site) |
npm install dust (1) | (site) / (sem manutenção) Veja: dustjs-linkedin | |
pó | npm install dustjs-helpers (2) ounpm install dustjs-linkedin (3) | (site) |
npm install eco | /! Problema de segurança | |
etc. | npm install ect | (site) |
ejs | npm install ejs | (site) |
aldeia | npm install hamlet | - |
hamljs | npm install hamljs | - |
café haml | npm install haml-coffee | - |
guidão | npm install handlebars | (site) |
hogan | npm install hogan.js | (site) |
HTML | npm install htmling | - |
npm install jade | (site) / (renomeado pug ) | |
jazz | npm install jazz | - |
npm install jqtpl | (obsoleto) | |
apenas | npm install just | - |
líquido | npm install tinyliquid | (site) nunca adicionará novos recursos |
licor | npm install liquor | - |
lodash | npm install lodash | (site) |
marco | npm install marko | (site) |
mote | npm install mote | (site) |
bigode | npm install mustache | - |
freiras | npm install nunjucks | (site) |
pratos | npm install plates | - |
pug | npm install pug | (site) / (anteriormente jade) |
qejs | npm install qejs | - |
reativo | npm install ractive | - |
navalha | npm install razor | - |
reagir | npm install react | - |
slm | npm install slm | - |
esquilo | npm install squirrelly | (site) |
npm install swig (1) | (sem manutenção) Veja: modelos de gole | |
gole | npm install swig-templates (2) | - |
xícara de chá | npm install teacup | - |
templayed | npm install templayed | (site) |
caramelo | npm install toffee | - |
galho | npm install twig | (wiki) |
pontada | npm install twing | (site) |
sublinhado | npm install underscore | (site) |
Vash | npm install vash | - |
velocidadejs | BETA | (site) |
morsa | npm install walrus | (site) |
bigodes | npm install whiskers | - |
NOTA : você ainda deve instalar os motores que deseja usar, adicione-os às suas dependências package.json.
Todos os modelos suportados por esta biblioteca podem ser renderizados usando a assinatura (path[, locals], callback)
conforme mostrado abaixo, que é a assinatura que o Express suporta, portanto qualquer um desses mecanismos pode ser usado no Express.
NOTA : Todo este código de exemplo usa cons.swig para o mecanismo de modelo swig. Substitua o gole por qualquer modelo que você esteja usando. Por exemplo, use cons.hogan para hogan.js, cons.jade para jade, etc. console.log(cons)
para a 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 ) ;
} ) ;
Ou sem opções/variáveis locais:
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
Para passar o mecanismo dinamicamente, basta usar o operador subscrito e uma variável:
var cons = require ( 'consolidate' )
, name = 'swig' ;
cons [ name ] ( 'views/page.html' , { user : 'tobi' } , function ( err , html ) {
if ( err ) throw err ;
console . log ( html ) ;
} ) ;
Além disso, todos os modelos retornam opcionalmente uma promessa se nenhuma função de retorno de chamada for fornecida. A promessa representa o resultado final da função do modelo que será resolvida em uma string, compilada a partir do modelo, ou será rejeitada. As promessas expõem um método then
que registra retornos de chamada para receber o valor eventual da promessa e um método catch
que explica o motivo pelo qual a promessa não pôde ser cumprida. As promessas permitem uma estrutura de código mais síncrona e resolvem problemas como condições de corrida.
var cons = require ( 'consolidate' ) ;
cons . swig ( 'views/page.html' , { user : 'tobi' } )
. then ( function ( html ) {
console . log ( html ) ;
} )
. catch ( function ( err ) {
throw err ;
} ) ;
Para ativar o cache, basta passar { cache: true }
. Os motores podem usar esta opção para armazenar em cache coisas lendo o conteúdo do arquivo, Function
s compiladas, etc. Os motores que não suportam isso podem simplesmente ignorá-lo. Todos os mecanismos para os quais consolidate.js implementam E/S armazenarão em cache o conteúdo do arquivo, ideal para ambientes de produção. Ao usar consolidar diretamente: cons.swig('views/page.html', { user: 'tobi', cache:true }, callback);
Usando versões Express suportadas: app.locals.cache = true
ou defina NODE_ENV como 'produção' e o Express fará isso para você.
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' ) ;
Os mecanismos de modelo são expostos por meio do objeto cons.requires
, mas não são instanciados até que você chame o método cons[engine].render()
. Você pode instanciá-los manualmente se quiser adicionar filtros, globais, mixins ou outros recursos do mecanismo.
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
em lib.consolidate.js
. Você pode passar seu próprio mecanismo/ambiente por meio de options.nunjucksEnv
ou, se quiser oferecer suporte ao Express, pode passar options.settings.views
ou, se tiver outro caso de uso, passar options.nunjucks
(consulte o código para obter mais informações).options.partials
options.loader
.options.filters
e especifique uma matriz de propriedades, cada uma das quais é uma função de filtro nomeada. Uma função de filtro recebe uma string como parâmetro e retorna uma versão modificada dela.options.customTags
para especificar uma matriz de funções de tag que seguem a definição de tag personalizada tinyliquid.options.includeDir
.React
Para renderizar o conteúdo em um modelo base html (por exemplo, index.html
do seu aplicativo React), passe o caminho do modelo com options.base
. Instale dependências de desenvolvimento:
$ npm install -d
Execute os testes:
$ make test
(A licença MIT)
Direitos autorais (c) 2011-2016 TJ Holowaychuk
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o 'Software'), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO 'COMO ESTÁ', SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.