认识 npm
-
认识 npm
- 一个 基于 node 环境的 包管理器
-
npm 的安装
- 不需要安装, 只要安装了 node, 自动安装 npm
-
npm 的检测
- 打开命令行, 目录无所谓
- 输入指令: npm --version || npm -v
-
npm 的作用
- 下载一切和 js 相关的 第三方
- 相当于是一个 "软件"
- 只不过这个 "软件" 没有 图标, 没有 UI 界面
- 依赖 命令行 进行操作
npm 的基本使用
- npm 初始化
- 切换到项目根目录, 打开 cmd 输入 npm init
- package name: 项目名; 默认文件目录名 不支持中文和空格
- version: 项目初始版本; 默认 1.0.0 通常第一版为 0.0.1 或者 0.1.0
- description: 项目描述, 属于一段描述你这个项目的内容即可
- entry point: 项目入口, 默认为 index.js 一般后端需要用到
- keywords: 关键字
- author: 作者
- 切换到项目根目录, 打开 cmd 输入 npm init --yes || npm init -y
- 所有选项均按照默认值配置
- 切换到项目根目录, 打开 cmd 输入 npm init
- npm 下载第三方
- 切换到项目根目录, 输入指令 npm install 包名
- 切换到项目根目录, 输入指令 npm i 包名
- 下载安装后默认会多一个 package-lock.json 文件与 node_modules 文件夹
- 下载时, 会去下载指定的第三方包, 如果第三方包用到了其他的第三方包, 会一起下载到 node_modules 中
- 下载完毕后, 会自动记录在 package.json 中
- npm 查看第三方可下载版本
- 打开 cmd, 目录无所谓
- 输入命令: npm view 包名 versions
- 会把该第三方包 所有的 可下载版本, 展示出来
- npm 下载指定版本的第三方
- 打开 cmd, 切换到项目根目录, 输入指令 npm install 包名@版本号 || npm i 包名@版本号
- 注意: 安装时, package 中只会记录一个, 后续安装的, 会顶替掉之前安装的
- 版本号可以写完整版本号, 也可以写 大版本号, 会默认下载该大版本内最新的稳定版
- npm 删除第三方
- 打开 cmd, 切换到项目根目录
- 输入指令 npm unstall 包名 || npm un 包名
- 会删除该第三方包的本地文件, 并且删除 package.json 文件内的记录
- npm 统一下载所有第三方
- 打开 cmd, 切换到项目根目录
- 输入指令 npm install || npm i
- 注意! 项目根目录需要有 package.json
- 会自动读取 package.json 内记录的第三方包, 一次性全部下载安装
- npm 清除缓存
- 清除下载缓存
- 打开 cmd, 目录无所谓
- 输入指令: npm cache clear -f
- 清除本地缓存
- C 盘
- 用户
- 你的用户名
- AppData
- Roaming
- npm-cache
- 清除下载缓存
- 修改镜像源地址
- 修改 npm 第三方包的下载地址
- 打开命令行, 目录无所谓
- 输入指令: npm config set registry registry.npmmirror.com
npm 第三方包的使用
- 在引入第三包的时候, 会先查看是否为 内置模块, 如果是, 直接导入使用, 没有的话, 检索是否为第三方包
- 检索时, 会按照 module.path 数组内的路径, 从下标 0 开始查找, 找到就是用, 找不到就报错
const _ = require("lodash");
var objects = [{ a: 1 }, { b: 2 }];
var deep = _.cloneDeep(objects);
console.log(deep, objects);
console.log(deep[0] === objects[0]);
var object = { a: 1 };
var other = { a: 1 };
console.log(_.eq(object, object)); // true
console.log(_.eq(object, other)); // false
console.log(_.eq("a", "a")); // true
认识 nodemon
- nodemon 第三方包
- 是一个 "软件"
- 作用: 仅仅是为了取代 node xxx.js 这个命令
- node xxx.js 与 nodemon xxx.js 启动的区别
- node:
- 启动后, 如果后续有变化, 需要手动重启服务器
- nodemon:
- 启动后, 如果后续有变化, 保存代码后, 终端自动重启
- node:
- nodemon 安装
- win: npm install --global nodemon || npm i -g nodemon
- MAC: sudo npm install --global nodemon
- nodemon 检测
- 打开命令行 目录无所谓
- 输入命令 nodemon --version || nodemon -v
- nodemon 卸载
- win: npm uninstall --global nodemon || npm un -g nodemon
- MAC: sudo npm uninstall --global nodemon
- nodemon 使用
- 和 node 运行文件的使用操作是一样的
- 打开命令行, 切换目录到你需要执行的 JS 文件所在的目录
- 输入指令: nodemon 文件名
初识 express
- 是一个 node 的第三方开发框架
- 把启动服务器包括操作的一系列内容进行的完整的封装
- 在使用之前, 需要下载第三方
- 指令: npm install express
- 基本搭建
// 0. 下载: npm install express
// 0. 导入
const express = express();
// 1. 创建服务器
const server = express();
// 2. 给服务器配置监听端口号
server.listen(8080, () => {
console.log("服务器启动成功");
});
- 配置静态资源
- 之前:
- 约定:
- 所有静态资源以 /static 开头
- 按照后面给出的文件名自己去组装的路径
- 组装:
- 准备了初始目录 './client/'
- 按照后缀去添加二级目录
- 按照文件名去查找内容
- 例子: /static/index.html
- 自动去 './client/views/index.html'
- 约定:
- 现在:
- 约定:
- 所有静态资源以 /static 开头
- 按照 /static 后面的路径去访问指定文件
- 要求: 在 /static 以后的内容需要按照 二级路径的正确方式书写
- 假设你需要请求的是 './client/views/index.html' 文件
- 你的请求地址需要书写 '/static/views/index.html'
- 约定:
- 语法:
express.static('开放的静态目录地址')server.use('访问这个地址的时候', 去到开放的静态目录地址)
// 0. 下载: npm install express
// 0. 导入
// 1. 创建服务器
// 1.1 配置静态资源
server.use("/static", express.static("./client/"));
// 2. 给服务器配置监听端口号
- 配置服务器接口
// 0. 下载: npm install express
// 0. 导入
// 1. 创建服务器
// 1.1 配置静态资源
// 1.2 配置服务器接口
server.get("/goods/list", (req, res) => {
/**
* req(request): 本次请求的相关信息
* res(response): 本次响应的相关信息
*
* req.query: 对 GET 请求体请求参数的解析
* 如果有参数, req.query 就是 {a:xxx, b:yyy}
* 如果没有参数, req.query 就是 {}
*/
console.log(req.query);
// res.end(JSON.stringify({code: 1, msg: '成功'}))
res.send({ code: 1, msg: "成功" });
});
server.post("/users/login", (req, res) => {
console.log(req.query);
// 注意! express 不会自动解析 post 请求的 请求体
res.send({
code: 1,
msg: "接收 POST 请求成功, 但是还没有解析请求体, 参数暂时不能带回",
});
});
// 2. 给服务器配置监听端口号