中文前端UI框架Kit(十三)使用RequireJs托管你的类库和js代码

摘要:
^^需要注意的是,只有在代码中定义了返回值时,requireJs的define方法加载的模块才有返回对象。如果未定义,则与js的正常异步加载和执行相同。但是通过添加js依赖,我们真的可以消除很多显式应用的js代码的依赖,对吗?

号外:kitjs官方讨论QQ群建立了,QQ群号88093625,欢迎大家加入,讨论前端相关话题

kit内置支持requireJs托管,可以使用requireJs加载和管理KitJs框架内的所有组件和类库

最近园子里有很多讨论requireJs(http://requirejs.org/)的兄弟,requireJs托管js代码的好处有

1.通过闭包提供了一个安全沙箱,保证js代码不会互相污染

2.基于AMD规范,支持了js的依赖关系,实现了依赖载入

3.对于大量跨域,或者大量重复的依赖,提供一个基于程序的打包合并压缩的工具

kitjs整合了requireJs的好处是,可以让显式申明在网页的js加载更少,同事也让kitjs可以完全模拟jQuery的代码写法

demo地址:http://xueduany.github.com/KitJs/KitJs/demo/Requirejs/t1.html

查看源代码,我们可以看到,整个页面,我们只需要引用require.js一个js,其他文件都是通过同域,异步加载过来的

require(['kit'], function(dependency) {
                define('', ['suger', 'widget/Mask/mask', 'widget/Dialog/dialog'], function($) {
                    var d = new $kit.ui.Dialog();
                    d.init();
                    d.center();
                });
            });
          

先通过require方法载入kit.js的core,然后通过define加载suger.js,在suger.js内部有这样的实现

image

在suger.js代码内部申明了suger.js模块的依赖关系,同时定义了suger.js模块返回对象为$kit.$方法,把这个方法传给后面的匿名方法的第一个参数$,这样就可以用 $符号使用$kit.$方法了,这样写出来的js代码就和jQuery代码完全一样。^^

需要注意的是,requireJs的define方法加载的模块,只有在代码内部定义了返回值时,才有返回对象,如果没有定义则和普通的异步加载js并执行无异,只是多了一个js依赖关系

有了这个依赖关系,我们确实可以省去显式申请很多的js代码的依赖了,是不?同学,赶紧试一试吧

jsdoc地址:http://xueduany.github.com/jsdoc/out/global.html#define

免责声明:文章转载自《中文前端UI框架Kit(十三)使用RequireJs托管你的类库和js代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇App自动化之native和webview之间的切换【多测师_王sir】tornado项目下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

百度地图-js-图标标注不显示---已解决

一个小图,一个大图,走的逻辑都一样 小图不显示图标,大图可以显示 找到原因了,代码问题,我强行设置了旋转角度 if(points[listLast].direction!=0){$('.BMap_Marker img').rotate(points[listLast].direction);}  此处会影响,去掉了 还有var myEndIcon =...

JS来推断文本框内容改变事件

oninput,onpropertychange,onchange的使用方法 onchange触发事件必须满足两个条件: a)当前对象属性改变,而且是由键盘或鼠标事件激发的(脚本触发无效) b)当前对象失去焦点(onblur); onpropertychange的话,仅仅要当前对象属性发生改变,都会触发事件,可是它是IE专属的; oninput是onpr...

js-实现鼠标滑轮滚动实现换页

html页面: 1 <!--首页一--> 2 <div id="nav_div1"><div class="nav_size"></div></div> 3 4 <!--首页二--> 5 <div id="nav_div2"></div> 6 7 <!...

Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务

写在前面 网关的作用不在此赘述,举个最常用的例子,我们搭建了微服务,前端调用各服务接口时,由于各服务接口不一样,如果让前端同事分别调用,前端同事会疯的。而网关就可以解决这个问题,网关屏蔽了各业务服务的端口,对前端同事来说,他们只负责调用网关服务端口下的服务就可以了。本文简单描述如何使用Spring Cloud全家桶中的网关服务,再配以Nacos。关于Nac...

iOS H5容器的一些探究(一):UIWebView和WKWebView的比较和选择

一、Native开发中为什么需要H5容器 Native开发原生应用是手机操作系统厂商(目前主要是苹果的iOS和google的Android)对外界提供的标准化的开发模式,他们对于native开发提供了一套标准化实现和优化方案。但是他们存在一些硬伤,比如App的发版周期偏长、有时无法跟上产品的更新节奏;灵活性差,如果有较大的方案变更,需要发版才能解决;如果存...

Cocos Creator 实现大厅+子游戏模式

大厅+子游戏的模式,在棋牌类型、教育类型游戏中比较常见,通常是安装包里面只有大厅的资源和代码,然后子游戏根据需求以热更新的方式下载来提供给玩家。 之前一直负责的是cocos2dx-lua的开发,lua作为脚本语言,非常适合做热更新及大厅+子游戏模式的开发。而cocos creator使用的是js或者ts,作为脚本语言也是很方便做热更新的,但是js编译是把所...