Nodejs开发指南阅读笔记

第一章 Node.js简介          第二章 安装和配置Node.js
1、Node.js是一个让Javascript运行在服务端的开发平台。
2、Node.js中所谓的Javascript只是Core Javascript.不包含DOM、BOM或者ClientJavascript。
3、Node.js的Javascript引擎V8,是号称世界上最快的Javascript引擎。它的JIT(Just-in-time compilation即时编译)执行速度接近本地。
4、Node.js内建了HTTP服务器支持。
5、Node.js最大的特点是采用 异步式I/O与事件驱动的架构设计。
6、RingoJS基于Rhino实现类似服务端Javascript平台。CouchDB,MongoDB新型非关系型数据库。ECMAScript浏览器端Javascript规范,CommonJS规范是服务器端Javascript规范。
第三章 Node.js快速入门
1、node script.js node -e 'console.log("hello world");'要执行的语句作为node -e参数
2、REPL(Read-eval-print loop)模式即输入-求职-输出循环 ctrl+c 两次退出
3、npm install -g supervisor,supervisor可以帮助你实现监视你的代码改动,自动重启nodejs。
4、线程在执行中如果遇到磁盘读写或网络通信(统称I/O操作),通常要耗费较长时间,这时操作系统会剥夺这个线程的CPu控制权,使其暂停执行,同时将资源让给其他工作线程,这种线程调用方式称为阻塞
异步式I/O或非阻塞式I/O则针对所有I/O操作不采用阻塞的策略。遇到I/O操作时,不阻塞,而是将请求发送到操作系统,继续执行下一条语句。当系统完成I/O操作时,以事件的形式通知执行I/O操作的线程,线程会在特定时间处理这个事件。
5、

var http = require('http'); http.createServer(function(require, response) { response.writeHead(200, {'Content-Type': 'text/html'}); response.write('<h1>Node.js</h1>'); response.end('<p>Hello </p>'); }).listen(80);

6、

var fs = require('fs'); fs.readFile('file.txt', 'utf-8', function(err, data){ if(err) { console.log(err); }else{ console.log(data); } });

var fs = require('fs'); var data = fs.readFileSync('file.txt', 'utf-8'); console.log(data); console.log'end');

7、Node.js所有的操作完成时都会发送一个事件到事件队列。在开发者看来,事件由EventEmitter对象提供。
8、模块。

//module.js exports.sayHello = function() { console.log('hello'); }

function sayhi() {} module.exports = sayhi; //getmodule.js var myModule = require('./module'); myModule.sayHello();

9、
Nodejs开发指南阅读笔记 - freestyle - freestyle21的博客
 10、作为文件夹的模块。

//package/index.js exports.hello = function(){ console.log('hello.'); } //getpackage.js var SomePackage = require('./package'); SomePackage.hello();

11、
Nodejs开发指南阅读笔记 - freestyle - freestyle21的博客
 12、npm link命令可以打破全局模式安装的包不能直接通过require使用这个限制。
npm install -g express 后在工程的目录下运行命令:npm link express就可以把他当成本地包使用了。
13、包的发布:npm adduser创建账号。npm whoami测试是否取得账号。然后使用npm publish就发发布了。打开search.npmjs.org可以找到刚刚发布的包。
14、执行node debug debug.js启动调试工具。n 单步执行   c 直到遇到下一个断点  s 单步并进入函数。
15、npm install -g mode-inspector安装node-inspector,node --debug-brk=5858 debug.js 
然后在启动node-inspector:node-inspector。 在浏览器中打开local:8080/debug?port=5858就可以看到web调试工具。 

第四章 Node.js核心模块
1、在浏览器Javascript中,window是全局对象;Node.js中,全局对象时global。console,process等都是global的属性。
2、process是一个全局变量,即global对象的属性,描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。
process.argv是命令行参数数组,日一个元素是node,第二个是脚本文件名,从第三个元素开始每个元素是一个运行参数。
process.stdout标准输出流,console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口。
process.stdin是标准输入流,初始时被暂停,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
process.nextTick(callback)为事件循环设置一项任务,Node.js会在下次事件循环响应时调用callback。
3、util.inherits(Sub, Base);//一个实现对象间原型继承的函数
util.inspect(person );将任意对象转换成字符串的方法。
4、events模块只提供一个对象:events.EventEmitter。
EventEmitter.on(event, listener); EventEmitter.emit(event, [arg1], [..])
EventEmitter.once(event, listener) EventEmitter.removeListener(event, listener) EventEmitter.removeAllListeners([event]);
5、fs.readFile  js.readFileSync fs.open fs.read();//比fs.readFile提供更底层的接口
6、http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层C++部分实现。接口由Javascript封装。
提供以下几个事件:request,connection,close
http.ServerRequest是HTTP请求信息,三个事件:data,end,close. 简称request或req。
7、获取GET请求内容。由于GET请求直接嵌入到路径中,URL是完整的请求路径,包括?后面部分。因此可以手动解析后面的内容作为GET请求的参数。res.end(util.inspect(url.parse(req.url,true)));
获取POST请求内容:Node.js默认不会解析请求体的,需要的时候,手动解析。
var post = '';   req.on('data', function(chunk) {post += chunk;});  post = querystring.parse(post);
8、http.ServerResponse三个重要成员函数:response.writeHead(statusCode,[headers]);
response.write(data,[encoding]) response.end([data], [encoding]);
8、HTTP客服端。http.request, http.get 是http模块提供的作为客服端向HTTP服务器发起请求。
http.ClientRequest 是由http.request或http.get返回产生的对象,表示一个已经产生而且正在进行中的HTTP请求。
http.ClientRequset像http.ServerResponse一样提供了write和end函数,用于想服务器发送请求体,结束一定要用end。
http.ClientResponse与http.ServerRequest相似,提供data,end,close三个事件。

第五章  使用Node.js进行web开发
1、安装npm install -g express.建立工程: express -t ejs microblog.(在这之前可以express -e,安装ejs) cd microblog ; npm install
2、

//test.js var express = require('express') ... var app = express();

app.configure(function(){ app.set('port', process.env.PORT || 3000);

app.use(express.bodyParser()); ... }); app.get('/', routes.index);//express的REST风格路由控制。Representational State Transfer表征状态转移 ... http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); });

//Express模板的index.js类型。

//router.js

exports.hello = function(req, res) { res.send('The time is ' + new Date().toString()); };

3、当你当问任何被两条同样的规则匹配到的路径时,会发现请求总是被前一条路由规则捕获,后面的规则会被忽略。原因是express在处理路由规则时,会优先匹配先定义的路由规则,后面的相同的规则被屏蔽。
4、使用模板引擎、app.set('views, _dirname + '/views');  app.set('view engine', 'ejs');
res.render('index', { title: 'Express' });

//index.ejs

<h1><%= title %></h1>

<p>welcome to <%= title %></p>

5、片段视图。
在express 3.x Partial被移除了,用include代替。如:

//list.ejs

<body> <% include listitem %> </body>

//listitem.ejs

<ul><li>hao</li></ul>

6、Express提供了一个叫做“视图助手”的工具,它的功能是允许在视图中访问一个全局的函数或对象,不用每次调用视图解析时都单独传入。前面的partial就是一个视图助手。
分为静态视图助手和动态视图助手。差别在于静态可以使任何类型对象,包括任意参数函数,但访问到的对象必须是与用户请求无关的。
动态视图助手只能是一个函数,这个函数不能接受参数,但可以访问req和res对象。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值