nodejs.为初学者导出

JavaScript,Typescript或NestJS框架,寻找创建导出模块。我们将通过简单的Cross Repository进口和导出模块和课程。第一部分将演示JavaScript导出,第二部分将用于导出TypeScript,最后部分将展示如何使用NestJS模块导出为NestJS框架的服务。

开始

创建NPM模块

要开始使用NodeJS,请首先初始化具有命令的空NodeJS存储库:

#bash   
    $npm init -y 

这将创建包含有关该项目的基本信息的Package.json文件,并且将是nodejs项目的基础。命令参数--y可选地将package.json设置为默认值。

{
 "name": "export_js_tut",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "",
 "license": "ISC",
 "type": "module"
}

文件结构

文件中必须使用导出语句打包到模块中的任何功能或类,通过导入访问另一个文件。这适用于项目范围内外。

一个基本架构应该是合适的并且足以处理所有类型的NodeJS文件导出。默认情况下,CommonJS模块加载程序将在从目录路径导入时自动加载索引文件,因此,我们需要确保在包含导出模块的目录中存在索引文件。该项目应在root下面包含一个“src”目录,其中包含模块函数和类的所有源文件,应组织这些模块,依赖于索引文件中的依赖项。项目根目录还应包含索引文件作为程序入口点,将文件导出暴露给外部项目。此外,对于TypeScript模块,项目根目录应包含存储所有已转换的JavaScript文件的“Dist”目录。

以下是每个级别的文件导出示例。首先,我们有一个源文件,它包含要导出的函数或类,由关键字“导出”声明。

#src/example_export.ts
export function hello(){
   console.log("hello world")
}

接下来,src / index.ts文件是组织文件导出的中间阶段并解析任何依赖项。

#src/index.ts
export { hello } from "./example_export"

最后,index.ts以下面的语法在SRC / index.ts中声明的所有导出。 src / index.ts将自动推断为导入路径。

#index.ts
export * from "./src"

JavaScript出口

JavaScript导出简单且简单。确保项目遵循与以前说明的相同结构。由于index.js被指定为主入口点,要测试导出,我们只需在package.json运行“node index.js”中的启动脚本。

commonjs和es模块

NodeJS使用CommonJS加载器默认格式化模块。那些更熟悉的ES模块加载器的人还可以将环境配置为使用ES模块。

以下是使用commonjs导出的示例。一切都需要包含在module.exports对象中要导出。进口是通过要求完成的。

#index.js @js_export_tut
module.exports = {
  ExampleClass: require("./src/example.js"),
}

程序员可以选择通过在包中指定“键入”包.json中使用es模块。

#package.json @js_export_tut
   "description": "",
   "main": "dist/index.js",
   "type": "module",
   "scripts": {
     "build": "tsc p .",
     "start": "node dist/index.js"
   },

以下是使用ES模块导出的示例。

#index.js @js_export_tut
export {DemoClass} from "./src/demo.js"

类型填充导出

nodejs. for typerscript.

nodejs.无法直接解释打字代码。 CypeScript代码需要转发给javascript以由客户端项目执行,因此需要将打字编译器添加到导出项目中。按照Get Stange Section开始创建Royscript Export项目。

可以使用依赖性管理器安装levelscript编译器,我们在我们的示例中我们将继续使用NPM我们选择依赖性管理器。

typescriptlang.org/download.用于其他编译器安装选项。

添加类型签字编译器

我们将全局安装打字编译器(TSC),以便直接在命令行中使用。

#bash   
    $npm install -g typescript

要添加到项目包,请使用npm运行此命令:

#bash   
    $npm install typescript --save-dev   

打字编译器(TSC)通过命令行选项或通过配置文件进行配置。可以使用以下命令生成类型键项配置文件(tsconfig.json):通过命令行选项或通过配置文件配置打字编译器(TSC)。可以使用以下命令生成类型键项配置文件(tsconfig.json):

#bash   
    $tsc --init                    

Tsconfig.json初始化了填写的一些默认选项。在此上下文中建议使用两种附加配置选项。首先,指定输出转发的JavaScript的目录,传统上该文件夹名为“dist”。此文件夹将在编译中自动生成并保留源文件结构。否则,转发的JavaScript文件将保存到与其对应的打字源文件相同的目录。 (可选)添加一个包含或排除声明要转换的文件或目录,而不是默认情况下要编译根目录下的所有打字文件。

这是基本TSConfig文件的示例。在该示例中,为include语句指定了“src”目录和“index.js”文件,只会将这些位置中的打字文件中的打字文件进行转帐。

#tsconfig
{
 "compilerOptions": {
   "target": "es5",                         
   "module": "commonjs",                                  
   "strict": true,                    
   "esModuleInterop": true,             
   "skipLibCheck": true,                
   "forceConsistentCasingInFileNames": true,
   "outDir": "./dist",  
 },
 "include": ["src", "index.ts"],
 "exclude": []
}

