Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >教程|在 Angular 4 中加载功能模块(上)

教程|在 Angular 4 中加载功能模块(上)

作者头像
疯狂的技术宅
发布于 2019-03-28 07:31:14
发布于 2019-03-28 07:31:14
2.8K0
举报
文章被收录于专栏:京程一灯京程一灯

过去几年来,Angular 作为单页 Web 应用程序的开发框架变得越来越流行。尽管 Angular 4 最初是为 JavaScript 而设计的,但它在 Angular 2 基础之上添加了对更多语言的支持,比如 Dart 和 Typescript。

本教程将介绍如何在 Angular 中开发和加载功能模块。尽管对于较小的应用程序,根模块就足够用了,但对于更大更复杂的应用程序,需要创建功能模块。还需要能够高效地加载模块,以获得最佳应用程序性能。

请注意,本教程适用于熟悉使用 Angular 进行基本 Web 应用程序开发的开发人员。

Angular 中的功能模块

单页 Web 应用程序在启动时仅呈现一个 HTML 页面。除了该 HTML 页面之外,服务器还会向客户端发送一个应用程序引擎。该引擎会控制整个应用程序,包括处理和加载 HTML 页面。

一个 Angular 应用程序由以下部分组成:

  • 模块
  • 组件
  • 模板
  • 元数据
  • 数据绑定
  • 指令
  • 服务
  • 依赖注入

每个 Angular 应用程序都至少有一个模块,称为根模块。您可以引导根模块来启动 Angular 应用程序。对于小型应用程序,只需要根模块和一些组件。在构建更复杂的中到大型应用程序时,会向应用程序添加功能模块。

功能模块根据业务需求被组织在一个更大的应用程序中。每个模块都包含它所需的特性和功能,而且一些模块被设计为可以重复使用。

关于示例应用程序

本教程将介绍使用 Angular 4 创建一个中型 Web 应用程序的过程。示例应用程序在 4 个功能区域呈现不断更新的信息:Markets、Sports、Weather 和 Currency。除了为每个区域开发特性模块之外,还可以考虑和实现 3 种应用程序加载技术。

加载技术

有效的加载策略是开发一个单页应用程序成功的关键。对于示例应用程序,将结合使用 3 种常见的加载技术来实现一种混合加载策略:

  • 贪婪加载:在贪婪加载场景中,所有模块和功能都在应用程序启动时加载。对根模块始终采用贪婪加载,在一些情况下,也会对其他功能使用贪婪加载。
  • 惰性加载:随着应用程序的功能区域的构建,应用程序的大小会不断增加。在某个时刻,应用程序的大小会达到一个阈值,然后应用程序的加载开始变缓。惰性加载用于减少中大型应用程序的初始加载时间。在示例应用程序中,将使用惰性加载来满足以下应用程序需求:
    • 仅在用户请求时加载应用程序区域。
    • 加快仅访问某些(优先)区域的用户的加载速度。
    • 扩展应用程序功能而不增加初始加载包的大小。
  • 预加载:在预加载场景中,主应用程序启动所有标为贪婪加载的模块,然后几乎立即在后台加载 。当用户导航到这些辅助模块中的某个模块时,就会加载该模块并准备就绪。

出于本教程的目的,假设应用程序用户最感兴趣的是获取有关金融市场和体育项目的更新。您首先要加载这些模块,随后加载货币和天气模块。

前提条件

要掌握本教程,需要在开发机器上安装两个工具:

  • Node
  • Angular CLI

输入命令 ng -v,以便找到您当前使用的 Angular CLI 和 Node 的版本。如下所示,我使用的是 Node 7.9.0 和 Angular CLI 1.0.2。

@angular/cli: 1.0.2 node: 7.9.0 os: win32 x64 githut上的源代码:https://github.com/suresht1/NG_Loading_Feature_Modules

练习 1:贪婪加载

示例应用程序目前有两个模块:AppModule 和 BaseModule。AppModule 是根模块,BaseModule 是功能模块。BaseModule 包含两个功能区域:Markets 和 Sports。我们指定对这些应用程序执行贪婪加载,所以 AppModule 会在应用程序启动时调用 BaseModule。

让我们来分析一下该应用程序: 1. 如果尚未下载源代码,请下载它。 2. 将 Angular4BaseModules 源文件(位于 Angular4TutorialSrc.zip 中)解压到一个空目录位置。我的目录名为 …/fm。 3. 转到 …/fm 目录并输入命令 npm i。这会在 …/fm 文件夹中创建 node_modules 目录,即 …/fm/node_modules。 4. 运行命令 ng serve。

