使用Node.js 编写你的第一个程序 ddw.js。
简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
var http =require('http');
http.createServer(function (request,response){
// request客户端发送过来的请求
// response 服务器端响应
response.end("ddw nice shuai");
}).listen(8000);
console.log("server start! http://local:8000");
// 从cmd cd到目录然后运行 node ddw.js
Express是nodejs的一个web框架。
npm install express
express
App.js是用来启动应用程序的文件夹。包含应用程序的配置信息。
Node_modules保存在package.json中定义并且安装的Node模块
Package.json提供应用程序的信息,包括运行应用程序安装的依赖模块。
Routs定义应用程序应该相应的页面。比如应用程序“关于”页面就有“about“的路由。路由文件保存了这些定义。
如果没有没有about的路由 输入localhost:3000/about 会返回404。
在加载web页面,浏览器是使用Get请求来来获取CSS,HTML,JS。在提交表单时使用POST请求。
指定简单的GET请求
router.post('/',function(req,res){
res.send(req.body)
})
指定简单的POST路由
// js 端
app.get('/about',function(req,res){
res.send('hello from routes');
});
// html 端
req.params.xxxxx 从path中的变量
req.query.xxxxx 从get中的?xxxx=中
req.body.xxxxx 从post中的变量 // req.body.password
req.query与req.params的区别
req.params包含路由参数(在URL的路径部分),而req.query包含URL的查询参数(在URL的?后的参数)。
更好理解三者的区别 传送门http://cnodejs.org/topic/50a333d7637ffa4155c62ddb
在res.render函数中,本地变量的使用是要掌握的关键所在。使用本地变量可以设置要在视图层展示的数据,将数据传递到视图层。
在程序发送响应之前,通常在别的地方设置数据,获取数据。
html
$.get("/user",
function(data){
console.log(data)
if(data.status==1){
alert("success");
}else{
alert("wrong");
}
});
js
router.get('/user',function(req,res){
var data={
name:'ddw',
facebook:'niceshuai',
phone:'213213213'
};
data.status=1
res.send(data);
})
Node的特点
Node保持了JavaScript单线程的特点。单线程的最大好处是不用像多线程编程那样处处在意状态的同步状态,这里没有死锁的存在,也没有线程上线文交换带来性能上的开销。
单线程弱点
无法利用多核cpu
错误会引起整个应用的退出,应用的健壮性值得考验。
大量计算占用CPU导致无法继续调用异步IO。
模块定义
在Node中一个文件就是一个模块,将方法挂载在exports对象上作为属性即可定义导出的方式。
//math.js
module.exports.add = function (){
var sum = 0,
i = 0,
args = arguments,
l = args.length;
while (i < l){
sum += args[i++];
}
return sum;
}
在另一个文件中引入就可以调用属性和方法了。
var math = require('./math.js');
function d(val){
return math.add(val,1);
}