Fib-Mops
pugjs ist eine beliebte JS-Vorlagen-Engine, die früher als „Jade“ bekannt war. Sie ist einrückungsempfindlich und leistungsstark. Aber irgendwann konnte sie nur noch in NodeJS laufen (einige Versionen von „Jade“ können im Browser laufen), weil von da an point pugjs unterstützt APIs, die beispielsweise renderFile
eine I/O-Laufzeit erfordern.
E/A
Was das fs
Modul angeht, hat fibjs zum Glück 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)
Geben Sie wie im obigen Code einfach das Eigenschaftsmodul für das Originalmodul pug
in NodeJS an. Sie können Pugjs in Fibjs ausführen.
Da ich jedoch nicht alle Versionen von fibjs und pug testen kann, markiere ich die getestete Version von fibjs und pugpackage.json
und würde die Entwicklerversion bemerken, wenn dieses Modul im DEBUG-Modus ausgeführt wird.
API
Ich unterstütze nur einige APIs von pugjs , aber ich glaube, dass das 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.
Probe
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>'