如何将我的javascript代码拆分为多个文件,但仍然依赖词法范围来共享我的代码库部分之间的变量?
如果我的代码很短,我会写这样的东西,其中cmpnt
通过其父范围访问emit
函数。我喜欢这种方法,cmpnt
在其父级内联定义,因为这是它需要保留的地方;
function ui() {
function emit(name) {
console.debug(name)
}
function cmpnt(name) {
emit(name, ' says hello !')
}
cmpnt('first compoenent')
cmpnt('second component')
}
ui()
但是当cmpnt
代码变得更长时,我将代码拆分为多个文件,最后我编写了这样的代码,我用一个模块用emit
函数创建一个闭包: / p>
// component.js file
function cmpntFactory(emit) {
return function component(name) {
emit(name, ' says hello !')
}
}
// ui.js file
function ui() {
function emit(name) {
console.debug(name)
}
var cmpnt = cmpntFactory(emit)
cmpnt('first compoenent')
cmpnt('second component')
}
ui()
我不熟悉:我将代码拆分成多个文件只是因为它在我的文本编辑器中更容易阅读,但不是因为我在寻找模块化(在这个特殊情况下,我知道模块化是好的)。在访问我网站的任何浏览器中都会创建一个闭包,因为我更喜欢处理小文件,而这是我不喜欢的东西。
有什么方法可以避免这种情况吗?我能想到的唯一方法是使用一个构建系统,它允许我将原始内容从一个文件包含到另一个文件中。这种系统存在吗?或者我错过了什么,有更简单的方法吗?