加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

用In.js颗粒化打点、加载你的Javascript模块

发布时间:2018-10-06 21:48:21 所属栏目:创业 来源:站长网
导读:近一年来,海表里都异常热衷于异步加载的研究,为了加速页面的载入速率,无阻塞加载 Java script的要领和框架成为了前端开拓的核心和亮点之一。 海外的像基于 jQuery 的RequireJs,YUI Loader,LabJs,RunJs,海内也有淘宝的SeaJs,豆瓣的DoJs等,这些都是

近一年来,海表里都异常热衷于异步加载的研究,为了加速页面的载入速率,无阻塞加载Javascript的要领和框架成为了前端开拓的核心和亮点之一。

In.js Logo

海外的像基于jQuery的RequireJs,YUI Loader,LabJs,RunJs,海内也有淘宝的SeaJs,豆瓣的DoJs等,这些都是一些异常优越的模块加载器。可是本文将会向各人先容一个新的开源的轻量级“多线程”异步模块加载器In.js,In的开拓小心了Do的一些思绪和行使风俗,在此时代感激@kejun同我的耐性交换,In.js压缩后只有4.77k,不只小巧并且异常好用。

利益:

  • 按需加载
  • 无阻塞加载
  • 依靠相关打点
  • 颗粒化模块打点

怎样行使?

A.引入In.js

<script type="text/javascript" src="in.js" autoload="true" core="jquery.min.js"></script>

只必要在页面顶部引入in.js即可,这里有两个参数必要留意:

autoload: 是否在加载in.js的时辰加载底层焦点库 – {可选参数 – true|false}
core: 底层焦点库的路径 – {可选参数 – url}

假犹如时配置了core,而且autoload=true,则在引入In.js的同时加载core到页面中。

B.声明各个模块的地点和依靠相关In.add(name,{config})

In.add('mod-a',{path:'mods/a.js',type:'js',charset:'utf-8'});
In.add('mod-b',{path:'mods/b.js',type:'js',charset:'utf-8',rely:['mod-b-css']});
In.add('mod-b-css',{path:'mods/b.css',type:'css',charset:'utf-8',rely:['mod-a']});

上述代码声明白三个模块的依靠相关和模块的地点,并将它们插手到行列中去(仅仅是插手行列,并没有加载到页面中去)。

C.加载行列In(queue)

var demo=In('mod-b',function() {
	//do something
},function() {
	//do something
	return false;
});

加载mod-b模块,加载完后执行functionA和functionB,在此假设引入in.js时配置了autoload=true,那么行列中的加载次序依次为:

jquery.min.js >>> mod-a >>> mod-b-css >>> mod-b >>> functionA() >>> functionB()

行列所有加载完成后,demo会被赋值为一个数组,个中存放的是每个function的返回值:

demo={returns:[undefined,false],complete:true}

D.在domReady之后加载行列In.ready(queue)

In.ready('mod-b',function() {
	//do something
});

行列加载次序:

jquery.min.js >>> {domReady} >>> mod-a >>> mod-b-css >>> mod-b >>> function()

In.ready()和In()的区别在于两点:

  1. In.ready()中的行列只有在domReady之后才会执行
  2. In.ready()没有返回值

E.监听变量变革,值改变则执行回调In.watch(object,property,function(prop,old,new) {})

因为In加载的行列均为异步非阻塞式加载,以是偶然辰为了非凡需求(好比后续的操纵依靠行列中function的返回值),我们必要在确保行列执行完成后,再执行后续操纵。这种环境下,可以用In.watch()监听return.complete变量,当return.complete==true的时辰执行回调函数,代码如下:

var model=In('model',function() {
	//do something
	return 123;
});
In.watch(model,'complete',function(prop,old,new) {
	if(model[prop]==true) {
		console.log(model.returns[0]);//print 123
		In.unwatch(model,prop);//destroy the watch event of model.complete
	}
});

————————-绮丽的支解线————————-

In的魅力远远不止上述这些,它的靠得住性也已经在几个大项目中获得了印证,除此之外,In也有智能的提醒,好比假如用In()加载一个事先未声明的模块,就会提醒你搜查模块名。真心的但愿有更多的前端伴侣存眷In,行使In,乃至投入到In的后续开拓中来。

下图是In.js的英文版行使图册:

用In.js颗粒化打点、加载你的Javascript模块
点击看大图

在哪下载?

In.js是一个开源的项目,你可以在下边的地点找到它的源代码可能下载它行使。

http://project.benben.cc/In
http://github.com/PaulGuo/In

本文来历:http://www.css88.com/archives/3833

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读