素晴らしいコミュニティモジュール

fib-pug

pugjsは、以前は「Jade」と呼ばれていた人気のjsテンプレートエンジンの1つで、インデントに敏感で高性能です。しかし、ある時点では、nodejsでしか実行できませんでした(「Jade」の一部のバージョンはブラウザで実行できます)。ポイントpugjsは、 I / Oランタイムを必要とするrenderFileなどのAPIをサポートします。

I / O

fsモジュールの時点で、幸いなことに、fibjsにはnodejsと同様のAPIがあり、fibjsでpugjsを実行でき、fibjsのsandboxモジュールで魔法のハックを行うだけです。

機構

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)

上記のコードのように、ただのorignalのプロパティモジュールを提供pugあなたはfibjsでpugjsを実行することができ、nodejs内のモジュール。

ただし、fibjsとpugのすべてのバージョンをテストすることはできないため、 package.jsonテストしたバージョンのfibjsとpugにマークを付けます。このモジュールをDEBUGモードで実行すると、バージョンが開発者に通知されます。

API

私はpugjsのAPIをサポートしているだけですが、ほとんどの場合、プロジェクトにはそれで十分だと思います。

  • compile
  • render
  • renderFile

pugjsのページでこのapiのパラメーターを表示します。

サンプル

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