为什么要用TypeScript?为了减少代码编写过程中的错误,更好地维护您的项目,本文将教您如何配置一个简单的开发环境来编写Node.js应用程序。有很多方法可以创建这样的开发环境。只是其中之一,希望对你有帮助!教你使用TypeScript开发Node.js应用首先配置package.json因为要在项目中使用Webpack,首先要创建一个package.json文件,我们可以使用npminit来生成{"name":"start","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo"Error:notestspecified"&&exit1"},"author":"","license":"ISC"}后面会用到。在开始添加的时候,我们在项目的根目录下创建一个src目录,添加一个main.js和information-logger.js文件,我们首先使用Javascript创建://src/information-logger.jsconstos=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.jsconstinformationLogger=require('./information-logger');informationLogger.logApplicationInformation();informationLogger.logSystemInformation();我们先运行一下:nodemain.js(先到src目录下),打印我笔记本电脑的信息:使用Webpack首先要做的就是配置Webpack的依赖,记得使用下面的命令加上-d,因为我们只是在开发环境:npmi-Dwebpackwebpack-cli我们没有使用webpack-dev-server,安装完成后我们创建webpack.config.js的配置文件'usestrict';module.exports=(env={})=>{constconfig={entry:['./src/main.js'],mode:env.development?'development':'production',target:'node',devtool:env.development?'cheap-eval-source-map':false,};returnconfig;};一开始我们不需要那么多配置配置。我们要使用它,首先改变package.json:"scripts":{"start":"webpack--progress--env.development","start:prod":"webpack--progress"},然后我们将应用程序可以通过任何命令构建(npmstart),它会创建一个dist/main.js,我们也可以使用webpack.config.js为输出指定不同的名称,当前目录结构应该如下:nodemon-dev-server为什么不用webpack,因为用不了,所以可以用nodemon来解决。它可以在我们开发过程中重启Node.js应用程序。我们先安装它,还需要-d。npmi-Dnodemon-webpack-plugin然后重新配置webpack.config.js。//webpack.config.js'usestrict';constNodemonPlugin=require('nodemon-webpack-plugin');module.exports=(env={})=>{constconfig={entry:['./src/main.js'],mode:env.development?'development':'production',target:'node',devtool:env.development?'cheap-eval-source-map':false,resolve:{//tellsWebpackwhatfilestowatch.modules:['node_modules','src','package.json'],},plugins:[]//requiredforconfig.plugins.push(...);};if(env.nodemon){config.watch=true;config.plugins.push(newNodemonPlugin());}returnconfig;};webpack监控配置会在我们更改文件时重建应用,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"},先使用TypeScript安装依赖:npmi-Dtypescriptts-loader@types/node@^10.0.0ts-loader(ts加载器)因为我们需要使用ts-loaderWebpack插件来编译我们的TypeScript,所以我们必须让Webpack知道我们使用ts-loader插件来处理TypeScript文件,并且更新之前的webpack。config.js//webpack.config.js'usestrict';constNodemonPlugin=require('nodemon-webpack-plugin');module.exports=(env={})=>{constconfig={entry:['./src/main.ts'],mode:env.development?'development':'production',target:'node',devtool:env.development?'cheap-eval-source-map':false,resolve:{//TellsWebpackwhatfilestowatchextensions:['.ts','.js'],modules:['node_modules','src','package.json'],},module:{rules:[{test:/.ts$/,use:'ts-loader',},],},plugins:[],//要求edforconfig.plugins.push(...);};if(env.nodemon){config.watch=true;config.plugins.push(newNodemonPlugin());}returnconfig;};tsconfig.jsonTypeScript配置文件://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"]}然后更改之前创建的js文件的扩展名://information-logger.tsimportosfrom'os';import{name,version}from'../package.json';exportclassInformationLogger{staticlogApplicationInformation():void{console.log({application:{name,version,},});}staticlogSystemInformation():void{console.log({system:{platform:process.platform,cpus:os.cpus().length,},});}}//main.tsimport{InformationLogger}from'./information-记录器';InformationLogger.logApplicationInformation();InformationLogger.logSystemInformation();现在目录结构应该是这样的,因为TypeScript比纯Javascript需要更多的努力,但是你仍然可以在新项目中尝试这种方法。如果大家有什么好的建议,欢迎在评论区留下你们的意见!
