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