Angular 角元素:包括一个角核心

Angular 角元素:包括一个角核心,angular,custom-element,angular-elements,Angular,Custom Element,Angular Elements,角组件包装为。每个角元素运送角核心。如果在一个标准html页面中,我包含5个角度元素组件,那么这个页面将下载5倍于角度核心的内容 有一种方法可以让angular core只下载组件代码吗?这是一个应该在ivy渲染器最终发布时消除的问题-状态在过去几个月没有改变…,因为它应该删除所有未使用的代码,从而减少每个元素的大小 同时,您可以使用从自定义元素构建中排除基本包,并在基本应用程序中提供这些基本包,因此,例如angular core、rxjs等只加载一次 编辑:确保在主应用程序之后加载自定义元素,

角组件包装为。每个角元素运送角核心。如果在一个标准html页面中,我包含5个角度元素组件,那么这个页面将下载5倍于角度核心的内容


有一种方法可以让angular core只下载组件代码吗?

这是一个应该在ivy渲染器最终发布时消除的问题-状态在过去几个月没有改变…,因为它应该删除所有未使用的代码,从而减少每个元素的大小

同时,您可以使用从自定义元素构建中排除基本包,并在基本应用程序中提供这些基本包,因此,例如angular core、rxjs等只加载一次


编辑:确保在主应用程序之后加载自定义元素,方法是使用“延迟”或动态加载它们,以确保加载所需的基本脚本。您不需要像项目自述中提到的那样添加umd LIB,只要通过将它们添加到angular.json(如果尚未导入)来确保您的基础应用程序拥有所有这些脚本,这是一个应该在ivy渲染器最终发布时消除的问题-在过去几个月内状态没有改变。。。,因为它应该树化任何未使用的代码,从而减少每个元素的大小

同时,您可以使用从自定义元素构建中排除基本包,并在基本应用程序中提供这些基本包,因此,例如angular core、rxjs等只加载一次


编辑:确保在主应用程序之后加载自定义元素,方法是使用“延迟”或动态加载它们,以确保加载所需的基本脚本。您不需要像项目自述中提到的那样添加umd LIB,只需通过将它们添加到angular.json来确保您的基础应用程序拥有所有这些脚本,如果尚未导入

,您可以使用ngx build plus并将它们设置为外部脚本。 请阅读以下内容:

以下是最终的html格式:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ElementsLoading</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>

<!-- Consider putting the following UMD (!) bundles -->
<!-- into a big one -->

<!-- core-js for legacy browsers -->
<script src="./assets/core-js/core.js"></script>

<!-- Zone.js -->
<!-- 
    Consider excluding zone.js when creating
    custom Elements by using the noop zone.
-->
<script src="./assets/zone.js/zone.js"></script>


<!-- Polyfills for Browsers supporting 
        Custom Elements. Needed b/c we downlevel
        to ES5. See: @webcomponents/custom-elements
-->
<script src="./assets/custom-elements/src/native-shim.js"></script>

<!-- Polyfills for Browsers not supporting
        Custom Elements. See: @webcomponents/custom-elements
-->
<script src="./assets/custom-elements/custom-elements.min.js"></script>


<!-- Rx -->
<script src="./assets/rxjs/rxjs.umd.js"></script>

<!-- Angular Packages -->
<script src="./assets/core/bundles/core.umd.js"></script>
<script src="./assets/common/bundles/common.umd.js"></script>
<script src="./assets/platform-browser/bundles/platform-browser.umd.js"></script>
<script src="./assets/elements/bundles/elements.umd.js"></script>

<!-- Calling Custom Element -->
<custom-element></custom-element>

</body>
</html>

我能够做到这一点,并能够外部化角度模块。但我想知道如何将在angular中创建的自定义库外部化?我看到的一件事是Angular创建了UMD包,其中ng.core、ng.common被定义为globals,以便我可以通过window对象访问它们。我尝试使用rollupjs创建umd捆绑包,但它确实像创建角度组件一样创建了任何全局变量。我被困在这里,寻找新的想法。谢谢

您可以使用ngx build plus并将其设置为外部。 请阅读以下内容:

以下是最终的html格式:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ElementsLoading</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>

<!-- Consider putting the following UMD (!) bundles -->
<!-- into a big one -->

<!-- core-js for legacy browsers -->
<script src="./assets/core-js/core.js"></script>

<!-- Zone.js -->
<!-- 
    Consider excluding zone.js when creating
    custom Elements by using the noop zone.
-->
<script src="./assets/zone.js/zone.js"></script>


<!-- Polyfills for Browsers supporting 
        Custom Elements. Needed b/c we downlevel
        to ES5. See: @webcomponents/custom-elements
-->
<script src="./assets/custom-elements/src/native-shim.js"></script>

<!-- Polyfills for Browsers not supporting
        Custom Elements. See: @webcomponents/custom-elements
-->
<script src="./assets/custom-elements/custom-elements.min.js"></script>


<!-- Rx -->
<script src="./assets/rxjs/rxjs.umd.js"></script>

<!-- Angular Packages -->
<script src="./assets/core/bundles/core.umd.js"></script>
<script src="./assets/common/bundles/common.umd.js"></script>
<script src="./assets/platform-browser/bundles/platform-browser.umd.js"></script>
<script src="./assets/elements/bundles/elements.umd.js"></script>

<!-- Calling Custom Element -->
<custom-element></custom-element>

</body>
</html>

我能够做到这一点,并能够外部化角度模块。但我想知道如何将在angular中创建的自定义库外部化?我看到的一件事是Angular创建了UMD包,其中ng.core、ng.common被定义为globals,以便我可以通过window对象访问它们。我尝试使用rollupjs创建umd捆绑包,但它确实像创建角度组件一样创建了任何全局变量。我被困在这里,寻找新的想法。谢谢

它是从浏览器缓存加载的吗?如果是这样的话,这不应该是个大问题吗?@DhananjaiPai第一个请求是个大问题,因为需要下载一个大包。它是从浏览器缓存加载的吗?如果是这样的话,这不应该是个大问题吗?@DhananjaiPai第一个请求是个大问题,因为需要下载一个大包。我找到了问题的答案。我没有注意到ng build-prod创建了umd包。这解决了我的问题。谢谢回答现有问题时,请不要再问其他问题。如果你有一个新问题,你应该问一个全新的问题。我找到了我问题的答案。我没有注意到ng build-prod创建了umd包。这解决了我的问题。谢谢回答现有问题时,请不要再问其他问题。如果你有一个新问题,你应该问一个全新的问题。