首页 > 编程语言 >JavaScript 模块

JavaScript 模块

时间:2024-09-20 20:45:38浏览次数:1  
标签:.- JavaScript modules module js 模块 import

现在我们不再将所有 js 写在一个文件中并发送给客户端。今天,我们将代码编写到模块中,这些模块之间共享数据并且更易于维护。约定是使用驼峰命名法命名模块。我们甚至可以通过 npm 存储库将第 3 方模块包含到我们自己的代码中,例如 jquery、react、webpack、babel 等。最终的捆绑包是由部署到产品服务器的小模块文件构建的,最终发送给客户端。旧版浏览器不支持模块出于性能原因,最好将小js文件发送到浏览器。模块是 js 中非常重要的一部分,开发人员已经在其他语言中使用了数十年。模块:可重用的一段代码,封装了项目某个部分的实现细节。它是一个独立文件,但不一定是。模块也可以有导入和导出原生 es6 模块:es6 之前没有模块。必须自己实现或使用外部库。模块存储在文件中,每个文件只有一个模块。我们可以从模块中导出值、函数等。我们导出的任何内容都称为公共 api,公开供其他代码使用。这个公共 api 通过将公共代码导入到模块中来使用,称为依赖项。简单的应用程序也可以在没有模块的情况下编写,但是对于企业规模的项目,我们需要模块。高级:-> 使编写软件变得非常容易,因为模块是我们组合在一起构建复杂应用程序的小构建块。-> 隔离组件:每个功能都可以完全隔离地开发,无需担心其他开发人员的工作或整个系统的工作方式。-> 代码抽象:在模块中实现低级代码,将这些抽象导入到其他模块中,自然会导致更有组织的代码库。-> 代码可重用性:允许我们在多个项目中重用代码。现代 js 使用捆绑和转译。## bundling = is a complex process which involves:a. eliminate unused codeb. combine all modules into single file.c. compress the code.ex. webpack build tool - requires manual config, hence complex.ex. parcel - zero build tool as we don't need to write any setup code.## transpiling/polyfiling:convert modern js to es5 or older syntax such that older browser supports the application. ex. done using tool called babelentire process results in the final bundle file for production ready to be deployed on server. 登录后复制### scripts are also files but they are different from es6 modules in the following ways:script[used earlier]:- all top level variables are always global. this leads to global namespace pollution and name-coliision.- default mode: sloppy mode- top level 'this' points to window object.- import/export of values is not allowed.- linked to html using plain script tag.- downloaded by default in sync way, unless async or defer attribute is used.### es6 modules:- all top-level variables are scoped to module i.e they are private by default. such a value can be access by outside varible only when its exported by the module else it will be inaccessible for outside world.- default mode: strict mode. hence with modules no more need to declare strict mode.- top level 'this' is 'undefined'- allows import/export of values using es6 syntax of import/export.- link to html file using <script type="module"> tag.- file download always happens in an async way, i.e for module loaded from html or an import one module to another.</script>登录后复制## Understanding module import process:Parsing -&gt; [Asyn module download, Linking import-export, Execute individual module itself] -&gt; Execution overall index.js- import/export only need to happen at the top level of if-block or any function. Imports are hoisted. Importing values is always the first thing which happens in a module.- Top-level static imports make imports known before execution. - Modules are loaded in async way from the server, importing happens in sync manner. - Parsing refers to reading the code without executing it in which imports are hoisted. Modules are imported even before execution. Hence, it enables bundling &amp; code elimation even before fn exection. [V Impt as large projects have 100s of modules, and 3rd party modules also from which we want the small piece and not the entire module]- Bundlers can then join multiple modules, and then eliminate code. hence, we can easily import/export from code.- After a module arrives, its parsed and then the module exports are linked to imports in index.js i.e live connection is established between import inside index.js and export statement of the module file. They are not copied. Import is just a reference to the exported value. Hence, when the value changes in the exporting module, it also changes in the importing module too. This concept is unique to ES6 modules, other module system don't work like this.- Code in the imported modules is executed.登录后复制 以上就是JavaScript 模块的详细内容,更多请关注我的其它相关文章!

