浏览器中JavaScript模块的意义是什么?

浏览器中JavaScript模块的意义是什么?,javascript,function,module,Javascript,Function,Module,所以我现在正在进行编码项目,当我四处寻找解决特定问题的方法时,我遇到了“模块”。虽然我以前听过这个词,但我认为值得研究一下模块的实际用途以及它们的使用方式 从我收集的资料来看,模块是一种“代码”。一个JavaScript文件中存在的函数、变量、类,可以导出/导入到另一个JavaScript文件中,也可以从另一个JavaScript文件中导出/导入 这似乎有点毫无意义——如果我可以从另一个文件中使用脚本,为什么还要麻烦地导出脚本/脚本集呢 下面是一个关于我的例子: // File 1 - addi

所以我现在正在进行编码项目,当我四处寻找解决特定问题的方法时,我遇到了“模块”。虽然我以前听过这个词,但我认为值得研究一下模块的实际用途以及它们的使用方式

从我收集的资料来看,模块是一种“代码”。一个JavaScript文件中存在的函数、变量、类,可以导出/导入到另一个JavaScript文件中,也可以从另一个JavaScript文件中导出/导入

这似乎有点毫无意义——如果我可以从另一个文件中使用脚本,为什么还要麻烦地导出脚本/脚本集呢

下面是一个关于我的例子:

// File 1 - adding.js

var c;

function add(a, b) {
    c = a + b;
    return c;
}
据我所知,这是可行的,main.js将能够访问adding.js中的脚本,而无需导出add函数


使用非浏览器JavaScript时可能会有所不同,或者可能我误解了模块是什么,但如果是这样,为什么要使用模块?

是的,您是对的,您不需要导出add函数,但您应该注意导入文件的顺序。 这意味着您应该在导入main.js之前导入adding.js


因为作为一个全球组织来管理每件事都是一个巨大的后遗症。尝试添加5个库/文件。现在,请确保每个都按照要求加载。现在更新一个。哦,它有一个新的要求-在正确的位置添加它。现在要意识到,你不会有5个库,但可能会有15-20个库。试着将一个项目搁置6个月,然后重新开始——你还记得每个项目在哪里使用吗?哪一个被使用了呢?哦,当你添加File12时会发生什么呢?File12也公开了一个全局添加函数,但它的工作原理略有不同?也许它会把所有的参数都变成正定的。您可能几个月都没有注意到当var2=-10时addvar1,var2不起作用。如果您的整个程序是一个添加两个数字的单一函数,那么,是的,您可能不需要管理代码复杂性的工具。不过,有些程序往往会变得更复杂。最好不要污染全局名称空间。你的例子就是这样的…@MattSchofield:取决于人们如何定义必要性。有些人喜欢将所有内容保持全局性,而不仅仅是JavaScript,并依赖足够的逻辑使其工作。有些人不喜欢现代IDE,更喜欢使用简单的文本编辑器,他们经常声称程序员应该能够让它工作。可以用足够的电线和烙铁为web服务器编程,但维护起来很困难。必要性通常是一种观点,或者由正在构建的系统的特定需求驱动。这并不是一个真正的答案
// File 2 - main.js

var d;
d = add(6, 4);
<html>
    <head>
        ...
    </head>

    <body>
        ...
        <script src="adding.js">
        </script>
        <script src="main.js">
        </script>
    </body>
    
</html>