Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 如何更模块化地编写jQuery?_Javascript_Jquery_Django_Model View Controller_Jinja2 - Fatal编程技术网

Javascript 如何更模块化地编写jQuery?

Javascript 如何更模块化地编写jQuery?,javascript,jquery,django,model-view-controller,jinja2,Javascript,Jquery,Django,Model View Controller,Jinja2,我使用的是一个框架(Django),我在编写HTML时有很大的灵活性。我一直认为我编写jQuery的方式可能会更好 举个例子:大多数情况下,只要我们的站点上出现提交按钮,我们就会将其转换为一个更漂亮的按钮(采用原始值和行为,并基本上替换它)。这只是一个例子,但有很多使用案例,我在网站上放置了html片段,总体结构不知道页面上需要Javascript操作的内容。所以有两个问题:在100个页面上执行一些只在50个页面上使用的东西是否有效(jQuery插件首先搜索包装集),如果我真的想在jQuery中

我使用的是一个框架(Django),我在编写HTML时有很大的灵活性。我一直认为我编写jQuery的方式可能会更好


举个例子:大多数情况下,只要我们的站点上出现提交按钮,我们就会将其转换为一个更漂亮的按钮(采用原始值和行为,并基本上替换它)。这只是一个例子,但有很多使用案例,我在网站上放置了html片段,总体结构不知道页面上需要Javascript操作的内容。所以有两个问题:在100个页面上执行一些只在50个页面上使用的东西是否有效(jQuery插件首先搜索包装集),如果我真的想在jQuery中使用模块化的方法,我会怎么做?

有了适当的缓存,拥有一个缩小的.js文件肯定更有效。它将只加载一次,并且每页只有一个调用。如果将代码模块化,最终将执行更多请求,而不会节省任何时间来处理额外的js,因为它将被缓存

如果您的问题的基本关注点是。我目前正在学习

从这本书中:

函数是JavaScript的基本模块单元。他们是 用于代码重用、信息隐藏和合成

因此,在javascript中,所有函数都是对象,您可以使用对象文字符号将顶级结构定义为模块,方法如下:

/* only one global variable to encapsulate all your code */

var MAINOBJ= {};

jQuery(document).ready(function($) {

    /* modules */

    MAINOBJ.formStuff = {
        results : [],
        myFunction: function (){
            // code
            results = MAINOBJ.ajaxStuff.loadResults();
            // code
        }
    }

    MAINOBJ.ajaxStuff = {
        results : [],
        loadResults: function (){
            // code
            return results;
        }
    }

    /* DOM traversing */

    $('#myForm').submit(function(e) {
        e.preventDefault();
        MAINOBJ.formStuff.myFunction();
    });
})

实际上,这是我在wordpress/joomla等内部构造所有jquery代码的方法,在这里,我们与许多外国javascript代码共享同一范围。

这就是您需要的:。但它仍然是实验性的。现在看看谷歌闭包工具。

也许是Backbone.js?好问题,我昨天刚刚考虑过这个问题,希望看到一些关于我使用jQuery插件的建议。下面是一些您可能会觉得有用的样板代码。如果您担心将代码传播到多个文件上:多个源文件可以(而且应该)连接到一个文件中并缩小。但这不是OP在编程时应该担心的事情,这严格来说是一个构建时问题(或者,运行时问题,如果你有一个插件可以动态地完成这项工作的话)。在这种情况下,效率不应影响模块化。(编辑)但我想我第一次误解了你:你是对的,获取一个js文件可能比让这个脚本根据需要加载其他模块更有效(如果你是这个意思的话)。是的,但我要担心的不仅仅是提交。。。我对表单进行了验证。。。我有小部件。。。我的意思是,理想情况下,我可以在代码片段中添加一些javascript(我可以这样做吗?),这是像pubsub这样的东西的工作吗?我是否可以识别一个脚本并连续调用$(document).ready(并缓存document ready)?这种方法是否有点过于分段,也许我需要一种模块化调用东西的方法,但在定义代码时要有一种更加集中的方式?@xckpd7我不能回答这个问题,因为它最终将取决于您的情况。你想通过模块化你的代码来解决什么问题?混乱和不可维护性。。。我不想一直运行所有的东西,也不想让小部分Javascript散落在各处。我不是在问如何使用对象文字来组织我的代码。。。我想问的是,如何在可以混合匹配的小模块中实现我的代码。@xckpd7 Aha。知道了。也许[(Nicholas Zakas Scalable JavaScript Application Architecture)是您想要的。基于此视频,有一个关于[](编写模块化JavaScript)的简短教程。