webpack
是一个用于现代 JavaScript
应用程序的 静态模块打包工具。它主要解决的问题是将多个模块(Module)打包成一个或多个文件,并且在这个过程中还支持一些特性,如代码分离、文件压缩等。
我们先将着重点落在 静态模块打包工具
上,为什么是 静态模块打包工具
?
是因为它可以将多个模块(JavaScript 文件
、CSS 文件
、图片
等)打包成一个或多个静态资源文件。静态资源文件包含了应用程序中的所有依赖关系和逻辑,可以直接在浏览器中加载和运行。
pnpm(全称 Performant NPM)
你可以理解为性能更好的 npm
在 pnpm
的官网是这么介绍的:pnpm
是一个快速的,节省磁盘空间 的 包管理工具
前两者 快速的
、节省磁盘空间
很容理解。
那么什么是包管理工具呢?
在上一章我们已经介绍了 express
,另外一个非常流行的 Node Web 服务器框架就是 Koa
Koa
官方的介绍:
事实上,koa
是 express
同一个团队开发的一个新的 Web
框架
TJ
的主要精力也在维护 Koa
,express
已经交给团队维护了;Koa
旨在为 Web
应用程序和 API
提供更小、更丰富和更强大的能力;express
具有更强的异步处理能力(后续我们再对比);Koa
的核心代码只有 1600+
行,是一个更加轻量级的框架;下面我们就先来体验一下用 koa
的`Web服务器,创建一个接口。
既然我们要用 koa
,那么第一步就需要先安装一下 koa
SHnpm i koa
jsconst Koa = require("koa");
const app = new Koa();
app.use((ctx, next) => {
console.log("中间件 1");
next();
});
app.use((ctx, next) => {
console.log("中间件 2");
ctx.response.body = "Hello World0";
});
app.listen(8000, () => {
console.log("服务器在8000端口启动成功~");
});
node
执行该文件,访问 localhost:8000
在上面的代码中,koa 注册的中间件提供了两个参数:
ctx
:上下文(Context)对象
koa
并没有像 express
一样,将 req
和 res
分开,而是将它们作为 ctx
的属性;ctx
代表一次请求的上下文对象;ctx.request
:获取请求对象;ctx.response
:获取响应对象;next
:本质上是一个 dispatch
,类似于 express
中的 next
;koa
通过创建的 app
对象,注册中间件只能通过 use
方法:
koa
并没有提供 methods
的方式来注册中间件;path
中间件来匹配路径;在真实开发中,我们可以通过以下方法将路径和 method
分离
request
自己来判断jsapp.use((ctx, next) => {
if(ctx.request.path === '/users') {
if(ctx.request.method === 'POST') {
ctx.response.body = 'Create User Success~'
} else {
ctx.response.body = 'Users List~'
}
} else {
ctx.response.body = 'Other Request Response'
}
})
koa
官方并没有给我们提供路由的库,我们可以选择第三方库:koa-router
koa-router
shnpm i @koa/router
users/router.js
文件jsconst KoaRouter = require("@koa/router");
const userRouter = new KoaRouter({ prefix: "/users" });
userRouter.get("/", (ctx, next) => {
ctx.body = "用户列表~";
});
userRouter.post("/", (ctx, next) => {
ctx.status = 201;
ctx.body = "用户创建~";
});
module.exports = userRouter;
index.js
中将 router.routes()
注册为中间件jsconst userRouter = require("./user/router.js");
const Koa = require("koa");
const app = new Koa();
app.use(userRouter.routes());
app.use(userRouter.allowedMethods());
app.listen(8000, () => {
console.log("服务器在8000端口启动成功~");
});
index.js
文件即可启动服务注意:allowedMethods
用于判断某一个 method
是否支持:
get
,那么是正常的请求,因为我们有实现
get;put、delete、patch
,那么就自动报错:
Method Not Allowed
,状态码:405
;link
、copy
、lock
,那么久自动报错:Not
Implemented
,状态码:501
;上一章我们在使用 http
内置模块来搭建 Web
服务器的过程中,会感到很多问题,那就是原生 http 模块
在进行很多处理时会较为复杂,比如:
URL
判断Method
判断都需要我们自己来处理和封装,当所有的内容都放在一起时,常常会显得非常混乱。
而这些都是框架能帮我们解决的问题
目前在 Node
中比较流行的 Web
服务器框架是 express
和 koa
,express
要早于 koa
出现,并且在 Node
社区中迅速流行起来。
express
快速、方便的开发自己的 Web
服务器Express
整个框架的核心就是中间件,理解了中间件其他一切都非常简单!
express
的使用过程有两种方式:
通过 express
提供的脚手架 express-generator
,直接创建一个应用的骨架
从 0
搭建自己的 express
应用结构
npm install express-generator -g
express express-generator-demo
npm install
npm run start
localhost:3000
,访问成功,表示服务已启动0
搭建express
mkdir express-demo cd express-demo npm init npm i express
01_express的基本使用.js
jsconst express = require("express");
// 创建服务器
const app = express();
// home 的 get 请求处理
app.get("/home", (req, res) => {
res.end("Hello Home");
});
// login 的 post 请求处理
app.post("/login", (req, res) => {
res.end("Hello Login");
});
// 开启监听
app.listen(8000, () => {
console.log("服务器启动成功~");
});
node 01_express的基本使用.js
http://localhost:8000/home
地址Express
是一个路由和中间件的 Web
框架,它本身的功能非常少,它的序本质上是一系列中间件函数的调用
shnpm i @coderyjw/cli -g
输入 jw-cli -h
查询帮助
1. 输入 jw-cli init -h
查询帮助
2. 输入 jw-cli init
初始化项目,选择类型:项目
3. 输入项目名称: react-app
4. 选择项目模板:react模板
5. 下载成功
1. 输入 jw-cli install
,选择 Gitee
2. 输入 token
3. 输入关键词: vue-admin-template
4. 输入开发语言(可选择不输入)
5. 选择项目:vue-admin-template
6. 选择版本: 4.3.1
7. 下载成功,启动项目