亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

TypeScript開發Node.js程序的方法

2024-05-06 16:50:26
字體:
來源:轉載
供稿:網友

當我第一次發現 TypeScript 時,就把它用到了自己的 JavaScript 程序中。使用 TypeScript 有很多好處,現在你要讓我在用原生 JavaScript 寫任何東西的話,需要給我一個令人信服的理由。

在本文中,我將向你展示如何設置一個簡單的開發環境,以便使用 TypeScript 編寫 Node.js 應用程序。

首先在 TypeScript 中可能有一千種或更多種不同的方法去創建 Node.js 程序。我只是想展示自己喜歡的方式。

另外你可以在此處找到我的入門項目:https://github.com/toxsickcoder/node-typescript-starter。里面有一些不會在本文中討論的額外功能。

Package.json

就像我之前說過的,有很多方法可以做到這一點。我喜歡將 Webpack 用于 TypeScript 項目。但首先要做的是從創建一個 package.json 開始。

你可以用 npm init 命令生成 package.json,也可以復制粘貼下面的代碼并進行更改。

// package.json{ "name": "node-typescript", "version": "0.0.1", "author": "Freek Mencke", "homepage": "https://medium.com/@freek_mencke", "license": "MIT", "scripts": {}, "dependencies": {}, "devDependencies": {}}

讓我們從 JavaScript Node.js 項目的簡單 Webpack 配置開始。完成基本設置后,將添加 TypeScript。

程序

如前所述,我們將從 JavaScript 程序開始,稍后將其轉換為 TypeScript。首先創建一個帶有 main.js 和 information-logger.js 文件的 src/ 目錄,其中包含一些 Node.js 功能:

// src/information-logger.jsconst os = require('os');const { name, version} = require('../package.json');module.exports = { logApplicationInformation: () =>  console.log({   application: {    name,    version,   },  }), logSystemInformation: () =>  console.log({   system: {    platform: process.platform,    cpus: os.cpus().length,   },  }),};// src/main.jsconst informationLogger = require('./information-logger');informationLogger.logApplicationInformation();informationLogger.logSystemInformation();

這段腳本會將一些系統信息輸出到控制臺。運行 node main.js 后,可以看到以下輸出:

{ application: { name: 'node-typescript', version: '0.0.1' } }
{ system: { platform: 'linux', cpus: 8 } }

Webpack

在使用 Webpack 之前,需要做的第一件事就是安裝必要的依賴項。不要忘記使用 -D 標志,它代表 devDependencies。

npm i -D webpack webpack-cli

你可能注意到我沒有安裝 webpack-dev-server 。這因為我們正在創建一個 Node.js 應用程序。后面我會使用 nodemon,它有相同的用途。

webpack.config.js

下一步是創建一個 webpack.config.js 文件,通過它告訴 Webpack 應該如何處理我們的代碼。

// webpack.config.js'use strict';module.exports = (env = {}) => { const config = {  entry: ['./src/main.js'],  mode: env.development ? 'development' : 'production',  target: 'node',  devtool: env.development ? 'cheap-eval-source-map' : false, }; return config;};

如你所見,從 Webpack 開始并不需要太多配置。唯一需要的兩個選項是 entry 和 target。我們用 entry 字段聲明程序的入口點,告訴 Webpack 在 Node.js 中使用 target 字段。

可以用 mode 字段告訴 Webpack 它應該關注編譯速度(開發)還是混淆和縮?。ㄉa)。為了幫助調試,需要在開發模式中運行,用 devtool 字段來指示我們想要源映射。這樣,如果出現錯誤,可以很容易地在代碼中找到它出現的位置。

要使用 Webpack,需要創建一些 npm 命令:

// package.json...  "scripts": {  "start": "webpack --progress --env.development",  "start:prod": "webpack --progress" },...

現在可以通過運行這些命令來構建程序。它將創建一個目錄 dist/,其中包含輸出文件 main.js ??梢杂?webpack.config.js 中的 output configuration 指定一個不同的名稱。

我們的項目現在應該是這樣的:

dist/ main.jsnode_modules/src/ information_logger.js main.jspackage-lock.jsonpackage.jsonwebpack.config.js

nodemon

你可能已經注意到,在運行啟動命令后,Webpack 會在構建應用程序后停止。它不會監視我們對的文件所所做的改動。由于我們正在使用 Node.js,所以無法用 webpack-dev-server。

幸運的是可以用 nodemon 來解決這個問題。它是專門為這個目的而開發的工具:在開發期間重新啟動 Node.js 應用程序。

讓我們從安裝 nodemon-webpack-plugin開始。不要忘記 -D 標志,因為它是一個 devDependency。

npm i -D nodemon-webpack-plugin

讓我們創建一個新的 nodemon 標志,并將插件添加到的 webpack.config.js 中。

