今天重点就是两个章节: 第三方包加强 和 express 入门。

1. 第三方包加强

​ 本章节主要讲解 package.json 文件的作用,安装和卸载所有包,解决下载包慢的问题,全局命令包安装,开发自己的第三方包并发布,模块加载机制......

1.1 package.json 文件的作用

​ 有很多,属性一一介绍:

  • "name": "code", 项目名称
  • "version": "1.0.0", 项目版本号
  • "description": "", 项目描述
  • "main": "01.test.js", 项目入口文件(别人导入这个项目,立即执行那个js文件)
  • "scripts": 项目脚本命令优化
  • "keywords": [], 项目关键字,搜索包的时候使用
  • "author": "", 项目作者
  • "license": "ISC", 项目开源协议
  • "dependencies": 项目依赖包
  • "devDependencies": 开发依赖包

1.2 安装和卸载所有包

安装包:

npm i 包名@版本号             安装项目依赖,指定版本的包 --save || -S // 运行依赖(发布)
npm i 包名@版本号 -D           安装开发依赖,指定版本的包 –-save-dev || -D // 开发依赖(辅助)
npm i                         安装 项目和开发 依赖包(开发过程中拿到项目后)
npm i --production            只安装所有项目依赖,开发依赖就不安装了(发布)

卸载包:

npm uni 包名                   卸载包

1.3 解决下载包慢的问题

​ npm下载包慢,是因为镜像源(下载地址)是国外网站,改变镜像源为国内网站即可提高下载速度。方式有两种,第一种是命令修改,第二种是第三方包修改。

​ 第一种命令修改:

# 获取
npm config get registry
# 修改
npm config set registry=https://registry.npm.taobao.org/
# 获取
npm config get registry

​ 第二种是第三方包修改:

# 全局安装第三方包
npm i nrm -g
# 查看
nrm ls
# 修改
nrm use taobao
# 查看
nrm ls

1.4 全局命令包安装

​ 项目包和全局包(命令包),项目包偏向于功能,全局包一般安装的是工具,安装后会多出一条命令。

项目包: 哪个项目需要什么技术就安装什么样的包! jquery / moment / express ;
       使用:const 变量 = require("包名")

全局包: 安装的时候要加 -g ; 特点就是以命令的形式存在; 一次安装终身使用; 
       安装位置 C:\Users\用户名\AppData\Roaming\npm

​ 例如:i5ting_toc 全局工具包,安装后会多出命令,可以将 md 文件转换为 html 文件:

# 安装
npm i i5ting_toc -g
# 转换(默认路径使用相对路径,绝对路径会报错)
i5ting_toc -f 文件路径 -o

1.5 开发自己的第三方包并发布

​ 代码(略),发布需要先切换镜像源,然后登陆,发布,卸载;

# 注意:npm官网查看项目名称是否存在
https://www.npmjs.com/
# 切换
nrm use npm
nrm ls
# 登陆
npm login
# 发布 (1.项目名称不能重复  2.账号必须激活  3.命令必须在项目根目录下执行  4.依然无法上传可以更换项目名)
#   可以用同卓中已经上传成功人员的账号测试,有时候点击了激活也无法上传;
npm publish
# 卸载
npm unpublish 包名 -force

1.6 模块加载机制

  1. 模块的加载优先从缓存中加载;

    (结论:随便引入!!!)

  2. 核心模块优先级最高;

    (结论:自定义第三方模块的时候不要起名与核心模块冲突!!!)

  3. 自定义模块,不能省略前面的 ./ 和 ../ ,但是后面的 .js 可以省略;

    (了解:查找顺序:完整的文件名 => 文件名.js => 文件名.json => 文件名.node => 报错! )

  4. 第三方模块查找是优先从文件同级别目录查找 node_modles,如果没有翻到上一级以此类推,直到根目录;

    (原因:只要在某个项目里,无论多么深的文件,都可以使用项目所下载的 node_modles 的第三方模块)

  5. 自定义包,作为模块。

    • 如果没有 package.json 则以 index.js为入口;

    • 如果有 package.json,

      • 里面没有main属性: 则以 index.js为入口;
      • 里面有main属性:
      • 值指向 index.js,则以 index.js为入口;
        • 值不指向 index.js ,
        • 若文件存在,就以文件为准;
          • 若 main 属性执行文件不存在则以 index.js 为入口;

2. express 入门

​ 学会 express 搭建服务器,获取查询参数和动态参数,并开放静态资源;

2.1 express 搭建服务器

express 搭建服务器;

// 0.安装 express 
//      npm i express@4.17.1

// 1.导入    
const express = require("express");
// 2.创建
const app = express();
// 3.拦截请求(get/post), 响应内容;
app.get("/user", function (req, res) {
    // 请求方式是get, 一般都是获取用户信息;
    // res.send(); 可以发送字符串,也可以发送对象; res.end()只能发送字符串
    res.send({name: '张三',age: 18,});
});
app.post("/user", function (req, res) {
    // 请求方式是post, 一般都添加用户信息;
    res.send("添加用户成功!");
});
// 4.监听
app.listen(8888, function () {
    console.log("express服务以开启,请访问:http://localhost:8888 ");
})

2.2 通过GET/POST请求获取参数

通过GET/POST请求获取参数,只是查询参数和动态参数,不包含post请求的请求体参数;

// 0.安装 express 
//      npm i express@4.17.1
// 1.导入    npm i express@4.17.1
const express = require("express");
// 2.创建
const app = express();
// 3.1 get参数,路径不能和上面的get一样
//  用 postman 测试:http://localhost:自己的端口号/query?id=123&name=zs
app.get("/query", function (req, res) {
    // req.query就是查询参数
    res.send(req.query);
});
// 3.2 路由参数/动态参数; 可以设置多个,属性名自定义;
//  用 postman 测试:http://localhost:自己的端口号/params/123/lisi
app.get("/params/:id/:username", function (req, res) {
    res.send(req.params);
})
// 4.监听
app.listen(8888, function () {
    console.log("express服务以开启,请访问:http://localhost:8888 ")
})

2.3 开放静态资源

开放静态资源

// 0.安装 express 
//      npm i express@4.17.1

// 创建express的web服务
const express = require("express")
const app = express();

// 开放静态资源
// app.use(): 可以拦截所有请求方式 get/post/delete/put... 
// 路径不指定的情况拦截所有;
app.use(express.static("./clock"));
// 托管多个静态资源文件夹,指定文件夹名为路径前缀
// 前面的路径是绝对路径,不能带.或者.. , 后面的是相对路径,可以./ 或者 ../
app.use("/files", express.static("./files"));

// 监听端口
app.listen(8888, () => {
    console.log("http://localhost:8888");
})

2.4 nodemon 命令

​ 使用 nodemon 命令执行的 js 文件, 可以在文件保存后重新执行 js 文件,以简化重启操作;

# 安装
npm i nodemon -g
# 使用
nodemon app.js