gpt4 book ai didi

javascript - 使用模块模式时如何将jquery源代码拆分为多个文件?

转载 作者:行者123 更新时间:2023-12-03 09:22:14 26 4
gpt4 key购买 nike

我在将 jquery 源代码拆分为多个文件时遇到了一些问题。我真正的源代码有点复杂,但下面的简单示例很好地显示了我的问题。首先,我想向您展示一个只有一个 javascript 文件的工作示例。之后,我将描述我尝试将 javascript 拆分为两个文件的方法。

我的 html 代码如下所示(“./jquery”是指向我本地 jquery 下载的符号链接(symbolic link)):

<html>
<head>
<script src="./jquery"></script>
<script src="./file1.js"></script>
</head>

<body>
<div id="content"></div>
</body>
</html>

file1.js 中的 jquery 源代码如下所示:

$(document).ready(function() {

var Test = (function() {
var content = $('#content');

var init = function() {
content.html('<p>test</p>');
};

return {
init: init
}
})();

Test.init();
});

打开页面后,会显示“test”,因此本示例可以正常运行。

但现在我想将整个 Test 部分放入另一个文件 file2.js 中。我的 html 基本相同,但多了一行:

<script src="./file2.js"></script>

file1.js 现在只包含 init 函数的调用:

$(document).ready(function() {
Test.init();
});

而file2.js包含Test的定义:

var Test = (function() {
var content = $('#content');

var init = function() {
content.html('<p>test</p>');
};

return {
init: init
}
})();

当我打开页面时,不再显示“test”。为了确保 init 函数被调用,我添加了一个 console.log("test");到运行良好的 init 函数。因此,我认为该函数可能会在 DOM 准备好之前被调用,但实际上我对此一无所知。也许有人可以给我一个提示如何运行。

提前致以最诚挚的问候和感谢!

最佳答案

您可以根据自己的喜好做几件事...1. 将脚本移至 HTML 文件的末尾而不是 header 中...

<html>
<head>
</head>

<body>
<div id="content"></div>
</body>
<script src="./jquery"></script>
<script src="./file2.js"></script>
<script src="./file1.js"></script>
</html>

依次思考这个问题...如果你不想在每个模块中声明一个 var 来引用 DOM 中的一个元素,你需要该元素首先存在,然后你可以向模块声明“全局”var < b>内容。这样你原来的 file2.js 就可以工作了。

另一种方法是将内容声明为模块的“全局”内容,但在 init 函数中对其进行初始化...

var Test = (function() {
var content;

var init = function() {
content = $('#content');
content.html('<p>test</p>');
};

return {
init: init
}
})();

现在您可以在所有模块的函数中使用内容变量。

希望这有帮助,请告诉我。

关于javascript - 使用模块模式时如何将jquery源代码拆分为多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808443/

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