// webpack.config.js'use strict';const NodemonPlugin = require('nodemon-webpack-plugin');module.exports = (env = {}) => { const config = {  entry: ['./src/main.js'],  mode: env.development ? 'development' : 'production',  target: 'node',  devtool: env.development ? 'cheap-eval-source-map' : false,   resolve: { // tells Webpack what files to watch.   modules: ['node_modules', 'src', 'package.json'],  },    plugins: [] // required for config.plugins.push(...); }; if (env.nodemon) {  config.watch = true;  config.plugins.push(new NodemonPlugin()); } return config;};

當我們傳遞 nodemon 標志時,需要設置 Webpack watch config,并添加 nodemon 插件。當我們更改文件時,Webpack watch config 將會重建程序。 nodemon 插件會在重建完成后重新啟動程序。

我們還需要更新 npm 命令。我還創建了一些沒有 nodemon標志的構建命令,。

// package.json... scripts: [  "start": "webpack --progress --env.development --env.nodemon",  "start:prod": "webpack --progress --env.nodemon",  "build": "webpack --progress --env.development",  "build:prod": "webpack --progress",  "build:ci": "webpack" ],...

我們完成了 Node.js 程序的基本 Webpack 設置。下一步是添加 TypeScript!

TypeScript

現在讓我們添加 TypeScript!首先安裝需要的依賴項。

由于這是一個 Node.js 項目,我們還需要安裝相關的支持。我正在研究 Node.js 的 LTS 版本,也就是10 版。這就是我安裝 ^ 10.0.0 版的原因。

npm i -D typescript ts-loader @types/node@^10.0.0

ts-loader

我們將用 ts-loader Webpack 插件來編譯 TypeScript。

我們需要將 entry 文件的后綴更改為 .ts 并告訴 webpack 它還必須解析 .ts 文件(默認情況下,Webpack僅適用于 .js 文件)。

// webpack.config.js... const config = {  entry: ['./src/main.ts'],  mode: env.development ? 'development' : 'production',  target: 'node',  devtool: env.development ? 'cheap-eval-source-map' : false,  resolve: {   // Tells Webpack what files to watch      extensions: ['.ts', '.js'],   modules: ['node_modules', 'src', 'package.json'],  },  module: {   rules: [    {     test: //.ts$/,     use: 'ts-loader',    },   ],  },  plugins: [], // Required for config.plugins.push(...); };...

tsconfig.json

如果現在嘗試運行我們的程序,它將會崩潰。因為還缺少 tsconfig.json 文件。所以先創建一個。

// tsconfig.json{ "compilerOptions": {  "target": "esnext",  "module": "esnext",  "moduleResolution": "node",  "lib": ["dom", "es2018"],  "allowSyntheticDefaultImports": true,  "noImplicitAny": true,  "noUnusedLocals": true,  "removeComments": true,    "resolveJsonModule": true,  "strict": true,  "typeRoots": ["node_modules/@types"] }, "exclude": ["node_modules"], "include": ["src/**/*.ts"]}

如上所示,我更喜歡嚴格的 tsconfig 文件,你可以不必這樣做。我喜歡把自己的目標代碼語法版本設定的很高( esnext 或 es2018),因為 Node.js 對新的 JavaScript 功能支持的非常好。

程序

我們仍然需要將 JavaScript 文件的擴展名從 .js 改為.ts。讓我們這樣做并嘗試運行項目。

運行項目后,可以立即看到我們在創建的測試應用程序中犯了“錯誤”。我們無法對 package.json 中的 name 字段進行解構,因為它可能已經被定義了或者我們覆蓋了它。所以需要做一些改動。

// information-logger.tsimport os from 'os';import { name, version } from '../package.json';export class InformationLogger { static logApplicationInformation(): void {  console.log({   application: {    name,    version,   },  }); } static logSystemInformation(): void {  console.log({   system: {    platform: process.platform,    cpus: os.cpus().length,   },  }); }}// main.tsimport { InformationLogger } from './information-logger';InformationLogger.logApplicationInformation();InformationLogger.logSystemInformation();

如果你遵循了前面所有步驟,那么現在項目結構應該是這樣的:

dist/ main.jsnode_modules/src/ information-logger.ts main.tspackage-lock.jsonpackage.jsontsconfig.jsonwebpack.config.js

我們已準備好用 TypeScript 編寫 Node.js 程序了!

最后的注意事項

我確信在 TypeScript 中有數千種不同的方法來編寫 Node.js 應用程序。我所寫下的絕不是你必須要照樣做的方式,這只是你可以做到的方式中的一種。

