处理大型JavaScript项目的提示

时间:2010-12-17 16:29:36

标签: javascript jquery json

我有一些使用JavaScript的经验 - 但主要是一些小东西,我以前从来没有在Javascript中做过任何大事。

然而,现在,我正在做一个与javascript相关的大型项目,一个jquery驱动的前端,它通过Ajax发送/接收JSON与服务器端后端通信。

我想知道您是否可以提供一些有关如何处理大型JavaScript项目的有用信息 - 是否有任何有用的工具/图书馆/良好做法?

提前致谢。

6 个答案:

答案 0 :(得分:5)

我的一个重要提示是模块化

在JavaScript中,变量很容易破坏其他变量。为了避免这种情况,模块化是必须的。有几种方法可以利用JavaScripts范围规则来最小化可变冲突的可能性。

var myProject = {};

myProject.form = function(p_name, p_method, p_action)
{
    var name = p_name,
        method = p_method,
        action = p_action;
    var addInput = function(p_input)
    {
        // etc...
    }

    return {
        addInput: addInput,
        name: name
    };
}

myProject.input = function(p_name, p_type, p_value)
{
    var name, method, value;
    var setValue = function(p_value)
    {
        value = p_value;
        return true;
    }

    return {
        setValue: setValue,
        name: name
    };
}

// etc...

如果您在使用var时要小心,并且要跟踪您的功能范围,那么您只有一个全局变量 - myProject

要获取新表单对象,您只需执行以下操作:var myForm = myProject.form('form1', 'post', 'post.php')

答案 1 :(得分:4)

您可能需要查看 Backbone.js

  

Backbone供应结构   JavaScript重量级的应用程序   提供具有键值的模型   绑定和自定义事件,集合   具有丰富的可枚举API   函数,具有声明性的视图   事件处理,并将其全部连接到   你现有的申请表   RESTful JSON接口。

答案 2 :(得分:2)

jQuery and YUI 3: A Tale of Two JavaScript Libraries在复杂应用程序的上下文中对它们进行了很好的比较,并为jQuery程序员提供了有用的提示。

答案 3 :(得分:2)

格里戈里,

即使我在几个月前从后端移动到用户界面只能遵循这种方法

  1. 阅读jquery的所有概念 无论是谷歌还是一些 预订或通过jquery 文档。
  2. 遵循一些jquery最佳做法http://psdcollector.blogspot.com/2010/03/77-best-jquery-tips-i-have-ever-read.html
  3. 为所有重复的代码编写utitlity函数,如getcookie,subsstrings等等
  4. 由能够指导您的有经验的人员继续审核您的代码
  5. 如果卡在任何地方,请发布到stackoverflow。
  6. 因为它是一个大项目分成多个文件并使用适当的命名说服。
  7. 如果您还有其他需要,请告诉我

答案 4 :(得分:1)

最好的建议是将代码分割为不同的文件作为“类”。我个人讨厌在一个超过几百行的文件中工作。

然后使用网络上的某个工具汇总和缩小代码,例如ShrinksafeGoogle Closure Compiler

请注意,Dojo,YUI和Ext都旨在处理大型Ajax应用程序。你会对jQuery有点挣扎。但我猜这个应用程序并非全部 大而且你应该没问题。

答案 5 :(得分:0)

您是否考虑过结帐MooTools?

MooTools是一款紧凑的模块化Object-Oriented JavaScript framework,专为中级到高级JavaScript开发人员而设计。它允许您使用优雅,文档齐全且一致的API编写功能强大,灵活且跨浏览器的代码。