搭建Node.js+TypeScript开发环境要点及注意事项

前端开发中的各种脚手架对TypeScript(下称“TS”)支持已经很完善了。但作为后端的Node.js平台似乎对TS的支持还不太多。使用JS开发,习惯了TS的语法提示带来的安全感和便利性,因此迫切需要在Node.js平台下搭建TS开发环境。这个环境中,TS代码修改后将会自动重新编译和运行,不需要反复重新输入编译和运行命令。主要步骤如下:

一、安装全局依赖

1. 安装nodemon,将会得到一个可全局执行的命令nodemon

npm install -g nodemon

2. 安装TypeScript语言编译器,将会得到一个全局可执行的命令tsc

npm install -g typescript@next

二、搭建项目目录框架

1. 创建一个空文件夹,在其内部再创建src和dist两个子文件夹。src目录主要存放源代码,dist目录主要存放编译后的代码。

2. 执行初始化。用VSCode打开主目录,在终端中运行以下命令,将会得到package.json和tsconfig.json两个配置文件:

npm init -y
tsc -init

三、安装必要的依赖

1. 安装TS语言的类型文件,这是实现语法提示的核心包。

npm i --save-dev @types/node

2. 安装Node.js配置包。为方便配置适用于Node.js环境的tsconfig.json文件,TS官方为不同的Node.js版本准备了配置包。需要根据你的Node.js版本安装,假设现有Node.js版本是20.16.0,则执行以下命令:

npm install --save-dev @tsconfig/node20

其他版本的可以到npmjs.org官方网站搜索“@tsconfig”关键字。

3. 安装其他依赖。很多第三方包并不是内置支持TS语言的,因此在安装包本身的同时还要安装其类型文件。假设需要使用express框架,则执行以下命令,安装其依赖和类型文件:

npm i express --save
npm i --save-dev @types/express

四、修改配置

主要修改tsconfig.json文件。关键步骤是引入刚才安装的官方配置文件,指定源文件目录和编译输出目录,其他配置选项就不需要太多了,具体解释如下:

{
  "extends": "@tsconfig/node20/tsconfig.json",  /* 引用官方配置文件 */
  "compilerOptions": {
    "rootDir": "./src/",                                  /* 指定TS源文件所在目录 */
    "outDir": "./dist/"                                  /* 指定编译结果存放目录 */
  }
}

五、测试开发环境

为了测试自定义模块和标准库的导入使用效果,我编写了一个自定义模块。

1. 在src目录下创建一个utils目录,再在其下面创建一个index.ts文件,输入以下代码:

// 判断一个字符串是否合法的手机号
export const isValidMobile = (mobile: string) => {
    let reg = /^1[3456789]\d{9}$/;
    return reg.test(mobile);
};

2. 在src目录下创建一个index.ts文件,输入以下代码:

import express from 'express'
import { isValidMobile } from './utils'
const app = express()
const port = 3000
console.log(isValidMobile('6139000000000'))
app.get('/', (req, res) => {
    res.send('你好,Node.js!')
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})

此时,TS的语法提示已经出现了:

fcd2386aae7647fa8d206c7c1758c94c.png

六、运行代码

需要开两个终端,一个终端运行tsc命令,另一个运行nodemon命令。就本项目而言,具体命令如下:

1. 运行tsc命令,加上-w或者--watch参数,让tsc监控源文件的修改,从而动态编译。因为在tsconfig.json文件中已经配置了源文件目录,所以简化了命令:

 tsc -w

可以看到,TS语言编译器已经监视源文件目录,并实现了动态编译: 

7ec9b16dd8b740c2b168fffcf754347b.png

以下是更新代码后的错误提示:

650a58cf8f2b4e09bd2125dc7d89f1e2.png

2. 运行nodemon命令,让它监控输出目录内的文件变化:

nodemon ./dist/index.js

22b9995ad4a44dbdbbbc97ab41d776fc.png

用浏览器打开http://localhost:3000,将会看到以下结果:

f9823a57cc7d4d32a7b2a086d48aa69b.png

可以发现,express框架在响应头内默认添加了utf8编码设置,中文没有乱码。

 七、补充配置

以上介绍的测试办法需要手动输入两次终端命令,稍显不太方便,这里提供同时运行两个 npm 命令的方法:

1. 安装concurrently依赖

npm install concurrently -D 

2. 修改 package.json 文件,在 scripts 属性下面添加以下三行:  

    "tscWatch": "tsc -w",   // 让 tsc 监听 TS 源文件的变化
    "distWatch": "nodemon ./dist/index.js",  // 让 nodemon 监听编译输出文件的变化
    "dev": "concurrently \"npm run tscWatch\" \"npm run distWatch\""  // 同时启动以上两个命令

3. 运行npm run dev 命令,即可以一次性同时打开 tsc 和 nodemon 两个命令,并让他们处于监听状态:如下图所示:

八、注意事项

 使用TS语言编写Node.js程序,最好使用ES6的模块导出和导入方式。使用CommonJS方式导入的对象、方法和产量可能会没有语法提示,如下图所示:

0f2139ba42404f279742745e5fae4a72.png

要使CommonJS导入的模块具有类型推导,可能会需要更多配置。

本示例中,使用export导出,使用import导入,就有了语法提示:

fce3b6309b39480e95aed00fe49e474e.png

本文代码已上传至仓库,拉取方式:

git clone git@gitee.com:war_horse/framework_for_node.js_using_ts.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值