gpt4 book ai didi

javascript - 将 JavaScript 模块添加到全局范围的跨平台方式是什么?

转载 作者:行者123 更新时间:2023-11-29 10:22:28 25 4
gpt4 key购买 nike

我正在查看 store.js 的源代码,特别是它如何将自己添加到全局范围:

if (typeof module != 'undefined') { module.exports = store }
else if (typeof define === 'function' && define.amd) { define(store) }
else { this.store = store }

我理解最后一句this.store = store,但是其他的呢? moduledefine 函数是什么? this.store = store 不是已经可以在所有浏览器上运行了吗?

更一般地说,将模块添加到全局范围的正确的跨浏览器方法是什么?

最佳答案

第一个案例是 CommonJS ,它最常用于 Node.js 并且是 AMD 的一种风格(Asynchronous Module Definition)。模块是一个 JavaScript 文件,它通过定义的全局模块对象执行。该文件设置为 module.exports 的任何内容都将可供应用程序的其他部分使用,并且文件中的所有其他内容将仅对该模块保持私有(private)。这是一个good blog post在上面。

第二个是针对另一种 AMD 的,最常使用 requirejs 实现。 .它与 CommonJs 的想法非常相似,但在浏览器中更常见。 Dojo 框架是基于 amd 的框架的一个很好的例子。 Jquery 社区也大大落后于 amd。 define 告诉 amd 系统您正在给它一个模块,应用程序的其余部分可以使用 require 引入该模块。

最终版本是在普通简浏览器中运行的常见场景。 this 很可能是 DOMWindow,因此存储对象在整个网页上成为全局对象。

关于javascript - 将 JavaScript 模块添加到全局范围的跨平台方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com