Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建JS模块?_Javascript_Module - Fatal编程技术网

Javascript 如何创建JS模块?

Javascript 如何创建JS模块?,javascript,module,Javascript,Module,我有点不知道该怎么办。我见过很多人用JS创建模块,但每个人的做法都不一样。我见过人们用(function(){})()包装他们的整个模块

我有点不知道该怎么办。我见过很多人用JS创建模块,但每个人的做法都不一样。我见过人们用
(function(){})()包装他们的整个模块window.Module={}。我想知道什么是使用的最佳选择(如您认为最有用的)。非常感谢您的帮助。

我想说:这取决于您的“模块”的最终使用情况。如果它是内部使用的,这意味着在你的公司之外没有其他人会使用它,那么只要你同意正确的方法,任何东西都可以使用。否则,如果其他人使用它:创建的全局变量越少越好。例如,jQuery使用“$”和“jQuery”作为全局变量(可能是其他变量,但我不确定)。当人们向它添加模块时,他们总是将它们添加到
窗口。jQuery。[在jQuery var下]
其中
[在jQuery var下]
应该在jQuery文档上阅读,以便正确使用。

我想说:这取决于“模块”的最终用法。如果它是内部使用的,这意味着在你的公司之外没有其他人会使用它,那么只要你同意正确的方法,任何东西都可以使用。否则,如果其他人使用它:创建的全局变量越少越好。例如,jQuery使用“$”和“jQuery”作为全局变量(可能是其他变量,但我不确定)。当人们向它添加模块时,他们总是将它们添加到
窗口。jQuery。[在jQuery var下]
其中
[在jQuery var下]
应在jQuery文档上阅读,以便正确使用。

创建JavaScript模块只有一个官方解决方案。你所看到的任何其他东西,要么是该解决方案的填充物,要么是真实事物的苍白回声

基本语法如下所示:

import otherStuff from "otherStuff.js";
var myThing = {};

myThing.stuff = function(){ /*...*/ };
myThing.do = function(){ otherStuff.doOther(); );

export default myThing;
它可能会变得更加复杂,但最基本的是:

  • 您的模块必须位于唯一的文件中。文件是一个模块
  • 您的模块可能应该导出一些东西,尽管严格来说这不是必需的
这将在JavaScript中实现。不幸的是,没有人能够就如何加载模块的官方规范达成一致,因此这些模块在不久的将来不会发布。这就是说,该规范是一个规范,并且是一个实现它的polyfill

使用官方模块语法的最佳选择是运行它并编译成类似于垫片的格式(使用AMD格式),这样就可以在不使用加载程序规范的情况下使用它


您可以阅读有关语法和语法的更多信息。

创建JavaScript模块只有一个官方解决方案。你所看到的任何其他东西,要么是该解决方案的填充物,要么是真实事物的苍白回声

基本语法如下所示:

import otherStuff from "otherStuff.js";
var myThing = {};

myThing.stuff = function(){ /*...*/ };
myThing.do = function(){ otherStuff.doOther(); );

export default myThing;
它可能会变得更加复杂,但最基本的是:

  • 您的模块必须位于唯一的文件中。文件是一个模块
  • 您的模块可能应该导出一些东西,尽管严格来说这不是必需的
这将在JavaScript中实现。不幸的是,没有人能够就如何加载模块的官方规范达成一致,因此这些模块在不久的将来不会发布。这就是说,该规范是一个规范,并且是一个实现它的polyfill

使用官方模块语法的最佳选择是运行它并编译成类似于垫片的格式(使用AMD格式),这样就可以在不使用加载程序规范的情况下使用它


您可以从什么角度阅读有关语法和的更多信息。

“最佳”是什么?没有什么是绝对理想的。从什么角度看“最好”?没有什么是绝对理想的。你能回答我为什么我看到很多人对ECMAScript 6的答案,即使它还不到一岁?“我们不应该考虑一个更广泛的解决方案吗?”MasdjJon,EcMASKIPPT2015模块规范已经定稿,并已被开发了更长的时间比。它是语言规范的一部分。我不确定你能得到比使用“在每一个JS运行时都要执行的官方语言规范”要宽泛得多。“在我的回答中,缺少支持就像Babel.TrpSpter。”Masdjon“我们不应该考虑一个更广泛的解决方案吗?”——你当然可以。一个也可以将w3m和lynx作为其支持的浏览器,另一个则只使用实际的现代浏览器standards@zerkms&post所有者:我明白了!我唯一的观点是仍然需要向后兼容。这不是为什么jQuery和Libraries被创建的原因吗?看看这个告诉我们,如果OP是在寻找手机浏览器,OUP,大问题被抛弃了。好吧,我想你明白我的意思了。@MasterDJon好吧,如果你瞄准更多支持给定技术的设备,你就使用polyfills。从长远来看,这比使用古老的解决方案更有益,因为“我们的一小部分客户永远不会升级”。“这不是为什么jQuery和Libraries被创建的原因吗?”——这就是为什么要使用ES2015和babel的原因。这就是巴贝尔诞生的原因。你们能回答我为什么我看到很多人对ECMAScript 6的答案,即使它还不到一岁?“我们不应该考虑一个更广泛的解决方案吗?”MasdjJon,EcMASKIPPT2015模块规范已经定稿,并已被开发了更长的时间比。它是语言规范的一部分。我不确定你能得到比使用“在每一个JS运行时都要执行的官方语言规范”要宽泛得多。“在我的回答中,缺少支持就像Babel.TrpSpter。”Masdjon“我们不应该考虑一个更广泛的解决方案吗?”——你当然可以。一个也可以将w3m和lynx作为其支持的浏览器,另一个则只使用实际的现代浏览器standards@zerkms&post所有者:我理解