fib-carlin
pugjs est un moteur de modèles js populaire anciennement connu sous le nom de "Jade". Il est sensible à l'indentation et offre de hautes performances. Mais à un moment donné, il ne pouvait fonctionner que dans nodejs (certaines versions de "Jade" peuvent s'exécuter dans un navigateur), car à partir de là point pugjs prend en charge les API telles que renderFile
celles qui nécessitent un runtime d'E/S.
E/S
En ce qui concerne fs
le module, heureusement, fibjs a une API similaire à celle de nodejs, nous pouvons exécuter pugjs dans fibjs, il suffit de faire un hack magique avec le sandbox
module de fibjs.
Mécanisme
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)
comme le code ci-dessus, fournissez simplement le module de propriété pour pug
le module d'origine dans nodejs, vous pouvez exécuter pugjs dans fibjs.
Mais je ne peux pas tester toutes les versions de fibjs et pug, donc je marque la version testée de fibjs et pugpackage.json
et remarquerait le développeur si la version lors de l'exécution de ce module en mode DEBUG.
API
Je prends simplement en charge certaines API de pugjs , mais je pense que c'est suffisant pour votre projet dans la plupart des cas.
compile
render
renderFile
affichez les paramètres de cette API dans la page de pugjs .
Échantillon
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>'