本来就没有写博客的习惯,这几天在学习nodejs,对于一些基本的东西记录了下来,以备忘记是查阅。
1.不要使用 setTimeout(fn,0)代替 process.nextTick(callback), 前者比后者效率要低得多
2. util.inherits 实现继承:
var util = require('util'); function Base() { }; function Sub() { }; util.inherits(Sub, Base);
3.无参数的 npm install 的功能就是 检查当前目录下的 package.json,并自动安装所有指定的依赖
4.Express框架中如何引用ejs模板引擎 :
1).express -e microblog;
2).cd microblog && npm install.
3).npm install express-partials
5.启动:
npm start
6.ejs 里,默认的闭合标记是 <% .. %>,我们也可以定义自己的标签:
app.set("view options",{ "open":"{{", "close":"}}" });
7.如果不想每个请求都单独设置一次。可以使用全局设置:
app.set("view options",{ "layout":false });
8.如果不愿意使用默认的layout.ejs,可自行指定:res.render("index",{"title":"test","layout":"main"});
9.如果不愿意使用layout,则可以设置layout为false:res.render("index",{"layout":false});
10.不使用layout:
app.set("view options",{ "layout":false });
11.一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %>,通常的做法有
1).使用 app.locals 来定义
//定义 app.locals.ellipsis = function(str, len) { return str; } //使用 <%= ellipsis(title, 20) %>
2). 使用 ejs.filters
来定义
//定义 var ejs = require('ejs'); ejs.filters.ellipsis = function(str, len) { return str; } // 使用 <%=: title | ellipsis:len %> <%=: '这是一个很长的字符串'| ellipsis:5 %> // 如果 filters 函数只有一个变量参数 <%=: param | ellipsis %>
推荐使用 app.locals.xxx
来定义 helper function
12. 更改ejs模板后缀.ejs为.html
//注册ejs模板为html页。简单的讲,就是原来以.ejs为后缀的模板页,现在的后缀名可以是.html了 app.engine('.html', require('ejs').__express); //设置视图模板的默认后缀名为.html,避免了每次res.Render("xx.html")的尴尬 app.set('view engine', 'html');
13. express的版本3.X的是不默认支持layout.ejs,要使之支持:
1).安装一个插
npm install express-partials
2). app.js代码里面添加这俩行代码即可运行正常
partials=require('express-partials');
app.use(partials());