您会看到应用程序在默认端口 4200 中成功运行,以及一条与此消息类似的消息:

图 1. 应用程序运行在端口 4200

ng 是一条 Angular CLI 命令,您将使用它构建和处理应用程序代码。打开 Chrome 浏览器并输入 URL http://localhost:4200。您会看到该应用程序正在运行。如果单击 Home 图标,将会看到 Markets 的功能区域:

图 2. Markets 的用户界面

如果单击 Sports,将会看到 Sports 的功能区域:

图 3. Sports 的用户界面

现在转到 fm/src/app 目录中的应用程序代码。这是该目录的快照。

图 4. 应用程序目录结构

在您的应用程序目录中,打开文件 app.component.html。用户单击 Markets 链接时,应用程序会调用 /markets 路径。用户单击 Sports 链接时,应用程序会调用 /sports 路径。

图 5. 主应用程序中的路径

打开文件 app-routing.module.ts,如下所示。

图 6. app-routing.module.ts

在调用 /markets 和 /sports 路径时,会调用 MarketComponent 和 SportsComponent。如果未指定路径,数组中的第一项会重定向到 /markets 路径。

要确认目前实现的应用程序功能,可在浏览器中返回到 http://localhost:4200。在 Windows 机器上,按下 Fn+F12。在 Mac 机器上,按下 Command->Option->i。现在您会看到 Chrome 开发人员工具 GUI。查看 Sources/top/ng:// 部分,然后重新加载 URL。如图 7 所示,您会看到在重启应用程序时自动加载了 AppModule 和 BaseModule。

图 7. 在 Google Chrome 开发人员工具中查看源代码


小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 京程一灯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
教程|在 Angular 4 中加载功能模块(下)
假设多个团队正在为此应用程序开发模块。您的离岸团队刚交付了 Weather 和 Currency 模块。您的任务是将新模块合并到主应用程序中。
疯狂的技术宅
2019/03/28
2.7K0
教程|在 Angular 4 中加载功能模块(下)
Angular 从入坑到挖坑 - 模块简介
Angular 入坑记录的笔记第七篇,介绍 Angular 中的模块的相关概念,了解相关的使用场景,以及知晓如何通过特性模块来组织我们的 Angular 应用
程序员宇说
2020/06/29
2.1K0
Angular 从入坑到挖坑 - 模块简介
Angular实战之使用NG-ZORRO创建一个企业级中后台框架(进阶篇)
  上一篇文章我们讲了如何在创建的Angular项目中快速引入ng-zorro-antd企业中台组件库,并且快速构建后台管理页面框架模板。这一章主要介绍的是如何在创建好的后台管理页面框架的快速生成NG-ZORRO相关的组件,并且介绍Angular相关目录结构、生命周期函数,路由配置和使用相关知识点,以及如何使用Angular CLI使用一行代码快速添加Angular应用的新功能。让你快熟的构建一个属于自己的NG-ZORRO后台管理框架,注意我们的前端代码的编写全部都是在VS Code上面编写。
