后端开发简介
后端开发的主要范畴是开发数据服务 API,使前端可以调用后端的服务对数据进行增、删、改、查,从而实现对前端请求的响应。
要开发一个后端应用程序,一般不会从零开始做,而会直接使用一些功能完备的框架,快速开发程序功能。本节先介绍几款主流的后端框架,然后再详述 Express 框架的用法。
常用的后端框架
Express
Express 是一款基于 Node.js 平台的快速、开放、完善的 Web 开发框架,是目前最流行的后端框架之一,也是最成熟的框架之一。它为服务器端应用提供了完善的功能,如请求上下文、路由、中间件、模板引擎、静态资源服务等,要扩展其功能也极方便。目前有许多流行的开发框架基于 Express 构建。
Koa
Koa 是一款极简的后端框架。通过利用 async() 函数,它放弃了传统回调函数的做法,避免产生回调灾难。Koa 没有捆版中间件,而提供了优雅的办法来协助编写服务器端应用程序,它不仅提供了请求上下文、中间件等基础功能,还可以通过 async/await 写出更简洁的代码,开发者可根据需求开发自定义框架。
Express框架的用法
目前,Express 是主流的框架。本节将以 Express 框架为例,介绍基于 TypeScript 语言的后端开发,以及如何搭建一个基础的后端服务。
假设当前项目目录为 D:\TSProject\server-side,首先,执行以下命令安装 Express 及其对应的声明文件库。
$ npm install express
$ npm install @types/express -D
然后,使用 tsc --init 命令创建 ts.config 文件,在文件中添加 rootDir 编译选项和 outDir 编译选项,将待编译的 TypeScript 源文件根目录设置为 ./src,并将编译后的 JavaScript 文件的输出目录设置为 ./dist。
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"rootDir": "./src",
"outDir": "./dist"
}
}
接下来,在项目根目录下创建 src 文件夹,并在文件夹中创建 index.ts 文件,src/index.ts 文件的内容如下。
import express from 'express';
const app = express();
const port = 8000;
app.get('/hello', (req, res) => {
res.send("hello world!");
});
app.listen(port, () => {
return console.log(`Express is listening at http://localhost:${port}`);
});
以上代码中从 express 库中导入了 express 对象,通过调用 express() 函数初始化 express 服务器对象,并设置端口为 8000,然后通过 app.get 创建一个 API,其相对路由为 /hello,访问方法为 get。一旦服务器运行,就可以通过以 get 形式访问 “http://{主机地址}:8000/hello” 访问该路由,服务器端将返回字符串结果 “hello world!”,最后通过调用 app.listen() 方法监听 8000 端口,开始提供服务。
下面先执行 tsc 命令,编译 src 目录下的全部文件,然后通过 node 命令启动输出后的 JavaScript 文件。
$ tsc
$ node dist/index.js
输出结果如下,此时服务已经开启,可以访问了。
> Express is listening at http://localhost:8000
此时,打开浏览器,访问之前编写的 API,地址为 http://localhost:8000/hello ,将会返回 “hello world!” 关键字,API 访问结果如图22-2所示。
到这里,一个基本的后端服务已经搭建成功,但是启动时需要分别执行两条命令并不方便。此时创建 package.json 文件(在 D:\TSProject\server-side 目录下执行 npm init 命令),将 main 属性设置为 dist/index.js,并在 scripts 属性下新增 start 属性,将它的值设置为 tsc && node dist/index.js,代码如下。
{
"name": "server-side",
"version": "1.0.0",
"description": "",
"main": "dist/index.js",
"dependencies": {
"express": "^4.18.1"
},
"devDependencies": {},
"scripts": {
"start": "tsc && node dist/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
在项目根目录下,执行 npm start 命令,直接编译并启动服务,输出结果如下。
D:\TSProject\server-side> npm start
> server-side@1.0.0 start D:\TSProject\server-side
> tsc && node dist/index.js
> Express is listening at http://localhost:8000
配置完成后,项目结构如下。
D:\TSProject\server-side
│ package.json
│ tsconfig.json
│
├─node_modules
│ ...
│
├─dist
│ index.js
│
└─src
index.ts