Module communautaire génial

fib-pug

pugjs est un moteur de template js populaire anciennement connu sous le nom de "Jade". Il est sensible à l'indentation avec de hautes performances. Mais à un moment donné, il ne pouvait fonctionner que dans nodejs (certaines versions de "Jade" peuvent fonctionner dans le navigateur), car à partir de là point pugjs prend en charge les API telles que renderFile qui nécessitaient une exécution d'E / S.

E / S

À partir du module fs , heureusement, fibjs a une API similaire avec nodejs, nous pouvons exécuter pugjs dans fibjs, il suffit de faire un hack magique avec le module sandbox de fibjs.

Mécanisme

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)

comme code ci-dessus, fournissez simplement le module de propriété pour le module orignal pug dans nodejs, vous pouvez exécuter pugjs dans fibjs.

Mais je ne peux pas tester toutes les versions de fibjs et pug, donc je marque la version testée de fibjs et pug dans package.json et remarquerait le développeur si la version lors de l'exécution de ce module en mode DEBUG .

API

Je supporte juste certaines API de pugjs , mais je pense que c'est suffisant pour votre projet dans la plupart des cas.

  • compile
  • render
  • renderFile

voir les paramètres de cette api dans la page de pugjs .

Échantillon

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