Impresionante módulo comunitario

fib-pug

pugjs é un popular motor de modelos js coñecido anteriormente como "Xade". É sensible á sangría e ten un alto rendemento. Pero nalgún momento só podería executarse en nodejs (algunha versión de "Xade" pode executarse no navegador), porque a partir diso point pugjs admite API como renderFileas que requirían tempo de execución de E/S.

E/S

A partir do fsmódulo, por sorte, fibjs ten unha API similar con nodejs, podemos executar pugjs en fibjs, só tes que facer algún truco máxico co sandboxmódulo de fibjs.

Mecanismo

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)

como o código anterior, só fornece o módulo de propiedades para pugo módulo orixinal en nodejs, pode executar pugjs en fibjs.

Pero non podo probar todas as versións de fibjs e pug, polo que marco a versión probada de fibjs e pugpackage.jsone notaría a versión do programador ao executar este módulo no modo DEBUG.

API

Só admito algunha API de pugjs , pero creo que é suficiente para o teu proxecto na maioría dos casos.

  • compile
  • render
  • renderFile

ver os parámetros desta API na páxina de pugjs .

Mostra

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