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 renderFileas que requirían tempo de execución de E/S.
E/S
A partir do fsmó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 sandboxmó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 pugo 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.jsone 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.
compilerenderrenderFile
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>'
