因此,您在外部.js文件中创建了一堆代码,该文件需要jQuery及其一些插件,或MooTools,或者可能是一些更深奥的库。显然,当你在每个脚本中加载时,实际的“include”是在HEAD部分的主机HTML页面中完成的。
但作为可移植性的最佳实践,您的JavaScript .js文件中存在哪些内置功能或广泛采用的约定,以确保使用您的代码的下一个schmoe还记住还包含其他所需的库?
我正在寻求开发者社区的一些共识,所以请务必投票选出最常见的或您最熟悉的答案。
答案 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和一些很好的插件应该很好,所以我们不需要在页面中包含它们以节省流量。