Geweldige gemeenschapsmodule

fib-mopshond

pugjs is een populaire js-sjabloonengine die voorheen bekend stond als 'Jade'. Deze is gevoelig voor inspringen en levert hoge prestaties. Maar op een gegeven moment kon deze alleen in nodejs worden uitgevoerd (een bepaalde versie van 'Jade' kan in de browser worden uitgevoerd), omdat vanaf dat moment point pugjs ondersteunen API's zoals renderFilewaarvoor I/O-runtime vereist is.

IO

Gelukkig heeft fibjs vanaf fsde module een vergelijkbare API met nodejs, we kunnen pugjs in fibjs uitvoeren, doe gewoon een magische hack met de sandboxmodule van fibjs.

Mechanisme

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)

zoals bovenstaande code, geef gewoon de eigenschapsmodule op voor de originele pugmodule in nodejs, je kunt pugjs uitvoeren in fibjs.

Maar ik kan niet alle versies van fibjs en pug testen, dus markeer ik de geteste versie van fibjs en pugpackage.jsonen zou de versie van de ontwikkelaar opmerken wanneer deze module in DEBUG-modus wordt uitgevoerd.

API

Ik ondersteun slechts een aantal API's van pugjs , maar ik geloof dat dit in de meeste gevallen voldoende is voor uw project.

  • compile
  • render
  • renderFile

bekijk de parameters van deze api op de pagina van pugjs .

Steekproef

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>'