node周总结

理论知识点:

  • nodejs包管理器npm yarn cnpm的区别
  1. 依赖安装:npm是npm i;yarn是yarn add;cnpm是cnpm i
  2. 安装顺序:npm是一个依赖接一个依赖进行安装。yarn是并行安装。
  3. 安装信息:npm安装信息全部打印出来。yarn安装信息是以emoji表情包展示出来
  4. 再次安装:npm安装过的依赖再次安装会重新下载,yarn安装过的依赖再次安装不会重新下载。

注:cnpm是npm的镜像,实际项目不推荐使用。原因:会产生过多依赖文件,当依赖过大、比较吃网络的情况下可以使用cnpm

  • BSON是由mongodb开发饿一个数据格式,跟JSON相比优点在于实现目标
  1. 更快的遍历速度
  2. 操作更简单
  3. 增加了额外的数据类型
  • 关系型数据库的优点
  1. 容易理解
  2. 使用方便
  3. 易于维护

  • node由c++语言编写
  • node的全局对象
  1. process
  2. console
  3. Buffer
  4. exports
  • node的http核心模块提供的方法有:request、get、createServer

       http协议的端口是80

      https协议的端口是443

  • node提供的内置模块对象有:net、http、events、fs、url、querystring
  • stream是一个基于事件EventEmitter的数据管理模式。
  • nodejs项目上传图片需要借助的模块对象为-----multiparty
  • fs中判断文件是否为文件类型的方法------isfile
  • url模块提供的用来解析一个url地址的而方法-----url.parse()
  • net模块提供的创建客户端对象的方法--------------new  net.Socket()

 


  • express   response常用的方法有:res.end(),res.send(),res.redirect()
  • express 是一个基于nodejs平台的极简、灵活的web前端应用开发框架,express不是对nodejs已有特征的二次抽象,它完全是由路由和中间件组成。express框架核心特征定义了路由表用于执行不同的HTTP请求动作,也提供了任意排列组合的Connect中间件。express中的每个路由都算一个中间件,express中间件可以访问request对象。express要全局安装express才能使用。
  • 结束请求--响应流程的中间件称为------句柄函数。
  • Express使用脚手架创建项目指令是:express -e
  • ejs用来解析带有html标签数据的流程标签是 <%  %>

  • async模块提供的方法有:series、map、waterfall、filter
  • webSocket不属于nodejs,它是一个前端H5的通信协议。
  • websocket对象一旦创建连接,立马会触发的事件是onopen
  • mocha中chai断言库的断言风格:expect     should      assert

 

 

 

 

 

实战代码实现:

  • 分页效果
//分页效果,后端代码实现
router.get('/article', function(req, res){
	var  pageNum = req.query.pageNum;
	pageNum = pageNum?pageNum:1;
	var page = 0;
	var size =7;
	var count = 0;
	mongodb.connect(db_str,(err,database)=>{
		database.collection("article",(err,coll)=>{	
			async.series([
				function(callback){
					coll.find({}).toArray((err,data)=>{
						count = data.length;
						page = Math.ceil(count/size)
//						上一页/下一页
						pageNum=pageNum<1?1:pageNum;
						pageNum= pageNum>page?page:pageNum;
						callback(null,"")
					})
				},
				function(callback){
					coll.find({}).sort({_id:-1}).limit(size).skip((pageNum-1)*size).toArray((err,data)=>{
						callback(null,data)
					})
				}
			],function(err,data){
				 res.render("article",{name:req.session.name,list:data[1],pageNum:pageNum,page:page,count:count,size:size})
				 database.close()
			})
		})
	}) 
});

前端的话,通过?query传参。

  • express路由
//express路由级路由
var  express = require("express");
//通过express路由级别路由创建后台服务器环境
var  app =express()

//创建路由对象
var router = express.Router();

router.get("/",(req,res)=>{
	res.send("hello")
})
router.get("/about",(req,res)=>{
	res.send("hello关于")
})
router.get("/other",(req,res)=>{
	res.send("hello其他")
})
app.use("/home",router)
//监听
app.listen(3000)
//express应用级别路由
var  express = require("express")

var app = express();
//相当于http.createServer()

app.get("/",(req,res)=>{
	res.send("hello---index")
})
app.get("/home",(req,res)=>{
	res.send("hello---home")
})
app.get("/about",(req,res)=>{
	res.send("hello---about")
})

app.listen(3000)
  • 销毁express-session方法
//方法一
req.session.username = undefined

//方法二
req.session.destroy((err,data)=>{
	if(err){
		console.log(err)
	}else{
		res.redirect("/")
	}
})
  • 将图片上传服务器
var http=require('http');
var fs=require('fs')

http.createServer((req,res)=>{
	res.writeHead(200,{'content-type':'image/jpg'})
	if(req.url!='/favicon.ico'){
		
		fs.readFile('./a.jpg','binary',(err,data)=>{
			res.write(data,'binary')
			res.end()
		})
		
	}
}).listen(3000)
  • mocha功能测试的核心代码
var expect = require("chai").expect;

describe("功能测试",function(){
    it("",function(done){
		var x = true;
		var f=function(){
			x=false;
			expect(x).to.be.not.ok;
			done();
		}
		setTimeout(f,4000);
	})
	
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值