`

kissy使用小结(2)模块化

 
阅读更多

1.页面中导入kissydev_index.html

<script src="http://g.alicdn.com/kissy/k/1.4.8/??seed-min.js,import-style-min.js" 

data-config="{combine:true}"></script>

seed.min.js默认加载压缩带min字样的jscss文件,seed.js则加载不带min字样的文件,相当于debug赋值为true

import-style-min.js用于加载css文件

data-config="{combine:true}"开启动态合并

2.配置模块

<script>

    var base = '../build';//当前文件的相对路径

KISSY.config({

debug:true,

        packages: [

            {

                name: 'bee-demo',

                base: base,

                ignorePackageNameInUri: true,

                combine:false

            }

        ]}

);

if(!KISSY.config('debug')){//利用KISSY.config('debug')倒换加载本地或网上资源

base = 'http://localhost:5555/bee-demo'

KISSY.config({

packages: [

    {

        name: 'bee-demo',

            base: base,

            ignorePackageNameInUri: true,

            combine:false

        }

    ]}

);

    }

</script>

3.引入样式

<script>

KISSY.importStyle('bee-demo/index.css');

</script>

4.加载脚本

<script>

    KISSY.use('bee-demo/index');

</script>

<!--[if !supportLists]-->5.<!--[endif]-->脚本主入口(index.js

var header = require('./header/header');

header.init();

<!--[if !supportLists]-->6.<!--[endif]-->header模块脚本

var $ = require('node').all;

module.exports = {

    init:function(){

        S.log('header init');

        $('header').html('this is header');

    }

}

 

注解

模块化

普通的模块化机制通过自调用匿名函数实现

(function(doc)){

//模块代码

}()

 

KMD规范

KISSY.add(name,factory,deps)//KISSY可以用S代替

name指代注册的模块名

js文件只有一个add函数的时候,模块名可以省略,默认用文件名代替模块名

factory若为函数,以回调的形式返回值,首个回传参数是KISSY全局对象,约定记为S

若为对象或字符串,模块的返回值就是该对象或该字符串

deps以对象形式记录依赖的模块,各模块以数组的形式赋为requires属性,同时将各模块作为回传参数传给factory函数,前提是factory是个函数

KISSY.add(module-name,function(S,mod-a,mod-b){

//模块代码

},{requires:[mod-a,mod-b]})

 

②以commonjs规范书写add函数,当且仅当js文件只包含一个注册函数的时候才能使用

KISSY.add(function(S,require,exports,module){

var A=require(mod-a);

return A;//或者module.exports=A;

})

 

KISSY.require(mod-a)加载已注册的模块

从包配置项base路径找不到相应的模块时,kissy会从http://g.tbcdn.cn/k/1.4.8中获取相应的模块,因此kissy内置的模块不需要加包名

除去模块名以外,require的参数可以使用当前文件的相对路径,这样会更灵活

 

KISSY.use(mod-a,mod-b,function(S,ModA,ModB){

//沙箱逻辑

});//以异步的方式载入模块,加载完成后运行沙箱逻辑

 

KISSY.config(name,pkg)预设配置项,name配置项名称,pkg配置项的值

或者以对象的方式传入多个配置项KISSY.config({name:pkg})

KISSY.config(name)可以读取相应的配置信息

配置项包括:packages,值是json对象,配置包

modules,值是json对象,配置模块间的依赖

base:类库所在的url,可以是本地文件的相对路径(相对于当前文件)

debug,默认false,默认加载带min字样的压缩文件,设成true开启debug模式

charest设置模块文件的编码格式,默认是utf-8

tag,异步加载文件时所带的时间戳

combine,是否开启动态合并,默认true,动态合并可以将多个文件请求合并成一个,通过data-config={combine:true}也可以开启动态合并,示例参考文章的顶部

comboMaxFileNum,动态合并文件的最大个数,默认40

comboMaxUrlLength,动态合并后产生的url最大长度,默认2000

KISSY.config({

modules:{

mod-a:{

requires:[mod-b,mod-c]

//供动态合并使用,假使嵌套使用KISSY.use()将无法支撑动态合并

},

mod-b:{

alias:[kg/offline/2.0.0/index]//kg/offline/2.0.0/index模块赋别名mod-b

}

},

packages:{

pkg-name:{

base:http://path/to/project/

}

},

combine:true,

charest:utf-8,

debug:false

})

KISSY.use(pkg-name/a,funciton(S,A))//载入包中的模块http://path/to/project/pkg-name/a.js

 

packages包配置相关属性:

name包名,模块名称路径起始,会拼接到请求的url中,通过将ignorePackageNameInUrl设为true忽略包名的拼接,比如KISSY.add(pkg-name/mod-a)将拼接pkg-name/mod-aconfig配置的base路径中,ignorePackageNameInUrl:true时则只拼接mod-a

ignorePackageNameInUrltrue时拼接路径忽略包名

debug是否开启包调试,默认false加载带min字样压缩文件,设为true时加载未压缩的文件

combine是否开启动态合并,默认为true

 

 

KISSY.importStyle(pkg-name/index.css)首先需要载入import-style-min.js文件

相比KISSY.use()异步加载,importStyle()采用同步的方式加载,阻塞html页面的解析过程,不至于因为没有完成加载css文件而使页面元素得不到样式渲染

 

⑦借助gulp-kmcNodejs依赖的commonjs规范书写代码

var $=require(node).all;

 

module.exports={

Init:function(){

S.log(header init);

$(header).html(this is header)

}

}

以上代码将被gulp-kmc编译成符合KMD规范的形式

KISSY.add(module-name,[node],function(S,require,exports,module){

var $=require(node).all;

module.exports={

Init:function(){

S.log(header init);

$(header).html(this is header)

}

}

})//module-namegulp读取文件名并赋值

 

参考

KISSY官网,KISSY模块定义规范http://docs.kissyui.com/1.4/docs/html/guideline/kmd.html

慕课网,玩转kissy框架http://www.imooc.com/learn/191

KISSY官网,loader子模块http://docs.kissyui.com/1.4/docs/html/guideline/loader.html

KISSY官网,config函数http://docs.kissyui.com/1.4/docs/html/api/loader/config.html

 

2
0
分享到:
评论

相关推荐

    kissy模块化实践

    ### Kissy模块化实践 #### 一、模块化思想与前端代码演变 模块化思想是一种将复杂系统划分为独立功能单元的设计方法,旨在通过明确各模块间的边界与接口,提高系统的可维护性、灵活性和可扩展性。在前端开发领域,...

    kissy学习教程

    在KISSY中,可以使用模块化的思想来组织JavaScript代码,这不仅提升了代码的可维护性,还提高了前端性能。此外,KISSY还提供了一些快捷的API,使得DOM操作更为简洁和高效,例如在示例中展示的Node模块的all方法。 ...

    kissy文件 kissyteam-kissyteam.github.com-901d2cd.rar

    通过这个压缩包,开发者不仅可以深入了解 Kissy 的实现原理,还可以学习到前端工程化的一些最佳实践,如模块化开发、自动化构建、测试驱动等。同时,Kissy 的模块化设计和良好的性能表现,使其成为构建大型前端应用...

    kissy 学习

    3. **异步加载**:Kissy 支持延迟加载和按需加载,这意味着只有在实际使用到某个模块时,它才会被加载到页面中,从而减少了页面的初始化时间和网络资源的消耗。 4. **兼容性**:Kissy 对旧版本的浏览器有较好的兼容...

    kissy源文件代码

    淘宝发布开源编辑器:KISSY Editor,和我们在 WordPress 后台使用的富文本编辑器 TinyMCE 一样,它可以让我们在线编辑和格式化文本,但是相比 TinyMCE KISSY Editor 更加轻巧,更加适合国内的网络环境。 KISSY ...

    Web常用UI库 kissy.zip

    1. **模块化**:Kissy基于CommonJS规范实现模块化,允许开发者将代码分割成多个模块,每个模块独立加载,减少页面初始化时的负担。这种模块化设计使得代码组织更有序,易于维护和扩展。 2. **兼容性**:Kissy对各种...

    使用KISSY实现视差滚动效果

    KISSY采用模块化的思想,允许开发者按需加载所需功能,减少不必要的资源浪费。要开始使用KISSY,你需要引入KISSY的核心库,并根据项目需求加载相应的模块,如DOM、Event等。 对于视差滚动的实现,我们主要关注两个...

    Kissy 15天学会.zip

    - **第十四天**:实践项目,通过一个小案例展示如何使用Kissy构建一个完整的前端应用。 - **第十五天**:总结回顾,解决常见问题,分享学习心得,为后续深入学习和工作打下基础。 这个压缩包中的“Kissy 15天学会”...

    Kissy学习教程

    在“Kissy学习教程”中,你可能会看到关于如何配置Kissy环境、如何编写和加载模块、如何使用DOM和事件处理的示例,以及如何创建和使用插件等内容。这些教程会逐步引导你深入理解Kissy的工作原理,并提供实践操作的...

    kissy-1.4.8.rar

    1. **模块化管理**:Kissy 强调模块化开发,采用 CommonJS 规范,允许开发者将代码分解为独立的模块,便于组织、重用和维护。每个模块都可以独立加载,降低了页面的加载时间,提高了性能。 2. **兼容性广泛**:...

    大规模组件的模块化开发

    2. 编辑器设计中的模块化实践: - **UEditor(战毅)**:UEditor是阿里云开发的一款开源富文本编辑器,其模块化设计允许用户根据需求选择功能,如图片上传、视频插入等,降低了整体加载负担。每个功能模块都封装...

    kissy editor 2.0

    1. **Kissy框架**:Kissy Editor 2.0基于Kissy JavaScript库构建,Kissy是一个轻量级、模块化的前端开发框架,提供了一套完整的组件化开发方案,使得编辑器具有良好的性能和稳定性。 2. **DOM操作**:利用Kissy的...

    淘宝KISSY前端开发框架

    KISSY提供稳定的核心,包括 oo、dom、Event、Anim、Ajax 等;强大且易用的脚本加载器,特有的 loader;丰富的UI组件,包括 Switchable、Overlay、Draggable and ...KISSY具备模块化、高扩展性、组件齐全等特性。

    修改的Kissy富文本编辑器

    1. **模块化设计**:Kissy Editor遵循Kissy框架的模块化思想,将各种功能如图片上传、表格操作、链接插入等拆分成独立模块,开发者可以根据需要选择加载,这样既节省资源,又方便定制。 2. **插件体系**:Kissy ...

    kissy最新开源包

    2. **DOM操作**:Kissy提供了丰富的DOM操作API,如选择元素、遍历节点、添加删除元素等,这些API性能优化良好,与jQuery有类似之处,但更专注于轻量化。 3. **事件系统**:Kissy的事件系统支持DOM事件和自定义事件...

    KISSY 小巧灵活、简洁实用的 UI 类库.zip

    作为一个JavaScript库,KISSY集成了模块化、事件系统、DOM操作、Ajax通信等多种功能,旨在为前端开发者提供一套全面而强大的工具箱。 模块化是KISSY的一大亮点。它采用AMD(Asynchronous Module Definition)规范,...

    KISSY Editor 一个小巧灵活的网页编辑器

    2. **初始化编辑器**: 创建一个div元素作为编辑器的容器,然后通过JavaScript调用KISSY.Editor实例化编辑器,并设置相关配置。 3. **配置编辑器**: 可以设置工具栏、语言、初始内容、过滤规则等,通过配置项定制...

    提示补全组件:Kissy Suggest

    标题中的“Kissy Suggest”是指Kissy框架中的一个组件,Kissy是一个轻量级的JavaScript库,专注于前端开发,提供了丰富的组件化功能。Suggest组件则是Kissy中用于实现自动提示、补全功能的部分,常见于搜索框或...

Global site tag (gtag.js) - Google Analytics