gpt4 book ai didi

javascript - 如何在真实示例中使用 javascript 模块模式?

转载 作者:可可西里 更新时间:2023-11-01 01:56:34 25 4
gpt4 key购买 nike

我正在尝试理解 JavaScript 模块模式。我看过它应该是什么样子的示例,但我不明白如何使用它。

例如,这里发生了一些事情:

$('input#share').on("click", function() {

$('.loading').html('<img class="remove_loading" src="/graphics/loading.gif" />');

var message = $(".wallmessage").val();

if (message == ""){
$("#messageempty").jmNotify();
$('.remove_loading').remove();
} else {
addMessage(message);
}

return false;
});


function addMessage(message)
{
$.ajax({
url: '/test',
type: 'POST',
dataType: "json",
data: {'message' : message},
success: function(data) {
...
},
error: function() {
...
}
});
}

我如何使用上面的示例:

var myTest = function() {
var selectId;
function addMessage () {
// ...
}
return { // public interface
publicMethod1: function () {
// all private members are accesible here
}
};
};
var start = myTest();

我在哪里添加点击事件,声明我的变量,添加带有 ajax 调用的 addMessage 函数。并调用 addMessage 函数?我是否必须将所有内容包装在 $(document).ready(function() 中?

有谁能帮我解释一下吗?

谢谢

最佳答案

这是一个相当自以为是的主题,但我会这样做(在不完全了解您的完整应用程序及其功能的情况下),有点像这样:

var myApp = (function() {

var someElement = $("#foo"); //some element I know I'll use lots

var addMessage = function(message) {
$.ajax({
url: '/test',
type: 'POST',
dataType: "json",
data: {'message' : message},
success: function(data) {
...
},
error: function() {
...
}
});
};

var inputClick = function(event) {
event.preventDefault();
//depending on if you'll reuse these selectors throughout the app I might have these as variables
$('.loading').html('<img class="remove_loading" src="/graphics/loading.gif" />');

var message = $(".wallmessage").val();

if (message == ""){
$("#messageempty").jmNotify();
$('.remove_loading').remove();
} else {
addMessage(message);
}
};

var bindFunctions = function() {
$("input#share").on("click", inputClick)
};

var init = function() {
bindFunctions();
};

return {
// EDIT: 27/12/16 - need to return init for 'usage' example to work
init: init,
addMessage: addMessage
//anything else you want available
//through myApp.function()
//or expose variables here too
};


})();

//usage

myApp.init();

你的模式的原始代码是错误的,函数必须在最后有 (),使其成为一个立即调用的函数,然后执行,通过 return 语句 公开任何内容。

您可能希望与我所做的略有不同,这只是一个基本想法,但我希望它能帮助您入门。

不久前有人问了一个与此模式相关的问题,I answered it解释我们为什么使用 (function() {})(); 以及 return 语句如何在该上下文中工作,如果您对它有点困惑,那可能是值得的也读书。

关于javascript - 如何在真实示例中使用 javascript 模块模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042260/

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