剩下來的步驟可能是添加 TSLint 集成,添加 Dockerfile,設置 CI 管道……一切盡在你的掌握之中。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩欧美综合| 中文字幕日韩精品在线| 九九热精品视频在线播放| 亚洲va国产va天堂va久久| 成人av番号网| 亚洲精品一区二区久| 色婷婷久久一区二区| 欧美成人精品一区二区| 欧美色图在线视频| 日韩免费在线看| 中文字幕v亚洲ⅴv天堂| 亲爱的老师9免费观看全集电视剧| 久久婷婷国产麻豆91天堂| 久久99亚洲热视| 日韩av手机在线看| 日韩有码在线播放| 国产成人中文字幕| 日韩在线观看免费高清完整版| 国产精品人成电影在线观看| 国产亚洲欧美另类中文| 色噜噜国产精品视频一区二区| 国产精品吊钟奶在线| 久久伊人精品天天| 在线视频免费一区二区| 亚洲精品在线视频| 久久91精品国产91久久跳| 欧美wwwxxxx| 日韩乱码在线视频| 国产成人a亚洲精品| 麻豆乱码国产一区二区三区| 亚洲女人被黑人巨大进入al| 91免费看片在线| 亚洲欧美日韩天堂| 一本久久综合亚洲鲁鲁| 91在线视频九色| 国产亚洲激情视频在线| 国产精品网址在线| 俺也去精品视频在线观看| 精品国产电影一区| 国产91免费看片| 欧美性受xxxx白人性爽| 91久久国产婷婷一区二区| 国产日韩欧美在线播放| 日韩av在线网页| 国产日本欧美一区二区三区| 亚洲精品电影网站| 大桥未久av一区二区三区| 国产亚洲精品激情久久| 国产精品无码专区在线观看| 亚洲欧美中文日韩在线| 在线观看欧美www| 精品人伦一区二区三区蜜桃网站| 久久国产精品电影| 国产精品久久久久久久电影| 亚洲 日韩 国产第一| 欧美午夜久久久| 久久在线视频在线| 久久久女人电视剧免费播放下载| 国产高清在线不卡| 搡老女人一区二区三区视频tv| 久久久久久久香蕉网| 国产精品福利小视频| 亚洲理论在线a中文字幕| 欧美精品福利在线| 国产精品亚洲激情| 国产精品白嫩初高中害羞小美女| 欧美成人亚洲成人日韩成人| 色偷偷av亚洲男人的天堂| 亚洲天堂男人的天堂| 国产精品久久久久久网站| 亚洲精品日韩丝袜精品| 久久久精品中文字幕| 538国产精品一区二区在线| 欧美黄色片免费观看| 欧美在线激情视频| 亚洲男人av在线| 精品在线小视频| 伊人久久男人天堂| 久久精品国产99国产精品澳门| 久久久久国产精品免费| 亚洲乱码国产乱码精品精天堂| 亚洲欧美国产日韩中文字幕| 国产性猛交xxxx免费看久久| 亚洲一区二区三区成人在线视频精品| 国产精品久久久久77777| 亚洲激情视频在线| 91在线观看免费高清完整版在线观看| 性色av一区二区三区在线观看| 国产成人综合精品在线| 日韩精品在线第一页| 欧美老女人www| 国产一区红桃视频| 久久频这里精品99香蕉| 另类天堂视频在线观看| 欲色天天网综合久久| 日韩在线视频二区| 久久琪琪电影院| 久久亚洲精品成人| 中文字幕欧美日韩在线| 日韩欧美中文字幕在线播放| 欧美成人激情在线| 亚洲成色999久久网站| 91精品国产乱码久久久久久蜜臀| 亚洲欧美福利视频| 疯狂做受xxxx欧美肥白少妇| 91精品国产综合久久香蕉| 国产综合久久久久久| 丝袜亚洲另类欧美重口| 久久中文字幕国产| 国产成人精品在线视频| 在线视频精品一| 日韩不卡中文字幕| 亚洲精品午夜精品| 免费成人高清视频| 欧美黑人国产人伦爽爽爽| 亚洲欧美综合图区| 日韩在线观看免费高清| 一本一本久久a久久精品综合小说| 国产v综合v亚洲欧美久久| 中文字幕av一区中文字幕天堂| 久久久999精品视频| 久久久久久香蕉网| 精品视频在线播放| 尤物yw午夜国产精品视频明星| 在线视频一区二区| 亚洲欧美一区二区精品久久久| 精品视频一区在线视频| 国产一区二区动漫| 国产性猛交xxxx免费看久久| 欧美黑人巨大精品一区二区| 国产精品三级久久久久久电影| 欧美激情亚洲综合一区| 91精品国产777在线观看| 欧美性生交xxxxx久久久| 久久天天躁日日躁| 欧美性xxxxhd| 亚洲色图35p| 国产精品久久久久久久久免费| 国产成人在线精品| 亚洲va国产va天堂va久久| 欧美视频在线免费看| 欧美日韩国产成人在线| 色婷婷av一区二区三区在线观看| 亚洲人成在线播放| 日韩av在线精品| 国产日韩欧美影视| 日韩精品极品毛片系列视频| 国产成人97精品免费看片| 亚洲国产精品国自产拍av秋霞| 91精品视频观看| 日韩免费在线看| 亚洲爱爱爱爱爱| 久久韩国免费视频| 国产精品视频公开费视频| 欧美韩日一区二区| 国产综合久久久久| 久久久久久久电影一区| 最新国产成人av网站网址麻豆| 亚洲国产精品成人va在线观看| 久久亚洲欧美日韩精品专区| 成人福利视频在线观看| 亚洲一区二区日本| 成人国产精品av| 欧美多人爱爱视频网站|