Angular 应用打包和部署

简介: Angular 应用打包和部署

应用打包
对 Angular 应用打包,只需要执行下面的命令即可:

ng build

命令输出结果如下:

chunk {
   main} main.js, main.js.map (main) 22.4 kB [initial] [rendered]
chunk {
   polyfills} polyfills.js, polyfills.js.map (polyfills) 141 kB [initial] [rendered]
chunk {
   runtime} runtime.js, runtime.js.map (runtime) 6.15 kB [entry] [rendered]
chunk {
   styles} styles.js, styles.js.map (styles) 12.5 kB [initial] [rendered]
chunk {
   vendor} vendor.js, vendor.js.map (vendor) 2.22 MB [initial] [rendered]
Date: 2022-06-05T08:13:29.036Z - Hash: 320a98b795509f74dda8 - Time: 6897ms

构建过程会启动 Angular 编译器,主要收集应用中的所有 TypeScript 源文件,转换为 JavaScript 文件。在默认配置下,编译器会将 JavaScript 文件输出到 dist 文件夹。
image.png
输出文件夹主要包含下列文件:

favicon.ico: 应用的图标,如显示在浏览器标题栏上
index.html: 应用的主 HTML 文件
main.js: 包含了开发的应用代码
polyfills.js: 提供遗留浏览器的兼容支持
runtime.js: 包含了 Angular CLI 相关的代码,能够运行其他文件
styles.js: 包含了应用的全局样式
vendor.js: 包含了 Angular 框架和其他第三方类库
此外,dist 文件夹还包括了 .map 结尾的文件,主要用于调试目的。

在构建生成的 index.html 文件中,引用了编译器输出的 JavaScript 文件:

<!doctype html>
<html lang=“en”>
<head>
  <meta charset="utf-8>
  <title>BookStore</title>
  <base href=/>
  <meta name="viewport" content="width=device-width, initial-scale=1>
  <link rel="icon" type="image/x-icon" href=“favicon.ico”>
</head>
<body>
  <app-root></app-root>
  <script src="runtime.js" defer></script>
  <script src="polyfills.js" defer></script>
  <script src="styles.js" defer></script>
  <script src="vendor.js" defer></script>
  <script src="main.js" defer></script>
</body>
</html>

Angular CLI 构建命令可以在两种模式下运行: 开发模式和生产模式。 默认使用开发模式,如直接运行 ng build。如果选择生产模式,需要添加命令选项:

ng build --configuration=production

或者使用快捷命令选项:

ng build —prod

使用生产模式构建应用,输出文件如下所示:

image.png
与使用开发模式构建应用不同的是,输出的文件不再包含 .map 文件,不需要对生产代码进行调试。另外,输出的 JavaScript 文件和 CSS 文件,都包含了一个哈希值,可以让浏览器缓存的文件尽快失效,让新文件发挥作用。

限制包大小
随着应用功能的增多,构建应用的输出文件会越来越大。我们可以在 angular.json 文件中增加一些配置项,限制应用包文件的大小。例如:

"budgets": [
    {
   
      "type": “initial”,
      "maximumWarning": “2mb”,
      "maximumError": “5mb”
    },
    {
   
      "type": “anyComponentStyle”,
      "maximumWarning": “6kb”,
      "maximumError": “10kb”
    }
  ]

上述配置,都是 Angular CLI 命令创建的默认配置。我们可以自定义不同类型的配置,也可以按百分比限制文件大小。

更多的配置选项,可以参考官方文档。

部署应用
部署一个 Angular 应用是简单的,只需要把输出文件夹 dist 的全部文件,拷贝到服务器的相应路径下即可。

如果你想部署到另外一个目录下面,而非根目录,可以使用 ng buld 命令的 --base-href 选项,如下:

ng build --prod --base-href=/myapp/

上述命令会改变 index.html 文件的 base 标签的值:

