Fantastisches Community-Modul

Fib-Mops

pugjs ist eine beliebte js-Template-Engine, die früher als "Jade" bekannt war. Sie ist einrückungsempfindlich und bietet eine hohe Leistung. Irgendwann konnte sie jedoch nur in nodejs ausgeführt werden (einige Versionen von "Jade" können im Browser ausgeführt werden) point pugjs unterstützen APIs, für renderFiledie beispielsweise eine E / A-Laufzeit erforderlich ist.

I / O.

Ab fsModul hat zum Glück fibjs ähnliches API mit NodeJS können wir pugjs in fibjs laufen, nur mit fibjs ist etwas Magie Hack tun sandboxModul.

Mechanismus

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)

pugGeben Sie als obigen Code nur das Eigenschaftsmodul für das Signalmodul in nodejs an. Sie können pugjs in fibjs ausführen.

Aber ich kann nicht alle Versionen von Fibjs und Mops testen, also markiere ich die getestete Version von Fibjs und Mops package.jsonund würde Entwickler wenn Version bemerken, wenn dieses Modul im DEBUG-Modus ausgeführt wird.

API

Ich unterstütze nur eine API von pugjs , aber ich glaube, dass es in den meisten Fällen für Ihr Projekt ausreicht.

  • compile
  • render
  • renderFile

Sehen Sie sich die Parameter dieser API auf der Seite von pugjs an .

Stichprobe

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