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 renderFilequelle che richiedono runtime I/O.
I/O
A partire dal fsmodulo, fortunatamente, fibjs ha un'API simile con nodejs, possiamo eseguire pugjs in fibjs, basta fare qualche trucco magico con il sandboxmodulo 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 pugil 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.jsone 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.
compilerenderrenderFile
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>'
