我安装了玉(npm安装玉器),并转到他们的
github页面来抓住一些例子.这就是我要执行的:
code.jade:
- - var title = "Things"
- h1= title
- ul#users
- - each user,name in users
- - if (user.isA == "ferret")
- li(class: 'user-' + name) #{name} is just a ferret
- - else
- li(class: 'user-' + name) #{name} #{user.email}
code.js:
- var jade = require('jade');
- var options = {
- locals: {
- users: {
- tj: { age: 23,email: 'tj@vision-media.ca',isA: 'human' },tobi: { age: 1,email: 'tobi@is-amazing.com',isA: 'ferret' }
- }
- }
- };
- console.log(jade)
- jade.renderFile('code.jade',options,function(err,html){
- if (err) throw err;
- console.log(html);
- });
我将这些文件保存在自己的文件夹中,cd’d我的方式,并执行“node code.js”.然而,节点抛出一个错误,并说,Jade没有方法“renderFile”!你能告诉我我做错了什么,我该怎么办来解决它?
完整的错误信息:
- node.js:134
- throw e; // process.nextTick error,or 'error' event on first tick
- ^
- TypeError: Object #<Object> has no method 'renderFile'
- at Object.<anonymous> (/home/yann/javascript/jade/code.js:18:6)
- at Module._compile (module.js:402:26)
- at Object..js (module.js:408:10)
- at Module.load (module.js:334:31)
- at Function._load (module.js:293:12)
- at Array.<anonymous> (module.js:421:10)
- at EventEmitter._tickCallback (node.js:126:26)
解决方法
看起来像较新版本的Jade使用不同的API,没有更多的“renderFile”方法.看看这里的“公共API”部分:
https://github.com/visionmedia/jade
这样的事情可能是你想要的.只要记住你只需要读一次文件.如果您正在动态进行,请确保不要同步阅读.
- var jade = require('jade');
- var fs = require('fs');
- var jadetemplate = jade.compile(fs.readFileSync('code.jade','utf8'));
- var html = jadetemplate({
- users: {
- tj: { age: 23,isA: 'ferret' }
- }
- });
- console.log(html);
更新