一棵树

路漫漫其修远兮 吾将上下而求索。

导航

node.js开发指南读后感

1:
$ npm install -g supervisor修改代码时不必总是重启服务,可以在浏览器刷新看到修改后的改变。用这个启动:$ supervisor app.js 或者supervisor ./bin/www
2:创建和加载模块
2.1:创建模块--一个文件就是一个模块
//getmodule.js
var name;
exports.setName = function(thyName) {
name = thyName;
};
exports.sayHello = function() {
console.log('Hello ' + name);
};
var myModule = require('./module');
在以上示例中,module.js 通过 exports 对象把setName 和 sayHello 作为模块的访问接口,在getmodule.js 中通过 require('./module') 加载这个模块,然后就可以直接访问module.js 中 exports 对象的成员函数了
2.2:单次加载
//loadmodule.js
var hello1 = require('./module');
hello1.setName('BYVoid');
var hello2 = require('./module');
hello2.setName('BYVoid 2');
hello1.sayHello();
运行后发现输出结果是 Hello BYVoid 2,这是因为变量 hello1 和 hello2 指向的是同一个实例,因此 hello1.setName 的结果被hello2.setName 覆盖,最终输出结果是由后者决定的
2.3:把一个对象封装到模块中
//hello.js
function Hello() {
var name;
this.setName = function(thyName) {
name = thyName;
};
this.sayHello = function() {
console.log('Hello ' + name);
};
};
module.exports = Hello;
使用:
var Hello = require('./hello');
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();

3:使用node-inspector 调试Node.js

首先,使用 npm install -g node-inspector 命令安装node-inspector,然后在终端中通过node --debug-brk=5858 你的文件名称.js 命令连接你要除错的脚本的调试服务器,启动node-inspector:(在另一个全局的doc页面中启动)
$ node-inspector   在浏览器中打开http://127.0.0.1:8080/debug?port=5858,即可显示出优雅的Web 调试工具,

4:全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。在浏览器JavaScript 中,通常window 是全局对象,而Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global对象的属性。我们在Node.js 中能够直接访问到对象通常都是 global 的属性,如 console、process 等

5:

Node.js 的异步编程接口习惯是以函数的最后一个参数为回调函数,通常一个函数只有一个回调函数。回调函数是实际参数中第一个是 err,其余的参数是其他返回的内容。如果没有发生错误,err 的值会是 null 或undefined。如果有错误发生,err 通常是 Error 对象的实例

6:express 架构

7:路径匹配
app.get('/user/:username', function(req, res) {
res.send('user: ' + req.params.username);
});
访问http://localhost:3000/user/byvoid 路径规则/user/:username 会被自动编译为正则表达式,类似于 \/user\/([^\/]+)\/? 这样的形式

8:模板

我们用 res.render('index', { title: 'Express' }); 调用模板引擎它接受两个参数,第一个是模板的名称,即views 目录下的模板文件名,不包含文件的扩展名;第二个参数是传递给模板的数据,用于模板翻译
ejs 的标签系统非常简单,它只有以下3种标签。1:<% code %>:JavaScript 代码 2:<%= code %>:显示替换过HTML 特殊字符的内容 3:<%- code %>:显示原始HTML 内容

使页面不用layout.ejs:app.set('view options', { layout: false});
如果一个网站有好几个页面布局 则可以指定页面布局:
function(req, res) { res.render('userlist', { title: '用户列表管理系统', layout: 'admin' }); };

9:片段视图

Express 的视图系统还支持片段视图 (partials),它就是一个页面的片段,通常是重复的
内容,用于迭代显示。通过它你可以将相对独立的页面块分割出去,而且可以避免显式地使
用 for 循环。让我们看一个例子,在app.js 中新增以下内容:
app.get('/list', function(req, res) {
res.render('list', {
title: 'List',
items: [1991, 'byvoid', 'express', 'Node.js']
});
});
在views 目录下新建list.ejs,内容是:<ul><%- partial('listitem', items) %></ul>
同时新建listitem.ejs,内容是:
<li><%= listitem %></li>
访问http://localhost:3000/list,可以在源代码中看到以下内容:
<!DOCTYPE html>
<html>
<head>
<title>List</title>
<linkrel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<ul><li>1991</li><li>byvoid</li><li>express</li><li>Node.js</li></ul>
</body>
</html>
partial 是一个可以在视图中使用函数,它接受两个参数,第一个是片段视图的名称,第二个可以是一个对象或一个数组,如果是一个对象,那么片段视图中上下文变量引用的就是这个对象;如果是一个数组,那么其中每个元素依次被迭代应用到片段视图。片段视图中上下文变量名就是视图文件名,例如上面的'listitem'。

posted on 2014-12-04 18:32  nxp  阅读(110)  评论(0)    收藏  举报