在这里,我试图进行一项实验,因此寻求对这种方法的优势和劣势的意见。
我们有3个项目(单独的角度SPA)。 他们使用了一些常见的东西,现在就说吧。 由于我不想维护相同代码的3个不同副本,而且我的项目也没有版本问题。
所以我创建了一个javascript模块,它可以像这样导出一个LoggingService。
在Logger.ts文件中(此文件位于单独文件夹externallib中的角度的scr文件夹之外)
import { Injectable } from '@angular/core'
@Injectable()
export class LoggerService{
Log(message){
console.debug(message)
}
}
在我的角度模块中,我所做的是导入了这个文件并注册为服务。
在app.module.ts
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。 这完全没问题。
请告诉我这种方法的缺点。
此外:此公共代码的版本控制不是必需的
答案 0 :(得分:0)
缺点:如果您的库没有提交到您的项目中,那么当有人从git克隆您的项目时它将无法编译。 (您需要在文档中写入某人必须手动将LoggerService放入“项目附近”的正确目录中)
更好的方法:创建此库的单独git存储库,并在项目中将其设置为目录中的git SUBMODULE,例如./src/commons/services/LoggerService
答案 1 :(得分:0)
这个问题可能太容易受到s.o的回答,但我还是冒着回答的风险。我认为如果你独自工作,这很好。缺点可能是:
打破ext lib中的更改(由于没有版本控制)
某人(您)将一个或另一个移动到另一个路径
执行私有npm模块会解决这些问题。
CLI现在也可以使用ng-packagr(内部已经非常棒)生成一个库项目,你可能想查找NG 6中的更改。