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(字符/数据<string><buffer>) 返回数据
res.end() 结束响应 必须
})
监听服务器
app.listen(端口,[地址],[回调])
监听成功,回调一次
端口: 1-65535 1024以下系统占用
虚拟地址localhost 真实域名xx.duapp.com
更新后,需要每次服务器自动重启
推荐命令行工具:
supervisor
|nodemon
安装方式:
npm install supervisor -g
fs模块
引入fs模块
let fs= require(‘fs’)
磁盘操作,文件操作 ,读取静态资源,读取文件 文件操作的结果都是"异步"的
读取
fs.readFile('文件路径',[编码方式],(err,data)=>{})
例;
fs.readFile("./www/node.html",'utf-8',(err,data)=>{
[^err ]: err 错误 ,null没有错误
[^data]: 数据,buffer流
})
变量 = fs.readFileSync('文件路径')
处理错误
try{
要排错的代码
}catch(e){//e捕捉错误
上边报错将不影响catch的代码执行
}
更名
fs.renameSync('改前','改后');
代码格式;
let result = fs.renameSync("./www/index.html","./www/node.html",(err)=>{console.log(err);
});
删除
fs.unlinkSync('文件路径')
代码格式;
fs.unlinkSync("./www/a.html");
静态资源托管
什么是静态资源
xx.css
xx.html
xx.js
xx.图片
xx.json
xx.字体
…
前端资源请求
<a href=".."></a>
<img src="..."/>
location.href="..."
body{
background:url(....)
}
后端资源读取
fs.readFile(文件名,[编码方式],回调(err,data));
接口实现
前端
表单:get/post/put/delete/…
js: ajax/jsonp
后端
处理方式:http[s]
address: req.url
抓取 get请求的数据 切字符 | url模块
!address: req.on('data',(chunk)=>{CHUNK==每次收到的数据buffer})
req.on('end',()=>{ 接收完毕 切字符 querystring })
url模块
作用
处理 url型的字符串
用法
let url = require('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) 返回字符
obj -> str 返回str
querystring 模块
作用
处理查询字符串 如:?key=value&key2=value2
用法
querystring.parse(str) 返回对象
querystring.stringify(obj) 返回字符串
模块化 commonJS
介绍
是主要为了JS在后端的表现制定,commonJS 是个规范 nodejs / webpack 是一个实现
ECMA 是个规范 js / as 实现了他
其他模块化规范:seajs.js / require.js CMD/AMD/UMD es5
作用
是变量具有文件作用域,不污染全局变量
系统模块
http
fs
querystring
url
输入
require('模块名')
require('模块名').xx 按需引用
不指定路径:先找系统模块-> 再从项目环境找node_modules|bower_components (依赖模块)->not found
指定路径 : 找指定路径 -> not found
支持任何类型
输出
exports.自定义属性1 = 值 | any
exports.自定义属性2 = 值 | any
....
批量输出 都是属性
可输出多次
module.exports = 值 | any
默认输出,只能输出一次
注意
commonJS 是 nodejs 默认模块管理方式,不支持es6的模块化管理方式,但支持所有es6+语法