fib-pug
pugjs es un motor de plantilla js popular anteriormente conocido como "Jade". Es sensible a las sangrías con alto rendimiento. Pero en algún momento, solo podría ejecutarse en nodejs (alguna versión de "Jade" se puede ejecutar en el navegador), porque a partir de eso point pugjs admiten API como renderFile
que requiere tiempo de ejecución de E / S.
E / S
A partir del módulo fs
, afortunadamente, fibjs tiene una API similar con nodejs, podemos ejecutar pugjs en fibjs, solo haga un truco mágico con el módulo sandbox
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 el código anterior, solo proporcione el módulo de propiedad para el módulo pug
en nodejs, puede ejecutar pugjs en fibjs.
Pero no puedo probar todas las versiones de fibjs y pug, así que marco la versión probada de fibjs y pug en package.json
y notaría al desarrollador si la versión al ejecutar este módulo en modo DEBUG .
API
Solo soporto alguna API de pugjs , pero creo que es suficiente para su proyecto en la mayoría de los casos.
-
compile
-
render
-
renderFile
ver los parámetros de esta api en la página de pugjs .
Muestra
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>'