fib-pug
pugjs és un popular motor de plantilles js conegut anteriorment com "Jade". És sensible al sagnat amb un alt rendiment. Però en algun moment, només es podria executar en nodejs (alguna versió de "Jade" es pot executar al navegador), perquè a partir d'això els pugjs de punt admeten API com ara renderFile
les que requereixen temps d'execució d'E/S.
E/S
A partir del fs
mòdul, afortunadament, fibjs té una API similar amb nodejs, podem executar pugjs a fibjs, només cal fer algun truc màgic amb el sandbox
mòdul de fibjs.
Mecanisme
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)
Com a codi anterior, només cal que proporcioneu el mòdul de propietats per pug
al mòdul original a nodejs, podeu executar pugjs a fibjs.
Però no puc provar totes les versions de fibjs i pug, així que marco la versió provada de fibjs i pug apackage.json
i notaria la versió del desenvolupador quan executeu aquest mòdul en mode DEBUG.
API
Només suporto algunes API de pugjs , però crec que n'hi ha prou per al vostre projecte en la majoria dels casos.
compile
render
renderFile
visualitzeu els paràmetres d'aquesta API a la pàgina 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>'