1 Node的作用和应用
- 脱离浏览器运行JS
- 后台API编写
- 前端工程化的工具webpack、gulp、npm依赖于node
- 负责中间层读写(性能好、异步IO的特性,适合处理高并发的请求;处理数据;安全性)
2 Node的优势
- 便于前端开发入门
- 性能高
- 利于前端代码整合
3 NPM包管理
npm概念:node package managemet,用于管理第三方的插件、模块、库
-
为什么要用npm?
不用npm用的是script引入,不容易管理;
而使用npm,可以用package.json用于管理依赖
-
如何生成package.json?
在当前文件夹 npm init 初始化
-
如何安装第三方的包?
在当前文件夹 npm install(简写 i) 第三方包 安装完后会自动添加到依赖中
-
如何删除第三方的包?
在当前文件夹 npm uninstall(简写 un) 第三方包
-
如何使用cnpm?
npm install -g cnpm --registry=registry.npm.taobao.org,后续和npm使用方法一样
4 Node的模块
-
全局模块
随时随地都能访问,不需要引用process.env (env环境变量)process.argv (打印的命令,加参数等等)
-
系统模块
定义需要require(),但不需要单独下载系统内置
path:用于处理文件路径和目录路径的工具
let path=require('path') path.dirname() path.basename() path.extname()
fs:用于文件读写 fs.readFile() fs.writeFile()
-
自定义模块
require自己封装的模块
- exports
exports.a=1 //在自定义模块里定义
require('./mod') //引入模块,去路径里面找;路径里没有就去node_modules里面找;再去node安装目录里找
- module
批量导出
module.exports=fucnction/class(){}
- require
-
HTTP模块
let http=require('http') http.createServer((request,response)=>{ console.log(req.url) fs.readFile(`./${req.url}`,(err,data)=>{ if(err){ res.writeHead(404) res.end('404 not found') }else{ res.end(data) }}) res.write('index') res.end() }).listen(端口) 复制代码
然后再访问一下这个端口
5 Node中的数据交互
- GET请求(head)
获取数据,数据是放在url里面传输,容量小<32k
let http=require('http')
let url=require('url') //URL模块
http.createServer((req,res)=>{
let {pathname,query}=url.parse(req.url,true)
console.log(pathname,query)
}).listen(端口)
复制代码
<form action="http://localhost:8888/aaa(url)" method="GET">
复制代码
输入表单内容后服务器返回
aaa?username=milo&password=123456
- POST请求(body)
数据是放在body里面传输,容量小<2G
http.createServer((req,res)=>{
let result=[]
req.on('data',buffer=>{
result.push(buffer)
})
req.on('end',()=>{
let data=Buffer.concat(result).toString() //concat连接多个数组
console.log(querystring.parse(data)) //parse将数据转化为json对象,解析
})
console.log(pathname,query)
}).listen(端口)
复制代码
<form action="http://localhost:8888/aaa(url)" method="POST">
复制代码
6 接口
接口概念: 不同功能层间的通信规则
参数:如username、password
返回值:{
err:1,
msg:"密码"
}
7 简单实现登录功能
const http=require('http')
const url=require('url')
const querystring=require('querystring')
let user={
admin:123456
}
http.createServer((req,res)=>{
let path,get,post
if(req.method=='GET'){
let{pathname,query}=url.parse(req.url,true)
path=pathname,
get=query
complete()
}else if(req.method=='POST'){
let result=[]
req.on('data',buffer=>{
result.push(buffer)
})
req.on('end',()=>{
post=querystring.parse(Buffer.concat(result).toString())
})
complete()
}
function complete(){
if(path=='/login'){
let {username,password}=get
if(!user[username]){
res.end(JSON.stringify({
err:1,
msg:"用户名不存在"
}))
}else if(user[username]!=password){
res.end(JSON.stringify({
err:1,
msg:"密码错误"
}))
}else{
res.end(JSON.stringify({
err:0,
msg:"登录成功"
}))
}
}
}
}).listen(8080)