追逐时光者
2020/12/31
4.9K0
模块化开发 Angular 应用 [含懒加载]
然后,我们将学习怎么使用我们的模块来启用延迟加载,从而使应用更小,使用户体验更好。
Jimmy_is_jimmy
2022/09/19
3.4K0
模块化开发 Angular 应用 [含懒加载]
Angular 路由配置(预加载配置,懒加载配置)
(1)RouterModule对象提供了两个静态的方法:forRoot()和forChild()来配置路由信息。
玖柒的小窝
2021/11/04
3.6K0
Angular学习(01)-架构概览
官方的教程,其实已经很详细且易懂,这里再次梳理的目的在于复习和巩固相关知识点,刚开始接触学习 Angular 的还是建议以官网为主。
请叫我大苏
2019/03/19
4.2K0
Angular学习(01)-架构概览
一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序
现在我们可以app.component.html用这个替换:Angular是由Google开发的AngularJS框架的新版本。它带有一个完整的重写,以及各种改进,包括优化构建和更快的编译时间。在这个Angular 5教程中,我们将从头开始构建一个笔记应用程序。如果您一直在等待学习Angular 5,本教程适合您。
WindCoder
2018/09/19
45.1K0
一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序
Angular 2 模块(Modules)
Angular 应用是模块化的,Angular 有自己的模块系统,叫做 Angular 模块 or NgModules。 模块 . 每个 Angular 应用至少有一个模块——根模块,通常叫做
孙亖
2018/06/06
1.1K0
angular知识点梳理第一篇
文章目录 背景介绍 初识Angular 官网 学习前提知识 ts官网 环境 node官网 创建一个angular项目 安装angular脚手架 创建项目 启动项目 启动默认页 初始化编辑器 vscode安装angular插件 认识项目目录 认识入口配置文件 写到最后 背景介绍 从今天开始,我将会更会关于angular的内容,很久没有更新了帖子了,因为一直使用的一些技术都不算是比较新的技术,所以也没有进行一个更新,最近讲angular刷了一遍,这里简单的记录一下整个的整理知识点的过程,也谈一下angular
何处锦绣不灰堆
2022/05/09
9400
angular知识点梳理第一篇
如何在 Windows 上安装 Angular:Angular CLI、Node.js 和构建工具指南
本文翻译自How to Install Angular on Windows: A Guide to Angular CLI, Node.js, and Build Tools,作者为Ahmed Bouchefra
ccf19881030
2024/05/24
2.5K0
如何在 Windows 上安装 Angular:Angular CLI、Node.js 和构建工具指南
Angualr2 之 angular模块Angular 模块化提供服务特性模块 - 业务上的最佳实践(n)共享模块XxxModule.forRoot配置核心服务知识点
Angular 模块是带有 @NgModule 装饰器的函数。 @NgModule接收一个元数据对象,该对象告诉 Angular 如何编译和运行模块代码。
贺贺V5
2018/08/21
2.5K0
Angular 从入坑到挖坑 - Angular 使用入门
angular 入坑记录的笔记第一篇,完成开发环境的搭建,以及如何通过 angular cli 来创建第一个 angular 应用。入坑一个多星期,通过学习官方文档以及手摸手的按教程敲官方的快速上手项目,很像后端,嗯,完美的契合了我这种后端开发人员。
程序员宇说
2020/02/24
2.3K0
Angular 启用预加载
在使用路由延迟加载中,我们介绍了如何使用模块来拆分应用,在访问到这个模块的时候, Angular 加载这个模块。但这需要一点时间。在用户第一次点击的时候,会有一点延迟。
玖柒的小窝
2021/11/03
1.8K0
Angular 启用预加载
Angular10配置webpack打包 「详细教程」
对于 Angular 项目,推荐使用 angular-cli 创建打包项目 Angular 会默认帮我们配置。 但是有特殊的需求时就显然不是很灵活,比如想分割一些较大的打包文件、分析每个打包文件组成,自定义webpack一些参数的时候就发现无从下手。 对许多项目的常见依赖项是日期库moment.js 。 这包括使用语言环境的功能,但是,它大大增加了整体捆绑软件的大小。这些都是需要我们优化的地方。
睡魔的谎言
2021/01/21
5.8K0
了解 Angular 开发的内容
阅读本文,是在你了解 Angular 基本知识的前提下,如果读者还不了解,请前往官网了解。
Jimmy_is_jimmy
2022/04/15
1.2K0
了解 Angular 开发的内容
Angular框架
AngularJS v2.x~v8.x官网:https://angularjs.io
张哥编程
2024/12/19
2630
如何使用Angular CLI和PM2运行Angular应用程序
Angular CLI是Angular框架的命令行界面,用于在开发过程中在本地创建,构建和运行应用程序。
知忆
2021/06/24
2.7K0
Angular 从入坑到挖坑 - 路由守卫连连看
Angular 入坑记录的笔记第六篇,介绍 Angular 路由模块中关于路由守卫的相关知识点,了解常用到的路由守卫接口,知道如何通过实现路由守卫接口来实现特定的功能需求,以及实现对于特性模块的惰性加载
程序员宇说
2020/06/04
4.4K0
使用 Angular Transfer State 的一个具体例子
Using TransferState API in an Angular v5 Universal App
玖柒的小窝
2021/12/06
8170
使用 Angular Transfer State 的一个具体例子
Angular-Cli脚手架介绍、安装并搭建项目
最简单的使用方式参照以下 StackBlitz 演示,也推荐 Fork 本例来进行 Bug Report,注意不要在实际项目中这样使用。
江一铭
2022/06/17
2.2K0
Angular-Cli脚手架介绍、安装并搭建项目
推荐阅读
相关推荐
教程|在 Angular 4 中加载功能模块(下)
更多 >
交个朋友
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档