Fib-Mops
pugjs ist eine beliebte js-Vorlagen-Engine, die früher als "Jade" bekannt war. Sie ist einrückungsempfindlich und bietet hohe Leistung. Aber irgendwann konnte sie nur in nodejs ausgeführt werden (einige Versionen von "Jade" können im Browser ausgeführt werden), denn davon point pugjs unterstützen APIs, die z. B. renderFile
die E/A-Laufzeit erfordern.
E/A
Ab dem fs
Modul hat fibjs glücklicherweise eine ähnliche API wie nodejs, wir können pugjs in fibjs ausführen, machen Sie einfach einen magischen Hack mit dem sandbox
Modul von fibjs .
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)
Als Code oben, stellen Sie einfach das Eigenschaftsmodul für das Originalmodul pug
in nodejs bereit, 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 in package.json
und 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, es reicht in den meisten Fällen für Ihr Projekt.
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>'