fib-pug
pugjs é un popular motor de modelos js coñecido anteriormente como "Xade". É sensible á sangría e ten un alto rendemento. Pero nalgún momento só podería executarse en nodejs (algunha versión de "Xade" pode executarse no navegador), porque a partir diso point pugjs admite API como renderFile
as que requirían tempo de execución de E/S.
E/S
A partir do fs
módulo, por sorte, fibjs ten unha API similar con nodejs, podemos executar pugjs en fibjs, só tes que facer algún truco máxico co sandbox
módulo de fibjs.
Mecanismo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18/**
* only test in fibjs 0.21 and pug@2.0.0-rc.4
*
*/
const vm = require('vm');
const sbox = new vm.SandBox({
fs: require('fs'),
path: require('path'),
http: require('http'),
https: require('http'),
assert: require('assert'),
url: require('url'),
os: require('os'),
util: require('util')
});
// one valid pug module
const pug = sbox.require('pug', __filename)
como o código anterior, só fornece o módulo de propiedades para pug
o módulo orixinal en nodejs, pode executar pugjs en fibjs.
Pero non podo probar todas as versións de fibjs e pug, polo que marco a versión probada de fibjs e pugpackage.json
e notaría a versión do programador ao executar este módulo no modo DEBUG.
API
Só admito algunha API de pugjs , pero creo que é suficiente para o teu proxecto na maioría dos casos.
compile
render
renderFile
ver os parámetros desta API na páxina de pugjs .
Mostra
1
2
3
4
5
6
7
8
9
10
11
12
13#!/usr/bin/env fibjs
const locals = {testVar: '测试变量'}
const rawText = 'div\n\t| #{testVar}'
try {
html = pug.compile(rawText, {pretty: true})(locals);
} catch (e) {
html = ''
error = e.message
}
console.log(html) // '<div>测试变量</div>'