выдумщик
pugjs — это один из популярных шаблонизаторов js, ранее известный как «Jade». Он чувствителен к отступам и обладает высокой производительностью. Но в какой-то момент он мог работать только в nodejs (некоторые версии «Jade» могут работать в браузере), потому что point pugjs поддерживают API-интерфейсы, например, renderFile
для которых требуется среда выполнения ввода-вывода.
ввод/вывод
Что касается модуля, к счастью, fibjs имеет аналогичный API с nodejs, мы можем запускать pugjs в fibjs, просто сделайте какой-нибудь волшебный хак с модулем fs
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, вы можете запускать pugjs в fibjs.
Но я не могу протестировать все версии fibjs и pug, поэтому я отмечаю проверенную версию fibjs и pug вpackage.json
и заметит разработчика, если версия при запуске этого модуля в режиме DEBUG.
API
Я просто поддерживаю некоторые API pugjs , но я считаю, что в большинстве случаев этого достаточно для вашего проекта.
compile
render
renderFile
просмотрите параметры этого API на странице pugjs .
Образец
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>'