关于Node
模块化开发
- 导出导入
- 两种导出方式的区别
// 当exports对象和moudle.exports对象指向的不是同一个对象时 以module.exports为准
系统模块
- fs系统模块(fs.reaFile fs.writeFile)
- path拼接
- 相对路径和绝对路径
第三方模块
- nodemon
- nrm
- Gulp(方法 插件)
package.json(作用)
Node.js模块的加载机制
- 有路径无后缀
- 无路径无后缀
服务端的基础概念
- 网站组成
10.URL组成
创建WEB服务器
Http协议
- http的概念
- 请求报文
- 响应报文
Http请求与响应处理
- GET
- POST
- 路由
- 静态资源和动态资源
Node.js异步编程
- 同步异步API
- 回调函数
- 顺序分析
- Promise
- async关键字
- await关键字
const fs = require('fs');
// fs.readFile('./1.txt', 'utf8', (err, result1) => {
// console.log(result1)
// fs.readFile('./2.txt', 'utf8', (err, result2) => {
// console.log(result2)
// fs.readFile('./3.txt', 'utf8', (err, result3) => {
// console.log(result3)
// })
// })
// });
function p1 () {
return new Promise ((resolve, reject) => {
fs.readFile('./1.txt', 'utf8', (err, result) => {
resolve(result)
})
});
}
function p2 () {
return new Promise ((resolve, reject) => {
fs.readFile('./2.txt', 'utf8', (err, result) => {
resolve(result)
})
});
}
function p3 () {
return new Promise ((resolve, reject) => {
fs.readFile('./3.txt', 'utf8', (err, result) => {
resolve(result)
})
});
}
p1().then((r1)=> {
console.log(r1);
return p2();
})
.then((r2)=> {
console.log(r2);
return p3();
})
.then((r3) => {
console.log(r3)
})
const fs = require('fs');
// 改造现有异步函数api 让其返回promise对象 从而支持异步函数语法
const promisify = require('util').promisify;
// 调用promisify方法改造现有异步API 让其返回promise对象
const readFile = promisify(fs.readFile);
async function run () {
let r1 = await readFile('./1.txt', 'utf8')
let r2 = await readFile('./2.txt', 'utf8')
let r3 = await readFile('./3.txt', 'utf8')
console.log(r1)
console.log(r2)
console.log(r3)
}
run();