Angular中Webpack与ngx-build-plus 浅学

Webpack 在 Angular 中的概念

        Webpack 是一个模块打包工具,用于将多个模块和资源打包成一个或多个文件。在 Angular 项目中,Webpack 负责将 TypeScript、HTML、CSS 等文件打包成浏览器可以理解的 JavaScript 文件。Angular CLI 默认使用 Webpack 进行项目构建,但配置是隐藏的,开发者通常不需要直接接触 Webpack 配置。

总结来说

        Webpack是现代Angular应用构建系统的核心,负责:

  1. 模块打包:将应用的所有模块(TypeScript、CSS、HTML等)打包成浏览器可理解的格式

  2. 依赖管理:解析模块间的依赖关系

  3. 代码转换:通过loader系统处理TypeScript、SASS等非原生JavaScript资源

  4. 优化:执行Tree Shaking、代码分割等优化操作

  5. 开发工具:提供热模块替换(HMR)等开发功能

ngx-build-plus 的作用

        ngx-build-plus 是一个 Angular 构建工具,允许开发者在不 eject Angular CLI 配置的情况下,自定义 Webpack 配置。通过 ngx-build-plus,开发者可以扩展或修改默认的 Webpack 配置,以满足特定需求。

总的来说:ngx-build-plus是一个社区维护的库,主要解决以下问题:

  1. 扩展默认构建配置:无需eject即可自定义Webpack配置

  2. 保留Angular CLI特性:在自定义配置的同时保留CLI的便利功能

  3. 微前端支持:特别适合需要自定义构建的微前端架构

Webpack与ngx-build-plus核心功能对比

特性Angular CLI默认构建ngx-build-plus增强构建
配置访问受限完全访问
自定义Webpack配置困难容易
维护性官方维护社区维护
微前端支持有限专门优化
升级兼容性中等

配置 ngx-build-plus

安装 ngx-build-plus:

npm install ngx-build-plus --save-dev

angular.json 中配置自定义 Webpack 配置文件:

"architect": {"build": {"builder": "ngx-build-plus:browser","options": {"customWebpackConfig": {"path": "./extra-webpack.config.js"}}}
}

创建 extra-webpack.config.js 文件,用于自定义 Webpack 配置:

module.exports = {module: {rules: [{test: /\.custom$/,use: 'custom-loader'}]}
};

使用场景

  1. 自定义加载器:当项目需要使用特定的文件类型或资源时,可以通过自定义 Webpack 配置来添加相应的加载器。
  2. 优化构建:通过自定义 Webpack 配置,可以优化构建过程,例如代码分割、Tree Shaking 等。
  3. 集成第三方库:某些第三方库可能需要特定的 Webpack 配置才能正常工作,ngx-build-plus 可以帮助实现这一点。

具体使用案例

  • 第一个案例:假设需要在 Angular 项目中处理.custom 文件类型,可以通过以下步骤实现:

安装自定义加载器:

npm install custom-loader --save-dev

extra-webpack.config.js 中添加自定义加载器配置:

module.exports = {module: {rules: [{test: /\.custom$/,use: 'custom-loader'}]}
};

在组件中使用 .custom 文件:

import customFile from './example.custom';@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {customData = customFile;
}
  •  第二个案例:那必须是在微前端MFE, ngx-build-plus特别适合Angular微前端架构,一般都是会使用ngx-build-plus而不是Webpack,特别是在Angular框架项目中,博主我会写单独为此写一篇博客,期待一下啦!!! 

 博客完成:请大家参考和评阅:

​​​​​​​Angular微前端架构:Module Federation + ngx-build-plus + Webpack -CSDN博客​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中word快速转pdf

java中word快速转pdf 网上其他方法转pdf要不转的太慢&#xff0c;要不就是损失格式&#xff0c;故而留下此方法留作备用。 文章目录 java中word快速转pdf一、依赖二、依赖包三、代码 一、依赖 <dependency><groupId>com.aspose</groupId><artifactId>…

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…

Unity使用代码分析Roslyn Analyzers

