フィブパグ
pugjs は、以前は「Jade」として知られていた人気のある JS テンプレート エンジンの 1 つです。インデントに敏感で、パフォーマンスが優れています。しかし、ある時点で、nodejs でしか実行できなくなりました (「Jade」の一部のバージョンはブラウザで実行できます)。ポイントpugjs は、 I/O ランタイムを必要とする API をサポートしていますrenderFile
。
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)
上記のコードのように、pug
nodejs の元のモジュールのプロパティ モジュールを指定するだけで、fibjs で pugjs を実行できます。
ただし、すべてのバージョンの fibjs と pug をテストすることはできないので、テスト済みの fibjs バージョンをマークして、pug in します。package.json
このモジュールを 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>'