1. 前言
作为前端开发人员而言,ts已经成为了一项必不可少的技能,类型检查可以帮助我们再开发时避免一些不必要的bug,而且ts支持的类和装饰器等语法也更逼近后端语言,更适合服务器的开发。
本文将从零开始,搭建一个集成ts和eslint语法检查的express服务器。
2. 初始化express框架
我们可以使用官方提供的express生成器来快速生成express框架。
当然,express的初始化内容并不复杂,你也可以从一个app.js开始搭建自己喜欢的框架模式。
# 使用express生成器之前必须全局安装过express-generator $ npm install -g express-generator # --view后面是确定你使用哪种视图引擎,server是你工程的名称 $ express --view ejs server # 生成的工程并不会默认给我们添加git,这里我们使用git init初始化一下 $ git init
初始化完成后我们添加一个.gitignore文件
node_modules/ dist/
3. 添加TS支持
全局安装TS
ts本身属于js的超集,node和浏览器并不认识,执行前需要先编译成js,所以没有全局安装过ts的需要先全局安装一下
$ npm install -g typescript
安装express类型依赖
express是基于node环境的,所以我们需要安装两个类型依赖,以获得相关api的类型提示
$ npm install @types/node --save-dev $ npm install @types/express --save-dev
配置tsconfig.json文件
在项目根目录下新建tsconfig.json文件,outDir表示打包输出路径
{ "compilerOptions": { "target": "es2016", "module": "commonjs", "lib": ["es2016","dom"], "outDir": "./dist", }, "exclude": ["node_modules"] }
这里如果包含了include或者files选项,将不会默认编译所有ts文件。
接下来我们可以把项目的所以js文件的后缀改为.ts,然后直接在命令行运行
$ tsc
默认会找到根目录下的tsconfig.json文件,按照配置帮我们进行编译,编译完成我们可以看到dist文件夹已经将所有ts文件编译成了js文件,而且保持了原来的目录结构。
接下来我们将目录下的其他资源也放入dist文件夹下,然后运行
$ node ./dist/bin/www
这时我们的服务已经可以正常启动了,但是在开发时如果每次运行都要进行编译->将资源文件移入->运行命令的流程,那也太繁琐了,所以接下来我们再添加一个第三方库ts-node。
使用ts-node将ts文件编译在内存中
在使用ts-node之前需要进行全局安装
$ npm install ts-node -g # 用ts-node直接运行项目,这个库会将我们的ts文件编译成js文件保存在内存中进行引用 $ ts-node ./bin/www
虽然ts-node可以帮我们直接运行ts文件,但在开发完成后部署在生产环境时,还是推荐使用tsc打包出来的js文件会更加稳定。
使用nodemon进行热更新
全局安装nodemon
$ npm install nodemon -g # 执行命令运行项目 $ nodemon -e ts --exec ts-node ./bin/www
-e:表示指定观察列表 (Specifying extension watch list)
--exec:代表命令行形式执行命令
配置npm脚本
"scripts": { "start": "ts-node ./bin/www", "dev": "nodemon -e ts --exec ts-node ./bin/www", "build": "tsc", "server": "node ./dist/bin/www" }
4. 配置eslint
为什么不是tslint?
TSLint is deprecated.
See this issue for more details: Roadmap: TSLint → ESLint. If you're interested in helping with the TSLint/ESLint migration, please check out our OSS Fellowship program.
这是tslint团队给出的答案,目前推荐使用的是typescript-eslint。
为项目配置eslint
# 未全局安装的需要全局安装 $ npm install eslint -g $ eslint --init √ How would you like to use ESLint"htmlcode">extends: [ 'standard', 'eslint:recommended', 'plugin:@typescript-eslint/recommended' ]接下来我们会看到ts文件的一堆报错,就可以愉快的安装ts语法进行修改啦!
提示:ts对于commonjs的模块化语法并没有完全的支持,所以在使用require和module.exports时很容易遇到各种报错,官方也
推荐了一些解决方式,这里推荐启用ES模块导入模式
{ "compilerOptions": { ... "esModuleInterop": true } }这样就可以在项目中使用es6的import和export进行模块化了,ts在编译时会根据环境对我们的代码进行兼容性编译。
5. 小结
本文是本人在搭建自己express服务器并集成ts开发时所记录的一些操作,如有错误之处,还请多多指点!
到此这篇关于使用TS来编写express服务器的方法步骤的文章就介绍到这了,更多相关TypeScript express服务器内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]
- 模拟之声慢刻CD《徐小凤45周年》[德国母带][低速原抓WAV+CUE]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- 《王菲 单曲合集》[FlAC/分轨][520MB]
- 《费玉清 原味再现 水长流》[WAV+CUE][430MB]
- 群星.1992-畅销榜老歌金曲10CD【风格】【WAV+CUE】
- 孙悦.2024-时光音乐会【金蜂】【WAV+CUE】