nodejs介绍
nodejs是一个后台管理的程序,类似于php .net java 。
环境安装
版本
- Vx(主).x(子).x(修正)
主版本: 变化了,1/3的API发生巨变 , 使用方式变化了
子版本: API没有删减,使用方式没变化,内部实现发生了变化
修正版:什么都没变,处理一下bug
V6.8.0 稳定
V6.9.1 非稳定版 不建议下载
beta 测试
rc 、alpha测试稳定
运行
window
-
找到目标目录-》地址栏输入cmd-》node 文件名.js | node 文件名
-
当前目录->右键->git bash-> node 文件名
苹果
- 终端->cd 目录-> node 文件名.js | node 文件名
vscode
- 新建终端->cd 目录->node 文件名.js | node 文件名
webstrom
- terminal| run
注意
nodejs
使用的是ECMA
语法,不可使用DOM
,BOM
实现
引入http模块
- let http = require(‘http’)
创建web服务 返回http对象
- let app = http.createServer((req,res)=>{
req 请求体 浏览器->服务器
req.url 地址 提取地址栏数据
req.on(‘data’) 提取非地址栏数据 所有的http[s]都会触发end事件
req.on(‘end’)
res 响应 服务器->浏览器
res.writeHead(200,{‘Content-Type’:‘text/html;charset=utf-8’});响应头设置
res.write(字符/数据) 返回数据
res.end() 结束响应 必须
})
监听服务器
- app.listen(端口,[地址],[回调])
监听成功,回调一次
端口: 1-65535 1024以下系统占用
虚拟地址localhost 真实域名xx.duapp.com
更新后,需要每次服务器自动重启
推荐命令行工具:
supervisor
nodemon
安装方式:
npm install supervisor -g
fs模块
磁盘操作,文件操作
读取
-
fs.readFile(‘文件路径’,[编码方式],(err,data)=>{})
-
err : err 错误 ,null没有错误
data: 数据,buffer流 -
变量 = fs.readFileSync(‘文件路径’)
处理错误
- try{要排错的代码}catch(e){}
更名
- fs.renameSync(‘修改前’,‘修改后’);
删除
- fs.unlinkSync(‘文件路径’) 同步,不可删除目录
- fs.unlinkSync(‘文件路径’) 异步,不可删除目录
- fs.rmdir(‘文件路径’,回调函数) 可删除目录
静态资源托管
后端资源读取
- fs.readFile(文件名,[编码方式],回调(err,data));
接口实现
前端
表单:get/post/put/delete/…
js: ajax/jsonp
后端
处理方式:http[s]
req.url
抓取 get请求的数据 切字符 | url模块
req.on('data',(chunk)=>{CHUNK==每次收到的数据buffer})
req.on('end',()=>{ 接收完毕 切字符 querystring })
postman 一个不用写前端,就可以发出各种请求的软件 ,安装包提取地址
链接:https://pan.baidu.com/s/1UmeUhduxGLrWrQMWOv_pog
提取码:27ml
url模块
作用
处理 url型的字符串
用法
url.parse(str,true) 返回 对象 true表示把query处理为对象
str -> obj 返回 对象 true
protocol: ‘http:’, 协议
slashes: true, 双斜杠
auth: null, 作者
host: ‘localhost:8002’, 主机
port: ‘8002’, 端口
hostname: ‘localhost’, baidu
hash: ‘#title’, 哈希(锚)
search: ‘?username=sdfsdf&content=234234’, 查询字符串
query: ‘username=sdfsdf&content=234234’, 数据
pathname: ‘/aaa’, 文件路径
path: ‘/aaa?username=sdfsdf&content=234234’, 文件路径
href: ‘http://localhost:8002/aaa?username=sdfsdf&content=234234#title’
url.format(obj) 返回字符
querystring 模块
作用
处理查询字符串 如:?key=value&key2=value2
用法
-
querystring.parse(str) 返回对象
-
querystring.stringify(obj) 返回字符串
家中逆战,无畏疫情,武汉加油,中国加油,人类必胜!!!