标签:.-,JavaScript,modules,module,js,模块,import
From: https://www.cnblogs.com/aow054/p/18423251

相关文章

  • JavaScript 中的错误
    JavaScript是全球数百万前端开发人员最喜爱的语言,但与任何工具一样,它也有其怪癖。你有没有想过当你对null使用typeof运算符时会发生什么?嗯,这是JavaScript中最奇怪、最令人困惑的事情之一。typeof运算符可以很好地处理“HelloWorld”这样的文字,因为它返回string作为其类......
  • JavaScript 中的闭包
    你好,在这篇文章中,让我们学习闭包。闭包在javascript中至关重要,因为它们允许函数从其父作用域访问变量,即使在父函数关闭之后也是如此。这对于需要随着时间的推移记住数据的函数至关重要,例如回调函数或维护状态。这里要记住的一点是父作用域中未使用的变量将被垃圾收集。定义:闭......
  • JavaScript 中的高阶函数
    什么是高阶函数?高阶函数是可以接受其他函数作为参数或返回函数作为值的函数。它们为我们提供了一种强大的方法来编写可应用于各种场景的可重用代码。javascript有几个常用的高阶函数,包括map()、filter()和reduce()。由于存在高阶函数,javascript通常被称为函数式编程语言。高阶......
  • JavaScript 如何在后台工作:了解其单线程性质和异步操作
    javascript是网络的支柱,为数十亿网站和应用程序提供动态客户端功能。但您有没有想过javascript是如何在后台发挥其魔力的?在这篇文章中,我们将深入研究javascript单线程本质的内部工作原理,并探索异步编程的概念。单线程是什么意思?当我们说javascript是“单线程”时,这意......
  • JavaScript 微观性能测试、历史和局限性
    我认为性能优化对许多开发人员感兴趣,因为他们更多地了解完成任务的不同方法。一些内心的声音问道:“哪种方式最好?”虽然“最佳”指标有很多变化,例如douglascrockford的2008年javascript:thegoodparts,但性能是容易获得的,因为我们可以自己测试它。然而,测试和证明性能并不总是......
  • Javascript 中的展开和休息运算符及其示例
    剩余和扩展运算符是javascript中强大的功能,允许您更有效地处理数组、对象和函数参数。它们都使用相同的语法(...),但用途不同。休息操作员(...)剩余运算符用于将所有剩余元素收集到数组中。它通常用在函数参数中来处理可变数量的参数。休息运算符示例:functionsum(......
  • JavaScript 中的异步循环:forof 与 forEach
    javascript的异步功能非常酷?,但是选择正确的循环来处理这些异步任务可能会产生很大的不同。让我们用一点乐趣来分解for...of和foreach之间的区别?1。带有异步函数的for...of循环将for...of循环想象为您超级勤奋的朋友,他耐心地等待您完成一项任务,然后再开始下一项任务。......
  • JavaScript 中的提升
    什么是javascript提升?提升是指javascript中在执行之前进行声明的过程。首先处理变量和函数声明。因此,即使变量在声明之前被引用,也不会导致错误,而是返回undefined。对于函数声明,整个函数被提升,这意味着它可以在代码中定义之前使用。此过程在执行开始之前将声明放入堆栈中。......
  • JavaScript 中的数组分组(4)
    JavaScript中的数组分组(2024)数组分组在JavaScript中并不是什么新鲜事。数组分组是JavaScript中的一项新功能,可帮助开发人员根据特定特征将数组中的元素组织成组。这使得查找和使用数据变得更加容易。现在的问题是它是如何运作的?好吧,在最新和现代的方法出现之前,开发人员将......
  • JavaScript 中的星空可视化
    这是一个简单、直接的可视化实现,让人想起经典的Windows95星空屏幕保护程序。它也是交互式的:您可以触摸屏幕或使用加速计来影响运动的方向。这就是它的工作原理:创建一堆粒子(100),每个粒子处于随机位置。每一帧,将每个粒子进一步远离中心*。粒子距离中心越远,它就会变得越明显。这......