加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular 2模块中esm目录的用途是什么?

发布时间:2020-12-17 17:22:10 所属栏目:安全 来源:网络整理
导读:我正在使用Angular2 RC4: "@angular/common": "2.0.0-rc.4","@angular/compiler": "2.0.0-rc.4","@angular/core": "2.0.0-rc.4","@angular/forms": "0.2.0","@angular/http": "2.0.0-rc.4","@angular/platform-browser": "2.0.0-rc.4","@angular/platform-b
我正在使用Angular2 RC4:

"@angular/common": "2.0.0-rc.4","@angular/compiler": "2.0.0-rc.4","@angular/core": "2.0.0-rc.4","@angular/forms": "0.2.0","@angular/http": "2.0.0-rc.4","@angular/platform-browser": "2.0.0-rc.4","@angular/platform-browser-dynamic": "2.0.0-rc.4","@angular/router": "3.0.0-beta.2","@angular/upgrade": "2.0.0-rc.4",

我正在使用JetBrains IntelliJ IDEA 2016.2.当我引用Angular2指令时,IDE有助于导入定义指令的包.遗憾的是,IDE正在查找指令的多个定义,这意味着我必须从提供的列表中选择正确的指令.偶尔我会选择“错误的”,我最终会遇到大量的编译错误.正如我开始学习的那样,错误的包总是/通常是包含esm子文件夹的Angular2分发目录中的包.

在检查任何esm文件夹时,它的内容与sibling src文件夹(例如)的内容非常相似:

@angular
  common
  + esm
    + src
      + directives
      + facade
      + form-deprecated
      + location
      + pipes
        common_directives.d.ts
        common_directives.js
        common_directives.js.map
        common_directives.metadata.json
        directives.d.ts
        ...
        pipes.js
        pipes.js.map
  + src
    + directives
    + facade
    + form-deprecated
    + location
    + pipes
      common_directives.d.ts
      common_directives.js
      common_directives.js.map
      common_directives.metadata.json
      directives.d.ts
      ...
      pipes.js
      pipes.js.map

问题1:esm目录的目的是什么?为什么在分发中提供这些目录?

问题2:作为Angular2应用程序开发人员,我是否需要这些目录中的文件?

问题3:如果对问题2的“否”,我可以安全地从我的项目中删除这些和/或有没有办法使IntelliJ IDEA 2016.2忽略这些文件夹?

解决方法

问题1:esm文件夹包含以纯ES2015(或ES6)模块语法编写的库.在JavaScript-land,AMD和CommonJS中有两个主要社区创建的模块风格,但ES2015模块是模块语法第一次实际上是语言的一部分.用ES6模块编写的代码是面向未来的:语法更好,支持循环依赖,模块导出绑定而不是值. ES2015模块比其他格式更有效,并且可以通过树摇动技术促进更小的束大小的创建,即只导入您需要的位而不是导入整个东西.社区已经创建了利用ES2015模块的工具.例如,rollup.js库是一个JavaScript模块捆绑器,它使用树摇动技术生成较小的捆绑包.

那么,为什么Angular团队已经包含了esm发行版?好吧,虽然现在浏览器并不完全支持ES2015语法,但您可以使用rollup.js等工具充分利用ES2015模块语法来生成应用程序的超精益捆绑包.

问题2:就像我之前说的那样,您可以(或必须)使用esm目录来使用rollup.js库生成较小的应用程序包.

问题3:您不需要删除任何内容.当你必须生成一个生产应用程序包时,esm目录是你最好的朋友.

所有这些都是rollup.js wiki page的绝佳参考.看一看.

您还可以阅读优秀的文章Building and Angular 2 Application for Production,其中显示了如何使用rollup.js和树木抖动.

**奖金**:检查库的package.json,你可以看到它是否包含ES2015版本.只需查找jsnext:main属性.有关它的更多详细信息,请阅读rollup – jsnext:main文档.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读