Потрясающий модуль сообщества

выдумщик

pugjs — это один из популярных шаблонизаторов js, ранее известный как «Jade». Он чувствителен к отступам и обладает высокой производительностью. Но в какой-то момент он мог работать только в nodejs (некоторые версии «Jade» могут работать в браузере), потому что point pugjs поддерживают API-интерфейсы, например, renderFileдля которых требуется среда выполнения ввода-вывода.

ввод/вывод

Что касается модуля, к счастью, fibjs имеет аналогичный API с nodejs, мы можем запускать pugjs в fibjs, просто сделайте какой-нибудь волшебный хак с модулем fsfibjs .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>'