记录javascript库依赖项的最佳实践

时间:2011-06-22 19:32:04

标签: javascript dependencies conventions

因此,您在外部.js文件中创建了一堆代码,该文件需要jQuery及其一些插件,或MooTools,或者可能是一些更深奥的库。显然,当你在每个脚本中加载时,实际的“include”是在HEAD部分的主机HTML页面中完成的。

但作为可移植性的最佳实践,您的JavaScript .js文件中存在哪些内置功能或广泛采用的约定,以确保使用您的代码的下一个schmoe还记住还包含其他所需的库?

我正在寻求开发者社区的一些共识,所以请务必投票选出最常见的或您最熟悉的答案。

4 个答案:

答案 0 :(得分:7)

jQuery UI在文件头中添加了小部件的依赖关系:

/*
* jQuery UI Effects Bounce @VERSION
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Effects/Bounce
*
* Depends:
* jquery.effects.core.js
*/

现在很遗憾,JavaScript依赖关系管理器的使用方式比它们应该少,但是如果你可以让你的库用户切换到一个,你根本就不用担心:

显式检查也许是一个好主意,因为如果某些插件可用或不可用,您可以动态做出反应(例如,如果找不到jQuery UI对话框则抛出异常,或者只是优雅地降级并显示简单模态窗口):

if(!$.isFunction($.fn.dialog)) {
    throw "Could not find jQueryUI dialog. Please include jQuery UI";
}

这样,如果不满足可选的依赖项,您的脚本就不必完全破坏。

答案 1 :(得分:6)

对于那里的Visual Studio开发人员,您可能希望在标题中尝试这样的块

/// <reference path="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6-vsdoc.js" />
/// <reference path="thirdparty/ba-debug.js" />
/// <reference path="thirdparty/underscore.js" />

虽然这不能解决您的依赖关系,但它会记录它们,并且它会在Visual Studio中为您提供智能感知...

请参阅http://msdn.microsoft.com/en-us/library/bb385682.aspx,然后查找引用指令(没有名称 id 直接链接到,抱歉.. 。)

答案 2 :(得分:3)

我的js标题看起来像这样:

////////////////////////////////////////////////////////////////////////////////
//
//  src:        www.someDomain.com/js/modules/etc
//  author:     someguy
//  date:       6-22-11
//  intent:     what is the purpose / use of this module
//  package:    prototype parent
//  requires:   jquery.1.4.js
//              fancybox
//              etc
//
////////////////////////////////////////////////////////////////////////////////

我的团队中的任何人都非常清楚任何依赖关系,这已经证明非常可靠。作为(希望)次要措施,我将始终在运行时测试这些依赖项,并在不包含脚本时抛出警报。

答案 3 :(得分:0)

我始终认为,软件工程师应该始终知道,或者至少要提醒他们,不得不知道他们在做什么。他们应该自己保留依赖列表,并非常清楚他/她为什么需要它们。无论如何,页面中都没有很多js文件。

我认为如果浏览器有jQuery和一些很好的插件应该很好,所以我们不需要在页面中包含它们以节省流量。