mentiroso-pug
pugjs es un motor de plantillas js popular anteriormente conocido como "Jade". Es sensible a la sangría y tiene un alto rendimiento. Pero en algún momento, solo podía ejecutarse en nodejs (algunas versiones de "Jade" pueden ejecutarse en el navegador), porque a partir de ahí point pugjs admite API como renderFile
las que requieren tiempo de ejecución de E/S.
E/S
A partir del fs
módulo, afortunadamente, fibjs tiene una API similar a la de nodejs, podemos ejecutar pugjs en fibjs, simplemente haga un truco mágico con el 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 código anterior, simplemente proporcione el módulo de propiedad para pug
el módulo original 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 enpackage.json
y notaría al desarrollador si la versión al ejecutar este módulo en modo DEBUG.
API
Solo admito algunas API de pugjs , pero creo que es suficiente para su proyecto en la mayoría de los casos.
compile
render
renderFile
Vea 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>'