I'm releasing v1.0 of using.js which introduces a new way of declaring dependency scripts in Javscript.
The way it works is simple. Add a <script src="using.js"> reference to the <head> tag:
<html>
<head>
<script type="text/javascript" language="javascript" src="using.js"></script>
<script type="text/javascript" language="javascript">
// your script here
</script>
</head>
<body> .. </body>
</html>
Then in your script, register your potential dependencies. (These will not get loaded until they get used!)
using.register("jquery", "/scripts/jquery-1.2.3.js");
Finally, when you need to begin invoking some functionality that requires your dependency invoke using():
using("jquery"); // loads jQuery and de-registers jQuery from using
$("a").css("text-decoration", "none");using("jquery"); // redundant calls to using() won't repeat fetch of jQuery because jquery was de-registered from using
$("a").css("color", "green");
Note that this is only synchronous if the global value of using.wait is 0 (the default). You can reference scripts on external domains if you precede the URL in the using.register() statement with true and/or with an integer milliseconds value, or if you set the global using.wait to something like 500 or 1000, but then you must write your dependency usage scripts with a callback. (UPDATE: v1.0.1: Simply providing a callback will also make the load asynchronous.) No problem, here's how it's done:
using.register("jquery", true, "http://cachefile.net/scripts/jquery-1.2.3.js");
using("jquery", function() {
$("a").css("text-decoration", "none"); //async callback
});
Oh, and by the way, using.register() supports multiple dependency script URLs.
using.register('multi', // 'multi' is the name
'/scripts/dep1.js', // dep1.js is the first dependency
'/scripts/dep2.js' // dep2.js is the secon dependency
);
The goals of using.js are to:
-
Seperate script dependencies from HTML markup (let the script framework figure out the dependencies it needs, not the designer).
-
Make script referencing as simple and easy as possible (no need to manage the HTML files)
-
Lazy load the scripts and not load them until and unless they are actually needed at runtime
If you have bug reports or suggestions, please post comments here or e-mail me at jon@jondavis.net.
相关推荐
**延迟加载(LazyLoad)...总之,LazyLoad类库是一个强大的工具,可以帮助开发者优化网页性能,提高用户满意度。通过合理利用延迟加载技术,我们可以构建更快、更高效的Web应用,同时减少服务器压力和用户等待时间。
例如,压缩包中的`LazyLoad.js`可能就是一个用于实现延迟加载功能的JavaScript库。这个库通常会监听用户的滚动事件,当检测到用户滚动到某个图像或元素时,就会触发对应的加载操作。同时,为了确保兼容性和性能,这...
1. 给需要延迟加载的图片设置一个自定义属性,例如lazy-src,该属性存储图片的真实地址。 2. 将所有需要懒加载的图片放入一个数组或列表中。 3. 在页面滚动时,通过JavaScript监听滚动事件(onscroll),并获取当前...
标题中的“一个用于构建在WebARonarkit和WebARonARCore中运行的ARWeb体验的threejs帮助类库”表明,这是一个基于three.js的类库,专门设计用于创建增强现实(AR)体验,可以在WebARonARKit和WebARonARCore平台上运行...
【标题】中的“一套非常优秀的基于jQuery .Net 扩展类库GridView控件源程序代码”指的是一个专门针对.Net框架开发的,集成了jQuery技术的Ajax功能库,它主要用于增强和扩展.Net平台上的GridView控件。GridView控件是...
- `JavaScript`:生成和管理JavaScript代码,例如延迟加载脚本、条件注释等。 6. **性能优化**: 为了提高Web应用性能,页面辅助类可能还包含一些优化策略,比如缓存常用元素,减少服务器端的计算负担。 7. **...
2. **DOM操作**:类库需要动态创建和更新DOM元素,如一个浮动的放大镜视图,来显示放大后的图片部分。这包括对`<img>`标签的获取、属性设置以及创建新的DOM节点。 3. **图像处理**:TJPzoom可能使用CSS3的`...
首先,要构建这样一个类库,我们需要理解 AJAX(Asynchronous JavaScript and XML)的基本概念。AJAX 不是一种单一的技术,而是一种利用已有技术(如 JavaScript、XMLHttpRequest 对象、DOM 和 CSS)实现的编程范式...
`Ext.Loader` 是 Ext4 中的一个核心特性,用于动态加载所需的 JavaScript 类库和模块,这在开发大型应用时尤其有用,因为它可以显著减少页面初次加载时的资源需求。 动态加载的核心在于按需加载,即只有在实际需要...
"xdh-map新德汇地图应用类库 v2.0.2.zip" 是一个软件工具,专注于地图应用的开发。这个类库提供了丰富的功能,帮助开发者在项目中集成地图展示和交互,尤其适用于毕业设计论文或者计算机案例研究。源码源代码的包含...
总的来说,腾讯X5内核浏览器类库3.5版本是一个强大而全面的解决方案,它为移动应用开发者提供了高效、安全且易于集成的浏览环境,使得开发人员能够专注于构建功能丰富、用户体验优秀的移动应用,而无需过于关心底层...
TJPzoom 是一个纯JavaScript实现的图片局部放大镜类库,它可以帮助开发者轻松地在网页上实现这种效果。本文将深入探讨TJPzoom 的工作原理、主要功能、使用方法以及相关知识点。 1. **工作原理** TJPzoom 的核心...
MingGeJS1.8.2是一个国产的JavaScript类库,其设计目标是为开发者提供一个高效、易用的工具集,类似于国际知名的jQuery库。在JavaScript开发中,类库如MingGeJS能够极大地简化DOM操作,提升网页的交互性和性能,同时...
该标题提到的是一个专门为ASP.NET+C#开发者设计的Ajax操作类库,目的是简化在Web网页中实现Ajax功能的过程。Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下更新部分网页的技术,它提高了...
ExtJS是一个用于构建富客户端Web应用的JavaScript框架,它引入了一个全新的类系统,旨在提高代码的组织性、可维护性和可扩展性。这个系统在ExtJS4中得到了重大升级,它对JavaScript的语法进行了扩展,引入了类定义、...
本文将深入探讨一个特定的开发工具——“百度地图类库 绘制弧线类”,这是一个基于Baidu Map API v1.5的开源代码库,专为开发者提供绘制弧线功能,以增强地图应用的交互性和视觉效果。 首先,我们要了解Baidu Map ...
Highcharts是一款广泛应用于Web开发中的JavaScript图表库,它允许开发者轻松创建各种动态、交互式的图表,包括但不限于直线图、曲线图、区域图、区域曲线图、柱状图、饼图和散点图等。这个库以其灵活性、易用性和...
`CMHTMLView` 是一个专门为iOS设计的开源类库,它使得在Objective-C或Swift项目中方便地显示HTML富文本成为可能。这个压缩包包含的就是`CMHTMLView` 的源代码,为开发者提供了一个直观的解决方案。 `CMHTMLView` ...
总的来说,"实现Ajax的智能提示效果类库"是Web开发中的一个重要组成部分,它结合了Ajax技术的异步特性,通过AjaxControlToolkit和AutoCompleteExtra等类库,为用户提供了更流畅、更智能的交互体验。开发者可以通过...
jQuery是一个广泛应用于Web开发的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。标题中的“jquery 1.3.2.js”指的是jQuery库的一个特定版本,即1.3.2。这个版本发布于2009年,是...