何谓安需装载?
脚本程序一般都是下载后执行 ,当脚本库非常庞大时,一次性下载起来非常费时,传统的解决方式是,按功能模块把脚本写在不同的文件中,页面上手动加入script标签装载指定内容,但 是这有一些缺点,类库的使用者需要知道没个脚本之间的关系,顺序要求等等,而不可能要求每个类库使用者都对其非常熟悉,出错的可能性很大。于是很多框架开 始支持导入指令,想使用什么一个导入函数就完了,不必一堆堆的script文件,不用小心翼翼的关注着他们的依赖关系。
安需装载可分如下三种模式:
-
即时同步按需装载(阻塞,JSI、JSVM、dojo)。
最简单的按需装载实现,通过XMLHttpRequest同步装载脚本文件实现。问题是,浏览器使用这种方式同步获取资源时将导致浏览器阻塞:停止响应用户事件、停止页面重画操作。所以,虽然编程最为简单,但是用户体验最差。
-
异步按需装载(无阻塞,JSI2.0+)。
异步导入,不必多做解释,用户体验好,但是因为其异步特征,处理起来比较麻烦。
-
延迟同步按需装载(无阻塞,JSI2.0+)。
JSI通过动态预装载功能实现的一种同步获取资源的方法,虽然也是同步,但没有阻塞,可以算时兼顾易用性和用户体验的机决方按。缺点时有一定延迟,当前脚本标签中不可用。
使用方法(JSI示例)
以一个代码语法着色程序为例:
类库位置:example/
codedecorator/code.js
页面位置:example/xxx.html
-
即时同步按需装载
js 代码
-
$import("example.codedecorator.Code");
-
- var code1 = new Code();
- code1.id = "libCode";
- code1.decorate();
-
异步按需装载
js 代码
-
$import("example.codedecorator.Code",function(Code){
- var code1 = new Code();
- code1.id = "libCode";
- code1.decorate();
- })
-
延迟同步按需装载(无阻塞,JSI2.0+)。
xml 代码
- <script>"../scripts/boot.js"><\/script>
- <script>
-
$import("example.codedecorator.Code",true);
- <\/script>
-
- <script>
- var code1 = new Code();
- code1.id = "libCode";
- code1.decorate();
- <\/script>
示例说明:
下载后最好能放到一个能受到网速限制的服务器上,只有这样才能看到阻塞的问题。
第一次发布仅再ff上测试通过。
第二次发布修正ie上的错误。
第三次发布修正opera上的错误。
在线测试
http://jsintegration.sourceforge.net/example/code.html
http://www.xidea.org/project/jsi/example/code.html
参考:
JSI 导入函数: function $import(path, callbackOrLazyLoad, target )
JSI2 预览版下载:http://groups.google.com/group/jsier/files
分享到:
相关推荐
【标题】中的“js提示框-转载+++ js 乱码+++自动提交+滚动图片加载+箭头导航(转载)”揭示了几个重要的JavaScript编程知识点,主要包括以下几个方面: 1. **JavaScript 提示框**: JavaScript 提示框是浏览器内置的...
在实际应用中,动态进度条可以用于文件上传、数据加载、计算过程等多种场景。例如,当用户发起一个大文件上传请求时,后台处理文件的同时,前端可以通过JavaScript实时更新进度条,让用户知道任务的进度,提高用户的...
通常,`.js`文件是JavaScript源代码文件,`full`版本可能包含了所有功能,而简化的`Engine.js`可能只包含了必要的部分,用于减少页面加载时间或优化性能。这些文件可能包含了字典数据、转换算法和相关的辅助函数,...
标题“JS高手做的”暗示了这是一个使用JavaScript编程语言完成的项目或应用,而描述中的“全部用JS完成,一个JS高手做的,特转载”进一步强调了这个项目完全依赖JavaScript技术,并且是由一位经验丰富的JavaScript...
JavaScript,简称JS,是一种广泛用于Web开发的轻量级...通过学习以上知识,并结合"3d_js"文件中的示例,开发者可以逐步掌握JavaScript实现3D效果的技术。不断实践和探索,可以创造出更多令人惊叹的3D交互式网页应用。
总的来说,Dojo是一个强大且灵活的JavaScript库,它通过模块化和包的概念提供了高效的代码组织和按需加载功能。理解和熟练运用这些概念,将有助于你在开发过程中更加得心应手。通过不断学习和实践,你将能够充分利用...
Resources目录则包含了EXT运行所需的图片资源和CSS样式文件,其中ext-all.css是基础样式文件,定义了EXT的默认样式。此外,还有三种主题样式文件(xtheme-aero.css、xtheme-gray.css、xtheme-vista.css),可供...
随着项目规模的扩大,这些依赖包最终会被打包到vendor.js中,导致这个文件体积过大,影响页面的加载速度。文章《解决vue打包后vendor.js文件过大问题》为我们提供了一系列解决方案,旨在减小vendor.js文件的大小,...
瀑布流的核心是通过JavaScript库jQuery来处理元素的布局和动态加载。jQuery是一个轻量级的JavaScript库,简化了HTML文档遍历、事件处理、动画设计和Ajax交互。在这个项目中,jQuery用于控制页面元素的动态显示,当...
接着,创建一个IFrame,并将其src属性设置为一个JavaScript表达式,这个表达式会在IFrame加载完成后调整其高度以适应图片的高度。最后,原图片被移除,IFrame替代了原图片的位置,这样图片就能在外部环境中正常显示...
在Vue.js项目开发中,有时候我们会在`index.html`文件中尝试引入静态资源,如CSS、JavaScript或图片等。然而,遇到"Resource interpreted as Stylesheet but transferred with MIME type text/html"这样的警告,意味...
通过配置`async`参数,并在`callback`中定义`beforeAsync`和`onAsyncSuccess`等回调函数,实现按需加载。 ### 8. 复选框功能 若需要启用复选框功能,需在`setting`中配置`check`参数,并在`zNodes`中为节点添加`...
在实际应用中,你可以通过引入该Js控件的JS文件,然后调用其提供的方法来实现在网页上添加农历日期的功能。例如,你可能需要设置初始日期、监听日期改变事件、自定义日期显示格式等。同时,为了确保版权合规,如果是...
- form_xml.js:这是一个JavaScript文件,可能包含了处理XML数据的脚本。JavaScript提供了DOMParser和ActiveXObject(IE特有)等API,用于解析XML。通过这些API,开发者可以动态地读取、修改XML文档,并在网页上显示...
- `js`目录可能包含实现图片浏览逻辑的JavaScript文件。 综上所述,这个项目是一个使用JavaScript和CSS构建的图片浏览应用,它可能具有响应式设计,能实现平滑的过渡效果,并且通过高效地利用资源来提高性能。...
在这个main.js文件中,我们执行了app=new Vue(app),并且这个app会被push到小程序页面堆栈中。小程序的页面跳转会触发相应App实例中的生命周期函数。因此,我们可以在初始化时对App实例进行全局存储,并在页面跳转时...
6. 进行字体加载测试,确保字体按预期显示。 通过以上步骤,我们可以将自定义字体成功引入到Vue项目中,并应用于不同的页面元素,从而增强网站的视觉效果和品牌形象。 以上所述就是关于Vue引用自定义ttf、otf、...
3. 应用组件:在小程序的WXML文件中,按照库提供的示例代码添加所需的组件,通过设置不同的属性来满足个性化需求。 4. 自定义样式:如果需要进一步定制,可以使用 scoped 样式或自定义类名,覆盖库中的默认样式,以...