编辑package.json.

应对Package.JSON进行一些小修改,以使项目工作。将要由NodeJS执行的Dist / index.js更改程序入口点。这是index.ts的已转帐JavaScript版本的位置。添加构建并启动脚本。“TSC -P”将通过将tsconfig作为配置文件编译键盘。由于我们使用Dist / index.js作为程序条目,因此我们将执行Dist / index.js作为程序启动脚本。

#package.json @ts_export_tut
 "main": "dist/index.js",
 "scripts": {
   "build": "tsc -p .",
   "start": "node dist/index.js"
 },

重要的提示

使用RiceScript Exports时,客户端项目将在使用导出项目时只需要转置的JavaScript代码。在本教程中,我们正在采用在导出项目中执行频道的方法,并检查最新版本的“dist”到git,直接由客户端项目使用。

参考

Nestjs模块导出

Nestjs是创建模块的巨大框架选择。 Nestjs将不同类型的类分隔,例如使用它的声明器的控制器和服务,并且它通过将依赖项注入(di)应用于模块来解决类之间的依赖性。本节将演示如何在一个项目中导出NestJS模块的一个简单示例,并将其包含到另一个巢角项目中。

开始

要创建Nestjs导出模块,请首先创建新的Nest项目。

#bash   
    $npm i -g @nestjs/cli
    $nest new <> 

nest Framework很好地设置了完整的打字环境并处理编译器配置。将程序结构更改为导出模块以便为其他项目提供服务,可以使用一些小调整来轻松完成。我们想在上一节中的相同文件结构之后设置项目。接下来,删除NestJS提供的Main.ts文件以引导当前项目,因为要由外部项目导出和执行程序模块,因此不会因此不需要。在Package.json中指定“Dist / Index.js”的程序入口点,如上一节。

模块导出

在此示例中,GreetService取决于MessageService。出口模块有两种简单的方法,利用NestJS的依赖注入。

#src/greet.service.ts @export-nest-tut
@Injectable()
export class GreetService {
   constructor(private message: MessageService){}
   greet(): void { ...message.getHello()... }
}
#src/message.service.ts @export-nest-tut
@Injectable()
export class MessageService {
   getHello(): string {...}
}

1. 具有已解决的依赖项的导出模块

导出项目可以将提供程序和控制器封装到NestJS模块文件中。这允许导出项目以处理依赖项,然后将其导出到另一个项目之前,并且是具有许多相互依存服务的模块的理想选择,客户端项目不需要所有服务。

该模块将在MessionService和BreakService之间解析依赖关系,并导出客户端项目使用的repletService。

#src/export.module.ts @export-nest-tut
@Module({
 providers: [MessageService, GreetService],
 exports: [GreetService]
})
export class ExportModule {}

ExportModule和GreetService会在SRC / Index.TS中组织成导出语句。

#src/index.ts @export-nest-tut
export { ExportModule } from './export.module';
export { GreetService } from "./greet.service";

在客户端项目中,ExportModule可以直接集成到Imports下的客户端自己的巢模块。客户端可以自由地注入和导出服务ExportModule Exports  –迎接您自己的提供商和控制器。

#src/import.module.ts @import-nest-tut
import { ExportModule } from "export-nest-tut"
@Module({
 imports: [ExportModule],
 controllers: [AppController],
})
export class AppModule {}

2. 独立出口服务

导出项目可以独立导出服务而不会解决其依赖项,并让客户端库处理依赖项。在这种情况下,需要导出所有依赖服务提供商,并且客户端也应该意识到需要在同一模块下的一切。

在此处的示例中,不再需要Export.modules.ts。相反,需要导出两个服务。

#src/index.ts @export-nest-tut
export { GreetService } from "./greet.service";
export { MessageService} from "./message.service"

在客户端项目中,通过在同一模块下,提供者或控制器需要由提供者或控制器列出未解决的依赖关系的服务。客户端项目可以作为自己的服务使用它们。

#src/app.modules.ts @import-nest-tut
import { AppController } from './app.controller';
import { MessageService, GreetService } from "export-nest-tut";
@Module({
 providers: [ MessageService, GreetService],
 controllers: [AppController],
})
export class AppModule {}

重要的提示

inestjs将启动一个git忽略文件列出“dist”目录。我们希望删除,因为DEST包含客户端脚本所需的所有代码。可选地,我们可以考虑删除除了发布中的Dist文件夹和Package.json以外的所有内容,以减少客户端程序导入大小。客户端程序不需要Dist文件夹之外的任何内容。

参考

结论

NodeJS中的导出很有用,因为它是模块化项目和重构在代码中共享的项目和重构的标准方法。项目导出共享文件可能是降低各个项目之间代码重复的好方法。我们希望这篇文章能够有助于提供清晰的概述和指南,帮助您有兴趣创建用于创建JavaScript的模块导出项目的新开发人员,打印或NestJS开始于其项目。