Impresionante módulo comunitario

mentiroso-pug

pugjs es un motor de plantillas js popular anteriormente conocido como "Jade". Es sensible a la sangría y tiene un alto rendimiento. Pero en algún momento, solo podía ejecutarse en nodejs (algunas versiones de "Jade" pueden ejecutarse en el navegador), porque a partir de ahí point pugjs admite API como renderFilelas que requieren tiempo de ejecución de E/S.

E/S

A partir del fsmódulo, afortunadamente, fibjs tiene una API similar a la de nodejs, podemos ejecutar pugjs en fibjs, simplemente haga un truco mágico con el 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 código anterior, simplemente proporcione el módulo de propiedad para pugel módulo original en nodejs, puede ejecutar pugjs en fibjs.

Pero no puedo probar todas las versiones de fibjs y pug, así que marco la versión probada de fibjs y pug enpackage.jsony notaría al desarrollador si la versión al ejecutar este módulo en modo DEBUG.

API

Solo admito algunas API de pugjs , pero creo que es suficiente para su proyecto en la mayoría de los casos.

  • compile
  • render
  • renderFile

Vea los parámetros de esta API en la página de pugjs .

Muestra

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