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”>
目录
相关文章
|
17天前
|
应用服务中间件 Java Maven
掌控视图的力量!深入解析 JSF 视图管理,揭秘视图生命周期的秘密,让你的应用更高效!
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的框架,用于管理 Web 应用程序的视图。本文通过具体案例介绍 JSF 视图管理的基础知识,包括创建、管理和销毁视图的过程。首先,在 Eclipse 中创建一个新 JSF 项目,并配置 Maven 依赖。接着,在 `WEB-INF` 目录下配置 `web.xml` 文件,设置 JSF servlet。
29 0
|
17天前
|
UED
JSF文件下载:解锁终极文件传输秘籍,让你的Web应用瞬间高大上!
【8月更文挑战第31天】掌握JSF文件下载功能对构建全面的Web应用至关重要。本文通过具体代码示例,详细介绍如何在JSF中实现文件下载。关键在于后端Bean中的文件读取与响应设置。示例展示了从创建实体类到使用`&lt;h:commandLink&gt;`触发下载的全过程,并通过正确设置响应头和处理文件流,确保文件能被顺利下载。这将显著提升Web应用的实用性与用户体验。
31 0
|
17天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
27 0
|
17天前
|
Java Spring
🔥JSF 与 Spring 强强联手:打造高效、灵活的 Web 应用新标杆!💪 你还不知道吗?
【8月更文挑战第31天】JavaServer Faces(JSF)与 Spring 框架是常用的 Java Web 技术。本文介绍如何整合两者,发挥各自优势,构建高效灵活的 Web 应用。首先通过 `web.xml` 和 `ContextLoaderListener` 配置 Spring 上下文,在 `applicationContext.xml` 定义 Bean。接着使用 `@Autowired` 将 Spring 管理的 Bean 注入到 JSF 管理的 Bean 中。
29 0
|
17天前
|
开发者 Java 开发框架
JSF与EJB,打造企业级应用的神器!让你的Web应用更加稳定、高效!
【8月更文挑战第31天】在现代企业级应用开发中,JSF(JavaServer Faces)与EJB(Enterprise JavaBeans)是两大核心技术。JSF作为一款基于Java的Web应用框架,以其丰富的UI组件和表单处理功能著称;EJB则专注于提供分布式事务处理及远程调用等企业级服务。两者的结合为企业应用带来了高效便捷的开发模式。下文将通过一个简单的示例展示如何利用JSF进行用户信息的输入与保存,并借助EJB实现相关业务逻辑。尽管这一组合具有明显优势,但在实际应用中还需考虑其局限性并作出合理选择。
31 0
|
17天前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
31 0
|
17天前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
31 0
|
22天前
|
机器学习/深度学习 人工智能 达摩院
第一个Angular应用创建问题之在云开发平台上进行Angular应用的日常环境部署如何解决
第一个Angular应用创建问题之在云开发平台上进行Angular应用的日常环境部署如何解决
|
17天前
|
开发者 Windows Android开发
跨平台开发新选择:揭秘Uno Platform与.NET MAUI优劣对比,帮你找到最适合的框架,告别选择困难症!
【8月更文挑战第31天】本文对比了备受关注的跨平台开发框架Uno Platform与.NET MAUI的特点、优势及适用场景。Uno Platform基于WebAssembly和WebGL技术,支持Windows、iOS、Android及Web平台,而.NET MAUI由微软推出,旨在统一多种UI框架,支持Windows、iOS和Android。两者均采用C#和XAML进行开发,但在性能、平台支持及社区生态方面存在差异。Uno Platform在Web应用方面表现出色,但性能略逊于原生应用;.NET MAUI则接近原生性能,但不支持Web平台。开发者应根据具体需求选择合适的框架。
34 0
|
17天前
|
iOS开发 Android开发 MacOS
从零到全能开发者:解锁Uno Platform,一键跨越多平台应用开发的神奇之旅,让你的代码飞遍Windows、iOS、Android、macOS及Web,技术小白也能秒变跨平台大神!
【8月更文挑战第31天】从零开始,踏上使用Uno Platform开发跨平台应用的旅程。只需编写一次代码,即可轻松部署到Windows、iOS、macOS、Android及Web(通过WASM)等多个平台。Uno Platform为.NET生态带来前所未有的灵活性和效率,简化跨平台开发。首先确保安装了Visual Studio或VS Code及.NET SDK,然后选择合适的项目模板创建新项目。项目结构类似传统.NET MAUI或WPF项目,包含核心NuGet包。通过简单的按钮示例,你可以快速上手并构建应用。Uno Platform让你的技术探索之旅充满无限可能。
22 0