fib-pug
pugjs è un popolare motore di template js precedentemente noto come "Jade". È sensibile al rientro con prestazioni elevate. Ma a un certo punto, potrebbe essere eseguito solo in nodejs (alcune versioni di "Jade" possono essere eseguite nel browser), perché da quel point pugjs supporta API come renderFile
which required I/O runtime.
I/O
A partire dal fs
modulo, fortunatamente, fibjs ha un'API simile con nodejs, possiamo eseguire pugjs in fibjs, basta fare qualche trucco magico con il sandbox
modulo di fibjs.
Meccanismo
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)
come codice sopra, fornisci semplicemente il modulo di proprietà per pug
il modulo originale in nodejs, puoi eseguire pugjs in fibjs.
Ma non posso testare tutte le versioni di fibjs e pug, quindi contrassegno la versione testata di fibjs e pug inpackage.json
e noterebbe lo sviluppatore se la versione durante l'esecuzione di questo modulo in modalità DEBUG.
API
Sostengo solo alcune API di pugjs , ma credo che nella maggior parte dei casi sia sufficiente per il tuo progetto.
compile
render
renderFile
visualizzare i parametri di questa API nella pagina di pugjs .
Campione
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>'