Fantastico modulo comunitario

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.

  • 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>'