Fantastico modulo della community

fib-pug

pugjs è un popolare motore di modelli js precedentemente noto come "Jade". È sensibile all'indentazione e ad alte prestazioni. Ma a un certo punto, potrebbe essere eseguito solo in nodejs (alcune versioni di "Jade" possono essere eseguite nel browser), perché da quella point pugjs supporta API come renderFile che richiedeva il runtime di I / O.

I / O

A partire dal modulo fs , fortunatamente fibjs ha un'API simile con nodejs, possiamo eseguire pugjs in fibjs, basta fare qualche trucco magico con il modulo sandbox 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 solo il modulo proprietà per il modulo pug 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 in package.json e noterebbe lo sviluppatore se versione quando esegue questo modulo in modalità DEBUG .

API

Supporto solo alcune API di pugjs , ma credo che sia sufficiente per il tuo progetto nella maggior parte dei casi.

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