frottola
pugjs è un popolare motore di template js precedentemente noto come "Jade". È sensibile al rientro e offre prestazioni elevate. Ma a un certo punto potrebbe essere eseguito solo in nodejs (alcune versioni di "Jade" possono essere eseguite nel browser), perché da lì point pugjs supporta API come renderFile
quelle che richiedono runtime I/O.
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 il 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 noterei la versione dello sviluppatore durante l'esecuzione di questo modulo in modalità DEBUG.
API
Supporto solo alcune API di pugjs , ma credo che nella maggior parte dei casi sia sufficiente per il tuo progetto.
compile
render
renderFile
visualizza 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>'