首页
学习
活动
专区
圈层
工具
发布

角4应用
EN

Code Review用户
提问于 2017-09-20 15:14:28
回答 2查看 1.3K关注 0票数 0

我用角4创建了一个应用程序,我用角CLI设置了角应用程序。有人能检查一下这个并提出一些改进建议吗?

以下是我使用的文件夹结构:

AppModule中,我有以下代码:

代码语言:javascript
复制
import { NgModule, CUSTOM_ELEMENTS_SCHEMA, Injector, APP_INITIALIZER } from '@angular/core';
import { HttpModule } from '@angular/http';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { NgBootstrapFormValidationModule } from 'ng-bootstrap-form-validation';
import { AppRoutingModule } from './app.routing';
import { SharedModule } from './shared/shared.module';
import { AuthenticationService, DashboardService, NotificationService, AlertService, KnowledgeBaseService, AssetService } from './shared/services/index';
import { AuthGuard } from './shared/guards/auth.guard';

import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
import { MainComponent } from './main/main.component';

import { AppPreBootstrap } from '../AppPreBootstrap';

export function appInitializerFactory(injector: Injector) {
    return () => {
        return new Promise<boolean>((resolve, reject) => {
            resolve(AppPreBootstrap.getApplicationConfig());
        });
    }
}

@NgModule({
    declarations: [     
        AppComponent

    ],
    imports: [
        BrowserModule,
        BrowserAnimationsModule,
        HttpModule,
        FormsModule,
        ReactiveFormsModule,
        NgBootstrapFormValidationModule.forRoot(), 
        SharedModule,      
        RouterModule,
        AppRoutingModule      
    ],
    providers: [
        AuthenticationService,
        DashboardService,
        NotificationService,
        AlertService,
        KnowledgeBaseService,
        AssetService,
        AuthGuard,
         {
            provide: APP_INITIALIZER,
            useFactory: appInitializerFactory,
            deps: [Injector],
            multi: true
        }
    ],
    bootstrap: [AppComponent],
    schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule { }
EN

回答 2

Code Review用户

发布于 2017-12-05 14:39:51

我只会做几个美化的改变。我讨厌巨大的app.modules,所以我喜欢把所有的核心导入到core.module中,然后导入到app.module中,就像描述的这里一样。

在“核心功能模块”下

我现在知道最近的角cli生成了什么,但我喜欢预先考虑我的应用程序将包括哪些模块。如果将有许多组件,并且您可以轻松地将其中一些组件分组,请考虑创建更多的模块(延迟加载)。

此外,请考虑将所有构造(数据报警器、时间选择器、警报)组件放在何处并导出它们。在上面的链接上阅读更多关于共享模块的信息,您已经有了一个很好的设置。但是共享模块不应该包含在app.module中,只应该包含在功能模块中(如果您决定这样做的话)

票数 4
EN

Code Review用户

发布于 2018-11-13 23:01:53

正如注释所建议的,通过提供的示例,这里没有太多的代码审查。如果您正在寻找改进未来开发的方法,请尝试给它一个read 角型导轨。风格指南有很多的Do's和Don‘’s,它们容易阅读,有助于您更好地组织您的应用程序。

指南中一些有趣的要点是

当您希望保持应用程序模块尽可能干净时,核心模块和共享模块是有用的--我使用它加载任何“全局提供程序”(不过,对于角度为6/7的应用程序模块,这可能会因为ProvidedIn注射型上的选项而改变。

功能模块是随着时间的推移,你只能在项目中获得价值的东西。当事情开始发展的时候,你会注意到你可能需要交叉分享你的应用程序的特性/部分。将事物分解到他们自己的模块中可以实现以下几点:

  • 您可以为该模块进行路由,并且它可以处理它的相对路由。
  • 它可以懒散地从“父”路由加载,因此只有当用户点击应用程序时才会下载启动所需的代码。
  • 一旦你的应用程序成长起来,你就更容易找到代码了。

最后,我将注意到,使用角CLI可以帮助完成许多在其中创建特性模块和组件的任务。它为你做了许多有益的小事情,帮助你加速发展。

希望这能帮助你获得一些棱角分明的核心技能,并养成一些良好的干净的代码习惯。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/176160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档