当前位置: 首页 > 网络应用技术

Esmodule规范详细说明

时间:2023-03-05 17:59:09 网络应用技术

  在引入Esmodule规范之前,我们首先可以了解AMD和CMD的两个规格。

  AMD规范

  CMD规范

  AMD和CMD的最大问题是,语法升级无法解决模块化问题。它们定义模块化或调用JS方法来生成模块。如果项目模块达到数百万,则不能将此方法应用于大型应用程序。如果模块的规模需要标准的语法规范,则既不实现AMD和CMD。

  eSmodule规范

  让我们在下面详细介绍Esmodule。

  通过导出导出的所有属性都可以在导入方法中解构。

  出口出口

  导入

  进口

  有两种导入方法。第一个是:

  第二类:

  MES对象如下。您可以看到所有导出的属性都会收敛为对象,其中导出默认值的关键导出值为。

  Esmodule的设计概念是确定编译时的模块依赖关系关系,即输入和输出,如何确定编译时的依赖关系?

  在编译语言的过程中,该程序中的源代码需要在执行之前“编译”。对于解释的语言(例如JavaScript),它也需要编译,但是编译过程在几秒钟内发生(甚至更短)(甚至更短)在执行代码之前。

  如果要确定汇编阶段的依赖性,则必须改进类似于变量的变量。LET查看JavaScript中的变量。

  在编译阶段,改进了变量。预先填充后,执行命令成为这样:

  因此,打印结果是:

  实际上,在编译阶段发现了JavaScript代码,它将像验证这一点一样改进,请查看以下演示。

  main.js

  A.JS

  B.JS

  执行订单如下:

  执行时,您可以首先看到“ B模块加载”,但是第一行代码是,但未执行。这是因为该导入已在编译阶段促进,并且类似于VAR的变量将首先执行。

  也就是说,在编译阶段加载模块,然后在执行阶段执行文件,该文件与VAR变量的执行顺序相同,也就是说,它将首先改进,然后在该变量中分配一个值执行阶段。

  由于具有静态语法,因此不能将其放置在块级别的域或条件语句中。

  在编译过程中,确定导入和导出之间的关系,因此找到依赖性和更方便(摇树)更方便,这就是为什么Esmodule支持操作。在同一时间,您也可以使用各种各样的棉绒工具检查模块,例如:ESLINT。

  执行后,将报告错误:typerror:分配到常数变量。通过导入导入的值可以看作是无法修改的const常数。

  common.js是该值的副本,eSmodule是参考传递。

  common.js

  当第一个打印中导入的变量的值是1时,然后执行加号,并且打印发现的值仍然是1。找到值是2。因此,在commonjs规范下,导入的变量只是该值的副本。有关具体详细信息,请参阅上一篇文章#commonjs规范的详细说明。

  eSmodule

  当第一个打印中导入的变量的值是1时,则执行加号,并且发现的值再次为2。也就是说,使用导入的变量导入的变量是与原始变量的参考关系,而不是一个复制。

  import()返回承诺对象,然后成功返回返回的承诺以获取模块的加载信息。let简要介绍如何使用导入()。

  打印结果如下:

  通过上面的简介,我们将总结concomjs和Esmodule之间的差异:

  像此代码一样,很难分析哪些模块仅在仅分析时才依赖于依赖性。

  同样,执行模块时无法识别commonj:

  但是,在eSmodule中,进出口清楚地表明,自然很容易区分和继续进口的部分。

  简而言之,可以通过有限的语法确定的依赖性,可以在AST阶段确定。

  原来的;https://juejin.cn/post/7098537945103073316