<base href="/myapp”>
目录
相关文章
|
25天前
|
缓存 监控 JavaScript
Angular 应用打包和部署
【10月更文挑战第16天】Angular 应用的打包和部署是一个综合性的过程,需要考虑多个方面的因素。通过合理的打包和部署策略,可以确保应用在生产环境中稳定运行,并为用户提供良好的体验。你需要根据实际情况选择合适的部署方式,并不断优化和改进部署流程,以适应业务的发展和变化。
|
22天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
3月前
|
应用服务中间件 Java Maven
掌控视图的力量!深入解析 JSF 视图管理,揭秘视图生命周期的秘密,让你的应用更高效!
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的框架,用于管理 Web 应用程序的视图。本文通过具体案例介绍 JSF 视图管理的基础知识,包括创建、管理和销毁视图的过程。首先,在 Eclipse 中创建一个新 JSF 项目,并配置 Maven 依赖。接着,在 `WEB-INF` 目录下配置 `web.xml` 文件,设置 JSF servlet。
54 0
|
3月前
|
UED
JSF文件下载:解锁终极文件传输秘籍,让你的Web应用瞬间高大上!
【8月更文挑战第31天】掌握JSF文件下载功能对构建全面的Web应用至关重要。本文通过具体代码示例,详细介绍如何在JSF中实现文件下载。关键在于后端Bean中的文件读取与响应设置。示例展示了从创建实体类到使用`&lt;h:commandLink&gt;`触发下载的全过程,并通过正确设置响应头和处理文件流,确保文件能被顺利下载。这将显著提升Web应用的实用性与用户体验。
68 0
|
3月前
|
API 开发者 UED
PrimeFaces:JSF的魔法衣橱,解锁UI设计的无限可能!
【8月更文挑战第31天】本文介绍如何结合 JSF(JavaServer Faces)和 PrimeFaces 构建美观且功能强大的现代用户界面。PrimeFaces 提供丰富的 UI 组件库,包括按钮、输入框、数据网格等,支持现代 Web 标准,简化界面开发。文章通过具体示例展示如何使用 `&lt;p:inputText&gt;` 和 `&lt;p:calendar&gt;` 等组件创建用户表单,并用 `&lt;p:dataTable&gt;` 展示数据集合,提升 JSF 应用的易用性和开发效率。
58 0
|
3月前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
52 0
|
3月前
|
开发者 C# C++
揭秘:如何轻松驾驭Uno Platform,用C#和XAML打造跨平台神器——一步步打造你的高性能WebAssembly应用!
【8月更文挑战第31天】Uno Platform 是一个跨平台应用程序框架,支持使用 C# 和 XAML 创建多平台应用,包括 Web。通过编译为 WebAssembly,Uno Platform 可实现在 Web 上运行高性能、接近原生体验的应用。本文介绍如何构建高效的 WebAssembly 应用:首先确保安装最新版本的 Visual Studio 或 VS Code 并配置 Uno Platform 开发环境;接着创建新的 Uno Platform 项目;然后通过安装工具链并使用 Uno WebAssembly CLI 编译应用;最后添加示例代码并测试应用。
102 0
|
3月前
|
前端开发 开发者 安全
JSF支付功能大揭秘:探索如何在Java世界中实现安全无缝的在线支付体验
【8月更文挑战第31天】在电子商务和在线交易日益普及的今天,实现在线支付功能已成为许多Web应用的必备需求。JavaServer Faces (JSF) 作为一种流行的Java Web框架,提供了丰富的组件和工具来构建用户界面,包括与支付网关集成以实现在线支付。支付网关是处理信用卡和借记卡支付的系统,在商家和银行之间起到桥梁作用。本文将探讨如何使用JSF与支付网关集成,以及实现在线支付功能时需要考虑的关键点
46 0
|
3月前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
50 0
|
3月前
|
JavaScript 开发者
从零基础到实战应用:Angular入门指南带你一步步构建你的第一个Web应用——全面介绍环境搭建、项目创建、组件开发与应用集成
【8月更文挑战第31天】本文档是针对初学者的Angular入门指南。通过详细步骤与示例代码,教你如何使用Angular CLI搭建开发环境、创建新项目、添加及配置组件,并运行首个应用。Angular是由Google开发的强大Web框架,专为高效构建复杂单页应用设计。按照本指南操作,你将能够快速上手Angular,开启Web应用开发之旅。
103 0