Module communautaire génial

fib-carlin

pugjs est un moteur de modèles js populaire anciennement connu sous le nom de "Jade". Il est sensible à l'indentation et offre de hautes performances. Mais à un moment donné, il ne pouvait fonctionner que dans nodejs (certaines versions de "Jade" peuvent s'exécuter dans un navigateur), car à partir de là point pugjs prend en charge les API telles que renderFilecelles qui nécessitent un runtime d'E/S.

E/S

En ce qui concerne fsle module, heureusement, fibjs a une API similaire à celle de nodejs, nous pouvons exécuter pugjs dans fibjs, il suffit de faire un hack magique avec le sandboxmodule 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 le code ci-dessus, fournissez simplement le module de propriété pour pugle module d'origine 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 pugpackage.jsonet remarquerait le développeur si la version lors de l'exécution de ce module en mode DEBUG.

API

Je prends simplement en charge certaines API de pugjs , mais je pense que c'est suffisant pour votre projet dans la plupart des cas.

  • compile
  • render
  • renderFile

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