我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》
在我的职业生涯开始时,我是一位桌面运用开辟人员,个中强范例言语占有了市场主导地位。
当我迁移到Web开辟时,我对JavaScript和Python等言语的每一个新功用都很入神。事实上,我没有必要声明变量的范例,这极大的提高了我的临盆力,而且使我的事情变得更风趣了。
所以我第一次据说TypeScript时,脑海中的第一个主张是这个言语的演化是否是倒退了一步。

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

我改变了主张吗?

是的,但这也要取决于具体状况。关于我单独事情的个人项目,我依然更喜好纯JavaScript,他的临盆力更高。然则,关于那种团队事情的大型项目,我发起运用TypeScript。在整篇文章中,我将诠释怎样运用以及为何去运用。

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

临盆力与保护

依据观点定义的,“TypeScript是用于运用程序范围开辟的JavaScript”。也就是说,我们对项目初始设置的事情可以经由过程庞杂项目的可保护性获得赔偿。下面我们来看一下为何会发作这类状况:

输入safe = less errors经由过程在代码中定义范例,您可以许可IDE在运用仅在运转时感知的类和函数时确认毛病。

例:

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

这里我运用的是Visual Studio Code,它指出了两个毛病:
在第6行:我们试图将字符串参数通报给只接收数字的函数。
在第9行:我们试图将一个返回数字的函数的效果赋给字符串。
假如没有Typescript,这两个毛病将被无视,致使终究运用程序涌现一些毛病。

IDE更轻易寻觅公然项目模块

在庞杂的项目中,我们有数百个类散布在多个文件中。当我们定义范例时,IDE可以将对象和函数关联到给它们劈头的文件。
当运用control + 单击从另一个文件导入的要领或类时,IDE将自动导航到导入的文件,凸起显现定义援用的行。

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

我们可以在从其他文件导入的类中运用自动完成功用。

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

保护的难度是Java和C#开辟人员防止将大型项目迁移到JS的主要原因之一。我们可以说,Typescript是一种战胜这一停滞的企业言语。

怎样运用Typescript设置Express项目

如今让我们一步一步地建立一个在Express.js项目中运用Typescript言语的环境。

npm init

我们如今装置typescript包。

npm装置typescript -s

关于Typescript节点包
Node.js是一个运转Javascript而不是Typescript的引擎。节点Typescript包许可您将 .ts文件转换为 .js剧本。Babel也可用于转换Typescript,但市场标准是运用官方的Microsoft软件包。

在我们内部package.json我们将安排一个名为tsc:

“scripts”:{ 
    “tsc”:“tsc” 
},

此修正许可我们从项目文件夹中的敕令行挪用typescript函数。所以我们可以运用以下敕令:

npm run tsc  -  --init

此敕令经由过程建立tsconfig.json文件来初始化typescript项目。在此文件中,我们将作废解释该outDir选项,并为要通报的已转换的.js文件挑选一个位置:

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

装置express.js

npm install express -s

Express和Typescript包是自力的。如许做的效果是Typescript不“晓得”Express类的范例。Typescript有一个特定的npm包来辨认Express范例。

npm install @ types / express -s

Hello world

为了具有尽量最简朴的运用程序,我将运用express.js教程的hello world示例:

var express = require('express');
var app = express();

app.get('/', function (req, res){
    res.send('hello world!');
});

app.listen(3000, function(){
    console.log('Example app listening on port 3000');
})

在我们的项目中,我们将建立一个名为的文件夹app。在此文件夹中,我们将建立一个名为app.ts以下内容的文件:

import express = require('express');

// Create a new express application instance
const app: express.Application = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

编译我们的第一个运用程序

npm run tsc

如您所见,该敕令自动建立了build文件夹和.js文件。

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

运转express:

node build / app.js

有了这个,我们已经在端口3000上运转了一个服务器:

《我们应当怎样(以及为何)要将Typescript与Express、nodejs一同运用(译文)》

运转TypeScript而不举行转换

您可以运用ts-node包直接在节点上运转typescript 。

此软件包仅发起用于开辟。要在临盆中举行终究布置,请一直运用项目的javascript版本。

该ts-node已被包含在另一个包的依靠关联,T ts-node-dev。装置后,ts-node-dev我们可以运转敕令,以便在项目文件发作更改时重新启动服务器。

npm装置ts-node-dev -s

在我们内部,packege.json我们将增加两个剧本:

“scripts”:{ 
    “tsc”:“tsc”,
    “dev”:“ts-node-dev --respawn --transpileOnly ./app/app.ts”,“prod”:“tsc 
    && node ./build/ app.js“ 
},

要启动开辟环境:

npm run dev

要以临盆形式运转服务器:

npm run prod

有啥题目可以在评论处给我留言谢谢你的浏览!

    原文作者:前端技术小哥
    原文地址: https://segmentfault.com/a/1190000017062506
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