Module communautaire génial

fib-carlin

pugjs est un moteur de modèle js populaire anciennement connu sous le nom de "Jade". Il est sensible à l'indentation avec des performances élevées. Mais à un moment donné, il ne pouvait s'exécuter que dans nodejs (certaines versions de "Jade" peuvent s'exécuter dans le navigateur), car à partir de cela point pugjs prend en charge les API telles que celles renderFilequi nécessitaient un temps d'exécution d'E/S.

E/S

En ce qui fsconcerne le module, heureusement, fibjs a une API similaire avec nodejs, nous pouvons exécuter pugjs dans fibjs, il suffit de faire un peu de magie 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 code ci-dessus, fournissez simplement le module de propriété pour le pugmodule 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 pug in package.jsonet remarquerait le développeur si la version lors de l'exécution de ce module en mode DEBUG.

API

Je prends juste en charge 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>'