一、创建项目&#xff08;注意这里不要选netstandard2.1会有报错&#xff09; 二、NuGet上安装Microsoft.CodeAnalysis.CSharp 三、实现[Partial]特性标注的类&#xff0c;结构体&#xff0c;record必须要partial关键字修饰 需要继承DiagnosticAnalyzer 注意一定要加特性Diagn…

knife4j:4.3.0 default-flat-param-object: true 没有生效

Get 方式请求 前端接口文档中的键值对方式&#xff08;get&#xff09;发送对象参数&#xff0c;将对象请求参数展开

C++.OpenGL (15/64)Assimp(Open Asset Import Library)

Assimp(Open Asset Import Library) 3D模型加载核心流程 #mermaid-svg-cKmTZDxPpROr7ly1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cKmTZDxPpROr7ly1 .error-icon{fill:#552222;}#mermaid-svg-cKmTZDxPpROr…

课堂笔记:吴恩达的AI课(AI FOR EVERYONE)-第一周part2 人工智能术语人工智能公司应该怎么做

人工智能术语&人工智能公司应该怎么做 一、人工智能术语 1.机器学习&#xff1a; 让电脑能够不用开发软件&#xff0c;而自主获取某种能力的研究领域。 2.数据科学&#xff1a; 从数据中提取知识和见解的科学&#xff1b; 3.深度学习&#xff1a; 度学习是一种机器…

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…

鸿蒙开发——如何修改模拟器的显示图标/标题

1.图标 第一步&#xff1a;将你所需要的图标方到src/main/resources/base/media下 第二步&#xff1a;找到entry项目下面的src/main/module.json5 第三步&#xff1a;将原来的 "icon": "$media:layered_image", 切换成 "icon": "$media…

音乐“穿梭机”AudioRelay,让你的音频“无缝对接”

嘿&#xff0c;小伙伴们&#xff01;今天电脑天空给大家安利一款超神奇的音频小能手——AudioRelay&#xff01;要是你和我一样&#xff0c;经常在各种设备之间“折腾”音频&#xff0c;那这玩意儿绝对能让你眼前一亮。 你有没有遇到过这样的烦心事儿&#xff1f;电脑里正放着…

Chrome二级标签无法选中的解决方案

问题描述 近段时间&#xff0c;我的chrome软件选择标签时候&#xff0c;发现&#xff0c;二级文件夹下的标签都无法选中。并且右上角三个点里面书签的下辖子项目也根本无法选中。这就导致我连目录也无法导出来。后来发现ctrlshiftO才调出来书签界面&#xff0c;导出了chrome的…

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:

CppCon 2015 学习:The Importance of Being const

const 的意义与作用 “const 让你可以同时向编译器和其他程序员说明&#xff1a;这个值应该保持不变。只要这种情况成立&#xff0c;你就应该明确地使用 const&#xff0c;因为这样可以让编译器帮你确保这个约束不会被破坏。” 逐句解释&#xff1a; 使用 const&#xff0c;你…

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …

网格三面角,散射过程推导

电场矢量本身只有一个方向&#xff0c; 下面对其分解为v矢量方向和h矢量方向。分解成两个电场矢量方向 又再次分解为坐标矢量方向 本段是V极化说在平面在xz坐标平面上&#xff0c;h极化只有y分量&#xff0c;注意这分析方法 反射波矢量仍在XZ坐标面上&#xff0c;&#xff08…

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…

Linux共享内存原理及系统调用分析

shmget 是 System V 共享内存的核心系统调用之一&#xff0c;其权限位&#xff08;shmflg 参数&#xff09;决定了共享内存段的访问控制和创建行为。以下是权限位的详细解析&#xff1a; 权限位的组成 shmflg 参数由两部分组成&#xff1a; 权限标志&#xff08;低 9 位&…

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…

Vue3 + TypeScript + Element Plus 设置表单中日期控件的宽度

需要设置日期控件的宽度 要设置 el-date-picker 的宽度&#xff0c;可以通过以下方法实现&#xff08;推荐方法1或2&#xff09;&#xff1a; 方法1&#xff1a;使用内联样式&#xff08;最直接&#xff09; 直接在组件上添加 style"width: 100%"&#xff1a; htm…

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…