Javascript 在angular中使用多个模块的好处是什么?

Javascript 在angular中使用多个模块的好处是什么?,javascript,angularjs,module,angular-ui-router,Javascript,Angularjs,Module,Angular Ui Router,我熟悉Angular Js,最近我看到在一些项目中,在主模块中创建并组装了多个Angular模块 代码看起来像 angular.module("main",['main.sub1','main.sub2','main.sub2']) angular.module("main.sub1",[]) angular.module("main.sub2",[]) angular.module("main.sub3",[]) 我的问题是 什么时候可以采用这种拆分模块的方式 它如何有用 这是否会影响

我熟悉Angular Js,最近我看到在一些项目中,在主模块中创建并组装了多个Angular模块

代码看起来像

angular.module("main",['main.sub1','main.sub2','main.sub2'])

angular.module("main.sub1",[])

angular.module("main.sub2",[])

angular.module("main.sub3",[])
我的问题是

  • 什么时候可以采用这种拆分模块的方式
  • 它如何有用
  • 这是否会影响路由[routeProvider/stateProvider](由于模块的定义不同,我是否可以分别为每个模块放置路由提供程序或状态提供程序)
  • 如果我在子模块中注入依赖项,那么默认情况下它们会注入主模块吗
  • 我读的博客很少,但我不能得到一个清晰的认识

    你能带我过去吗

    1.何时接近这种模块拆分方式

    最好是永远。但除非你有多个应用程序使用完全相同的代码,否则你真的不需要这样做,也许你在几个应用程序中处理身份验证的方式是相同的,将公共代码放入服务并将该服务作为自己的模块是有意义的。这提供了代码重用,我们都知道代码重用是好的

    2.它如何有用

    再次强调,可重用性是这里的关键词。你不想到处写重复的代码。代码复制是完全错误的,并且会导致更昂贵的维护和更容易出错的代码。 另一个优点是,应用程序明确地概括了应用程序的依赖关系,并划分了应用程序不同部分的职责。代码重用和关注点分离是编写可维护代码的基本实践

    将应用程序划分为模块的另一个原因是性能。现在我正在开发一个应用程序(网络商店),它由两个主要部分组成:一个部分(应用程序)面向普通用户/买家/卖家,另一个应用程序面向管理员。现在,用户应用程序需要一些脚本/库,而管理员应用程序不需要,反之亦然。例如,管理员应用程序使用剑道网格,它需要一个
    kendo.all.min.js
    脚本,缩小后的脚本大小为1.7MB!现在,强制该站点的所有访问者下载1.7MB的繁重脚本有意义吗

    3.这是否会影响路由[routeProvider/stateProvider](由于模块的定义不同,我可以放置路由提供程序还是状态提供程序 (每个单独适用)

    对。理想情况下,您的应用程序将具有不同的路由/状态配置,因此每个应用程序都有自己的
    app.config()
    ,这意味着您可以使用共享模块为每个应用程序定义单独的路由。根据我的经验,您希望进入自己模块的主要内容是服务和指令,而不是应用程序路由

    4.如果我在子模块中注入依赖项,默认情况下它们是否会注入主模块


    对。如果将依赖项
    X
    注入模块
    a
    ,并且模块
    a
    将被另一个模块
    B
    使用,则
    B
    也将继承依赖项
    X

    模块是Angular应用程序功能的核心。模块包含我们需要的所有代码 为我们的特定应用程序编写,因此,往往会以一种整体的方式发展壮大。尽管这种趋势 还不错(模块是减少全局范围噪声的一个很好的方法),我们可以划分模块

    关于何时创建模块以及何时嵌套功能,有几种不同的观点 在全局模块中。以下两种方法都是通过 模块:

    1。何时采用这种方式拆分模块?

    当您想按功能或路由分离创建应用程序逻辑时,需要这样做,因为当您的代码在模块上分离时,很容易理解、测试等。模块模式的角度模块系统实现

    模块是任何健壮应用程序体系结构的一个组成部分,通常有助于保持项目的代码单元干净地分离和组织

    2.它有什么用处?

    首先,对于来自面向对象背景的开发人员来说,它比真正的封装思想要干净得多,至少从JavaScript的角度来看是这样

    • 你的另一半是团队中的新开发人员,他被要求修复你应用程序中众多屏幕之一的错误

      • 开发人员在目录结构中进行筛选,看到所有控制器、模型和服务组织得井井有条。不幸的是,它并没有告诉他/她哪些对象是相关的或相互依赖的

      • 如果开发人员希望在某个时候重用某些代码,他们需要从一堆不同的文件夹中收集文件,并且总是会忘记其他文件夹中的代码

    3.这是否会影响路由[routeProvider/stateProvider](由于模块的定义不同,我可以分别为每个模块放置路由提供程序或状态提供程序)

    我们可以使用的另一种分解应用程序的方法是按路径划分模块。这种崩溃 允许我们编写专注于每个路由的功能的独立测试。通过can总线进行模块化 根据项目的不同,使其更有意义;它允许我们有效地划分我们的功能 当我们处理许多独立的路线时。 例如:

    angular.module('myApp.home', []);
    angular.module('myApp.login', []);
    angular.module('myApp.account', []);
    angular.module('myApp', [
    'myApp.home',
    'myApp.login',
    'myApp.account'
    ]);
    
    当我们处理大量路由时,这种模块化特别有意义 和/或当路线之间没有太多交叉时

    4.如果我在子模块中注入依赖项,默认情况下它们会注入主模块吗?


    简言之:是。:)

    我也有这个问题。除此之外,还有一件事需要补充,与性能、内存管理或垃圾收集相比,还有其他优势吗(例如,当用户从一个子应用移动到另一个子应用时,等等)?如果是,怎么做?我也是