node篇:

1. 应用场景:

1.1 实际应用:webpack/gulp/npm/http-server/json-server。

1.2 服务器中负责IO读写的中间层服务器(天猫中间层IO服务器)。

2. 下载node:中文官网:http://nodejs.cn/,下载,配置环境变量。

查看node版本:node -v。

运行js文件:node ./xx.js。

3. node分类:

3.1 全局对象:如process(如:process.env环境变量,process.argv命令行参数),__dirname(当前文件夹(目录)绝对路径),__filename(当前文件绝对路径)。

3.2 核心对象:引入即可(如fs,path)。

const path=require("path"); 
const myP=path.join(__dirname,"a","b","c.txt"); //拼接目录绝对路径 
let myP1=path.parse(myP); //解析绝对路径为对象 
myP1.base='c.py'; //修改文件名以及后缀 
path.format(myP1); //将对象转为绝对路径字符串地址 
path.resovle("./xxxx"); //相对路径转绝对路径 
const fs=require("fs"); 
fs.readFile('./1.txt','utf8',(err,data)=>{ 
    if(err) throw err;// 抛出到控制台显示异常信息 console.log(data); //如果有设置'utf8',则返回        
    utf8格式,如果没有, //则返回buffer,data.toString('utf8')转换为utf8格式。 
}) 
//flag:'a' 是追加写入 
fs.writeFile('./2.txt','我是写入内容',{flag:'a'},(err,data)=>{ 
    if(err) throw err; // 如果写入文件层级太深,会报错 //写入成功,没有就创建,有就覆盖写入 
}) 
fs.appendFile('./2.txt','我是追加写入内容',(err,data)=>{ 
    if(err) throw err; // 如果写入文件层级太深,会报错 //写入成功,没有就创建,有就覆盖写入 
})

3.3 自定义对象:按照路径引入即可。

4. node实现规范:

4.1 Common.js规范:规范javascript作为后端语言运行的标准。用module定义模块,一个文件即一个模块。定义/导出模块:module.exports,引用依赖:require。

 

同步/异步:同步阻塞后面代码的执行

 

5. npm常用指令:

npm init:初始化pageage.json 

npm install 包名:下载包,-D(--save-dev) 下载开发环境使用的包,-S(--save) 下载生产环境使用的包。@1.1.0下载指定版本的包。-g 全局安装。 

npm uninstall 包名:卸载包。 

npm info 包名:查看包的详细信息。 

npm list:查看安装了哪些包。 

npm root -g:查看全局安装包的位置。 

npm ls 包名:查看当前安装包的版本。 

npm config set registry https://registry.npm.taobao.org : 更改npm下载的镜像环境 

npm config set prefix "D://xxx":修改npm(不带node_modules)存储目录,同步 需要修改环境变量。

6. nrm是用来管理npm镜像源的:

npm install -g nrm:全局安装 
nrm ls:查看npm镜像源。
 * npm -------- https://registry.npmjs.org/ 
  yarn ------- https://registry.yarnpkg.com/ 
  cnpm ------- http://r.cnpmjs.org/ 
  taobao ----- https://registry.npm.taobao.org/ 
  nj --------- https://registry.nodejitsu.com/ 
  npmMirror -- https://skimdb.npmjs.com/registry/ 
  edunpm ----- http://registry.enpmjs.org/ 
  nrm use taobao:使用切换淘宝源。 
  nrm add registry http://registry.npm.frp.trmap.cn/:添加源 
  nrm del <registry>:删除源。 
  nrm test npm:在切换不同源下,测试响应时间。

7. nvm是管理node版本的:

1. 下载nvm: 直接进入安装包下载地址: https://github.com/coreybutler/nvm-windows/releases, 选择nvm-setup.zip,下载后直接安装。配置nvm环境变量。 

2. nvm -v:查看版本。

3. nvm install/uninstall node@11.2.0:下载/卸载node版本。 

4. nvm use 11.2.0:切换node版本。 

5. nvm on/off:打开/关闭nvm。

 

8. 包的加载机制:require.resolve('jquery')查看包引入的地址。逐级向上查找node_module,要么pageage.json中的main属性,要么index.js。

 

 

9. http超文本传输协议:请求与响应交互过程。先有请求,后有响应。无连接(不为每一个请求保持住链接)。无状态(服务器不记住客服端是谁)。

9.1 主体对象:

(1)服务器对象:http.createServer();

(2)客服端对象:http.request({host:"http://www.baidu.com"});

(3)请求对象:req;

(4)响应对象:res;
const http = require("http");
let server = http.createServer();  //创建服务器
server.on("request", (req, res) => {
    res.writeHead(200,{"content-type":'text/html;charset=utf-8'});//一次写
    res.on("data",(data)=>{
        console.log(data.toString()); //服务端请求过来的参数信息
    })
    res.end("http服务器启动了")
})
server.listen(8081, () => {
    console.log("8081启动了")
});

9.2 状态码:

(1)1开头,正在进行中。

(2)2开头,完成。

(3)3开头,重定向。

(4)4开头,客户端异常。

(5)5开头,服务端异常。