Nodejs作为服务端Javascript。它的最大特点是采用异步式I/O与事件驱动的架构设计。对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式I/O调用时的时间开销。Node.js使用的是单线程模型,对于所有I/O都采用异步式的请求方式,避免频繁的上下文切换
下载地址:http://nodejs.org/download/
学习教程: ? Nodejs开发指南
以下以mac为例,下载Mac版的pkg,然后进行安装。
例1.简单应用
创建一个js,并用node运行它。helloworld.js内容为console.log("Hello World");
然后运行helloworld.js,命令如下:node helloworld.js
?
例2.web应用
创建一个server.js文件,内容为:
var http = require("http");
http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("Hello World");
response.end();}).listen(8888);
然后启动服务:node server.js
?
例3.同步和异步读文件
bteki-MacBook-Pro:nodeFile b$ node readfile.js?
end.
This is good girl.so you must...
?
bteki-MacBook-Pro:nodeFile b$ vi readfilesync.js
bteki-MacBook-Pro:nodeFile b$ cat readfile.js?
var fs = require('fs');
fs.readFile('file.txt','utf-8',function(err,data){
if(err){
?console.error(err);
}else{
?console.log(data);
}
});
console.log('end.');
bteki-MacBook-Pro:nodeFile b$ node readfilesync.js?
This is good girl.so you must...
?
end.
bteki-MacBook-Pro:nodeFile b$ cat readfilesync.js?
var fs=require('fs');
var data=fs.readFileSync('file.txt','utf-8');
console.log(data);
console.log('end.');
=========================================================
1、由于nodejs是单线程,当主线程异常时,会导致整个进程挂掉。forever可以解决该问题,它
将确保永远运行。线程死亡时,会自动重启。
?
$ sudo npm install forever -g #安装
$ forever start app.js #启动
$ forever stop app.js #关闭
$ forever start -l forever.log -o out.log -e err.log app.js #输出日志和错误
相关网站:
https://github.com/nodejitsu/forever
http://www.bishen.org/content/25925993071
启动时报异常:
?
[root@test pushserver]# forever start -l forever.log -o out.log -e err.log debug.js
info: ? ?Forever processing file: debug.js
error: ? Cannot start forever
error: ? log file /root/.forever/forever.log exists. Use the -a or --append option to append log.
?
解决方法:
?
[root@test pushserver]# forever start -a -l forever.log -o out.log -e err.log debug.js
?
?
==============以下为Node.js开发指南学习======================
第三章 模块和包
1、Node.js提供了exports和require两个对象,其中exports是模块公开接口,require用于从外部
获取一个模块的接口,即获取模块的exports对象。
例:
?
bteki-MacBook-Pro:nodeFile b$ cat module.js?
?
var name;
?
exports.setName=function(theName){
?
name=theName;
?
};
?
?
?
exports.sayHello=function(){
?
console.log('Hello '+name);
?
};
?
bteki-MacBook-Pro:nodeFile b$ cat getmodule.js?
?
var myModule=require('./module');
?
myModule.setName('Dwen');
?
myModule.sayHello();
?
bteki-MacBook-Pro:nodeFile b$ node getmodule.js?
?
Hello Dwen
?
?第五章 使用Node.js进行web开发
1、安装Express框架
参考:http://www.zikercn.com/node/11
在安装时碰到以下问题:
解决方法把用户切到root再进行安装就解决了。
切换root用户命令为:sudo su
然后输入密码就可以了。
?
?