目录
一.初识nodejs
1.特点
1.单线程:好处 低硬件成本 高效率 充分利用线程资源 操作系统不再有线程创建,销毁的时间开销
坏处 健壮性差一个线程崩溃整个服务就崩溃了
2.非阻塞IO
好处 提高程序的执行效率线程利用率100%
3.事件驱动
"事件环"机制通过回调函数的方式实现事件循环在回调函数执行的时候依旧可以去执行其他的请求事件
2.适合什么应用场景
善于IO不善于计算如果需要大量的计算资源的话就不建议使用node node 善于任务调度。
适合场景:1.用户表单收集 2.长连接的实时交互
不适合场景:无法与老牌的jsp php 抗衡 缺少健壮性考虑
二.node认知
1.node 没有web容器的概念 是通过路由url进行控制的。
三.node 模块
1.url
引入url var url=require("url");
var queryObj=url.parse(req.url,true).query 参数true表示将得到的结果转化为对象
2.express框架
1. 引入静态文件
var express=require("express");
var app = express();
app.use(express.static("static"));//设置静态文件路径
app.use('/static',express.static("static"));//设置静态文件路径这样设置的话就会将static加入url访问路径中
2.express中所有的路由(中间件)的顺序至关重要匹配第一个就不会继续往下匹配了。
解决办法:1.具体的往上写,抽象的往下写。
解决办法:2.检索数据库是否存在
3.app.use可以匹配多个路径
4.get,post方法的使用
3.formidable
1.用于文件的上传和下载以及post请求的处理
4.body-parser
用于处理post请求的body
5.socket.io
用于处理http长连接问题
结合express 使用
首先需要npm安装
npm install socket.io
服务器代码
var express=require("express");
var app=express();
var http=require("http").Server(app);
var io =require("socket.io")(http);
io.on("collection")
http.listen(3000);
客户端代码
//首先需要引包
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket=io();
</script>
四.路径
在模块require引用的时候默认是相对路径 在引用外部文件的时候是要用绝对路径 方法_dirname
五.模板引擎
后台模板引擎(npm第三方包)
1.ejs
2.jade
六.中间件
get,post,use等这些东西就是中间件
如果get、post回调函数中没有next参数那么就匹配上第一个路由,就不会往下匹配了。如果想往下匹配的话,那么就需要些next()例如
app.get("/",function(req,res,next){
console.log("1")
next()
});
app.get("/",function(req,res){
console.log("2")
});