角度处理 单独的 JavaScript 模块中的常见代码



在这里,我试图做一个实验,因此寻求对这种方法的优点和缺点的意见。

我们有3个项目(单独的角度SPA(。 他们使用一些常见的东西,比如现在的日志记录。 由于我不想维护相同代码的 3 个不同副本,而且我的项目也没有版本控制问题。

所以我创建了一个javascript模块,它像这样导出一个LoggingService。

在 Logger.ts 文件中(此文件不在单独的文件夹外部库中的 angular 的 scr 文件夹(

import { Injectable } from '@angular/core'
@Injectable()
export class LoggerService{
Log(message){
console.debug(message)
}
}

在我的角度模块中,我所做的是导入此文件并注册为服务。

在应用程序中。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { LoggerService } from './../../externallib/Logger' //**This is my custom library**
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [ LoggerService ],
bootstrap: [AppComponent]
})
export class AppModule { 
constructor()
{
}
}

在我的组件中,我称此服务为LoggerService。 这工作得很好。

请向我提供这种方法的缺点。

另外:不需要对此通用代码进行版本控制

这个问题可能太容易成为 s.o 的答案,但无论如何我都会冒险回答。我认为如果你一个人工作,这很好。缺点可能是:

  • ext 库中的重大更改(由于没有版本控制(

  • 某人(您(将一条或另一条路径移动到另一条路径

做一个私有的npm模块可以解决这些问题。

CLI 现在也可以生成一个库项目,在内部使用 ng-packagr(它本身已经很棒了(,你可能想在 NG 6 中查找更改。

缺点:如果你的库没有提交到你的项目中,那么当有人从 git 克隆你的项目时,它不会编译。(您需要在文档中写下有人必须手动将LoggerService放入"您的项目附近"的正确目录中(

更好的方法:创建此库的单独 git 存储库,并将其在您的项目中设置为目录中的 git SUBMODULE,例如./src/commons/services/LoggerService

最新更新