角度处理单独的javascript模块中的常用代码

时间:2018-05-15 18:05:09

标签: angular

在这里,我试图进行一项实验,因此寻求对这种方法的优势和劣势的意见。

我们有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。 这完全没问题。

请告诉我这种方法的缺点。

此外:此公共代码的版本控制不是必需的

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这个问题可能太容易受到s.o的回答,但我还是冒着回答的风险。我认为如果你独自工作,这很好。缺点可能是:

  • 打破ext lib中的更改(由于没有版本控制)

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

执行私有npm模块会解决这些问题。

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