首页>>前端>>JavaScript->?使用 Koa + TS + ESLlint 搭建node服务器

?使用 Koa + TS + ESLlint 搭建node服务器

时间:2023-12-02 本站 点击:0

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 1 天,点击查看活动详情

初始化项目

环境准备

与之前使用JavaScript开发后台不同,区别如下:

自动编译运行的插件由nodemon替换为ts-node-dev

TypeScript环境下,需要使用到ES6模块化规范。而非CommonJS规则。

使用TypeScript语法进行开发,再开发结束后,需要进行编译打包为JavaScript去运行。

安装环境

yarn global add ts-node-dev typescript

ts-node-dev:与nodemon功能类似,在修改代码之后,保存即可生效,无需手动重启。

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts

初始化 tsconfig.json

# 生成tsconfig.jsontsc --init

修改tsconfig.json如下:

{    "compilerOptions": {        "target": "esnext", // 目标语言版本        "module": "commonjs", // 指定生成代码的模板标准        "sourceMap": true,        "outDir": "./dist",        "rootDir": "./src", // 指定输出目录, 默认是dist文件夹        "strict": true,        "esModuleInterop": true,        "allowSyntheticDefaultImports": true,        "skipLibCheck": true,        "forceConsistentCasingInFileNames": true    },    // 需要编译的的文件和目录    "include": ["src"],    "exclude": ["node_modules", "dist", "public"]}

简单搭建 Koa 服务器

# 依赖安装yarn add koayarn add typescript -D# 依赖注解yarn add @types/koa -D

app.ts中实例化一个服务器。

import Koa, { DefaultContext, DefaultState, Context } from 'Koa'const app: Koa<DefaultState, DefaultContext> = new Koa()app.use(async (ctx: Context) => {    ctx.body = 'coderlzw'})app.listen(3000, () => {    console.log('服务启动成功,running http://127.0.0.1:3000')})

package.json中添加调试脚本:

"scripts": {  "dev": "ts-node-dev --respawn app.ts"}

启动服务:

现在,我们使用KoaTypeScript搭建了一个简单的服务器,我们http://127.0.0.1:3000便可以再浏览器中看到”coderlzw“

完整项目搭建

依赖安装

# 依赖安装yarn add koa koa-router koa-cors koa-bodyparser dotenvyarn add ts-node-dev npm-run-all typescript -D# 依赖注解yarn add @types/koa @types/koa-bodyparser @types/koa-router  @types/koa-cors -D

dotenv是一个零依赖的模块,它能将环境变量中的变量从.env文件加载到process.env中。

在根目录下创建.env文件

HOST=localhostPORT=3000

*.js/*.ts中使用

import dotenv from 'dotenv'dotenv.config()const { PORT, HOST } = process.env

npm-run-all是一个批量执行npm脚本的工具。

构建目录结构

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts0

修改 package.json

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts1

当我们在开发环境的时候,只需要执行yarn dev即可成功启动服务。

当我们执行编译打包的时候,根据tsconfig.json中的配置输出到指定的目录。

在项目部署后,我们只需要运行dist/main.js文件即可启动服务。

代码规范

eslint

官网: eslint.bootcss.com

eslint能够帮助我们规范编码,比如字符串使用哪种引号,代码结尾是否要有分号等等。

安装依赖包

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts2

使用如下命令初始化eslint配置,会在项目更目录生成.eslintrc.js配置文件。

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts3

接着我们在命令行执行:npx eslint src/** --fix,执行eslint提供的代码的自动修复。

修改package.json,添加运行脚本。

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts4

现在我们可以通过命令来处理代码风格问题,但是我们更加希望在保存的时候自动处理代码分格,这时候就需要使用到vscode编辑器的插件ESLint,通过此插件和vscode编辑器配置便可以实现保存的时候自动格式化代码。

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts5

现在我们通过如上的配置,在保存的时候就会自动处理代码风格问题。

prettier

前面所提到的eslint主要做两件事情,一是修复代码质量,二是修改代码分格。

如果你不喜欢eslint自带的格式化方式,就可以使用prettier来格式化代码分格。

官网: https://prettier.io/

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts6

在项目更目录下配置.prettierrc

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts7

在项目更目录运行如下命令,格式化项目所有文件。

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts8

但是当我们执行完后,会发现eslint又报错了。这是因为eslintprettier的冲突所导致的。这时候我们需要关闭prettiereslint格式所产生的冲突。

# 例如ts-node-dev src/app.ts# 如果想要监听文件的改变需要加上 --respawn 参数ts-node-dev --respaswn src/app.ts# 使用简短的别名tsnd --respawn src/app.ts9

然后在.eslintrc.js加入perttier扩展,配置后冲突的问题就解决了,代码分格就由prettier来处理。

# 生成tsconfig.jsontsc --init0

现在我们希望在保存的时候按照prettier的代码分格格式化代码。eslint-plugin-prettier

# 生成tsconfig.jsontsc --init1

eslintrc.js的最终配置如下:

# 生成tsconfig.jsontsc --init2

最后,实现了一个小案例:https://gitee.com/coderlzw/koa_typescript

原文:https://juejin.cn/post/7102367772100788260


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/JavaScript/9508.html