`

kissy使用小结(1)工程构建工具bee

 
阅读更多

1.npm install yo gulp -g

2.npm install generator-bee -g脚手架工具bee依赖于yeoman

3.项目文件夹下运行yo bee,将自动生成kissybee-demo文件目录

或者访问https://github.com/minghe/bee-demo下载bee-demo项目

使用yo bee生成的文件目录没法正确执行npm install命令,github上下载的可以???

4.npm install根据package.json下载需要的node插件

5.运行gulp压缩编辑jscss文件,通过gulp-kmc将启动本地端的server服务,默认的访问地址在http://localhost:5555,只能访问build目录下的jscss文件

 

注解

1.package.json配置文件载入Node模块

{

  "name": "cms",

  "version": "1.0.0",

  "description": "this is an kissy bee project",

  "main": "index.js",

  "devDependencies": {

    "bufferstreams": "0.0.2",

    "gulp": "^3.9.0",

    "gulp-copy": "0.0.2",

    "gulp-filter": "^3.0.1",

    "gulp-kclean": "^1.0.5",

    "gulp-kmc": "^1.0.33",

    "gulp-less": "^3.0.3",

    "gulp-mini-css": "0.0.3",

    "gulp-minify": "0.0.5",

    "gulp-minify-css": "^0.3.11",

    "gulp-rename": "^1.2.2",

    "gulp-uglify": "^1.0.1",

    "gulp-util": "^3.0.0",

    "gulp-xtemplate": "^1.2.2",

    "memory-cache": "0.0.5",

    "xtemplate": "3.3.3"

  }

}

 

参考

package.json字段全解http://blog.csdn.net/woxueliuyun/article/details/39294375

npm命令概述http://realwall.cn/blog/?p=120

常用npm命令http://my.oschina.net/robinjiang/blog/168732

 

2.glupfile.js配置gulp工作流

var gulp = require('gulp');

var kmc = require('gulp-kmc');

var less = require('gulp-less');

var css = require('gulp-mini-css');

var kclean = require('gulp-kclean');

var rename = require("gulp-rename");

var filter = require('gulp-filter');

var minify = require('gulp-minify');

var XTemplate = require('xtemplate');

var gulpXTemplate = require('gulp-xtemplate');

var path = require('path'); //node内置路径模块

var fs = require('fs'); //node内置文件模块

var src = "./src",

    dest = "./build";

 

//包配置

var pkg = "bee-demo";

var comboSuffix = '-combo';

 

kmc.config({

    packages:[{

        name: pkg,

        base: src

    }]

});

 

kmc.server({ //开启本地服务器

    port:5555,

    fixModule:true,

    path: dest,

    kissy:true

});

 

 

var dirs = fs.readdirSync(src); //同步读取文件目录

 

var kissyFiles = [];

dirs.forEach(function(i){

    var stat = fs.statSync(path.join(src,i)); //拼接路径,获取文件信息

    //排除非版本号目录

    if(stat.isFile()&&new RegExp(/.*\.js/).test(i)){

        kissyFiles.push(i);

    }

});

 

//使用kmc合并并编译kissy模块文件

function renderKmc(fileName){

    var comboFiles = fileName.map(function(name){

        return {

            src: pkg+"/"+name+".js",

            dest: name + comboSuffix+".js"

        };

    });

    var cleanFiles = fileName.map(function(name){

        return {

            src:name+comboSuffix+'.js',

            outputModule:pkg+'/'+name

        };

    });

    return gulp.src([src+'/**/*.js']) //gulp.src待处理文件

        //转换cmd模块为kissy模块

        .pipe(kmc.convert({ //pipe方法由stream提供,不属于gulp,流水线处理

            kissy: true,

            ignoreFiles: ['-min.js']

        }))

        //合并文件

        .pipe(kmc.combo({

            deps:'deps.js',

            files:comboFiles

        }))

        //优化代码

        .pipe(kclean({

            files:cleanFiles

        }))

        .pipe(minify())

        .pipe(filter(function(file){

            var files = fileName.map(function(name){

                return name+comboSuffix+'.js';

            });

            return files.indexOf(file.relative) == -1;

        }))

        .pipe(rename(function(file){

            fileName.forEach(function(name){

                file.basename = file.basename.replace(name+comboSuffix+'-min',name+'-min');

            })

        }))

        .pipe(gulp.dest(dest)); //gulp.dest处理后的文件存放点

}

 

 

gulp.task('kmc', function() { //gulp.task约定任务

    return renderKmc(kissyFiles);

});

gulp.task('mini-css', function(){

    return gulp.src([src+'/**/*.css'])

        .pipe(gulp.dest(dest))

        .pipe(css({ext:'-min.css'}))

        .pipe(gulp.dest(dest));

});

gulp.task('less', function(){

    return gulp.src([src+'/**/*.less'])

        .pipe(less())

        .on('error',function(e){

            console.log(e);

        })

        .pipe(gulp.dest(src));

});

gulp.task('css',['less','mini-css']);

gulp.task('xtpl',function(){

    return gulp.src(src+'/**/*.xtpl')

        .pipe(gulpXTemplate({

            wrap: 'kissy',

            XTemplate: XTemplate,

            renderJs: 'none'

        }))

        .on('error',function(e){

            console.log(e);

        })

        .pipe(gulp.dest(src));

});

gulp.task('watch', function() {

    gulp.watch(src+'/**/*.xtpl', ['xtpl']);

    gulp.watch(src+'/**/*.less', ['css']);

});

gulp.task('default', ['kmc','css','watch']);

 

/*

kmc.conver编译由cmd规范编写的代码,参数为对象

modulex:true更换成符合kissy5.0.0原则的代码

kissy:true更换成符合KMD规范的代码

define:true更换成用define包裹的代码,符合seajs书写规范

ignoreFile:[-min.js]配置需要忽略的文件

示例:kmc.convert({

            kissy: true,

            ignoreFiles: ['-min.js']

       })

kmc.combo动态合并js文件,参数是对象

files值为数组,src文件的来源,dest文件的最后归属,依赖于kmc.config配置的包名和src文件的来源信息

deps值为字符串,通常为deps.js,以KISSY.config函数设置了文件之间的依赖

示例:kmc.config({

packages:[{

name:bee-demo,

base:./src

}]

  ]};

  kmc.combo({

   files:[{

     src:bee-demo/index.js,

dest:index-combo.js

    }],

deps:deps.js

  })

最终将生成如下的依赖表文件

KISSY.config(modules,{

mod-a:{

requires:[mod-b,mod-c]

}

})

或者如下的依赖表文件

KISSY.config(requires{

mod-a:[‘’mod-b,mod-c]

})

kclean为合并后的文件提升起见,用单字母简化传递的模块参数和require函数  */

 

/*

gulp.src通过Node-golb模块获取本地文件,返回可以传递给插件的数据流

*.js匹配所有js文件

js/**/*.js匹配js目录下所有的js文件

!app.js不包含app.js文件

*.+(js|css)匹配jscss文件

gulp.dest处理后文件的存放点,该方法需要放置在pipe流中

.pipe实现流水线操作

gulp.task(task-name,function(){})定义任务,命令行输入gulp task-name启动该任务

default默认执行的人物,命令行输入gulp即启动

gulp.watch(js/*.js,[task-name])监听文件,并执行相应的任务

watcher.on(change,function(){})通过绑定事件的方法输出监听信息 */

 

参考

Gulp开发教程http://www.w3ctech.com/topic/134

Gulp开发指南http://www.techug.com/gulp

慕课网玩转kissy框架http://www.imooc.com/code/4488

 

 

 

分享到:
评论

相关推荐

    generator-bee:kissy简单工程构建器,强调简单和快速,没有复杂的工程分级和复杂的命令功能

    generator-bee是kissy简单工程构建器,跟generator-xcake和generator-clam有所不同,强调简单和快速,没有复杂的目录分级和复杂的命令功能,不是以页面作为划分维度,适用于小工程构建。 generator-bee 遵循最新的...

    bee-demo:generator-bee的demo工程,generator-bee是kissy简单工程构建器,强调简单和快速,没有复杂的工程分级和复杂的命令功能

    调试模块文件使用CMD规范,是无法使用源码直接调试的,所以bee 内置了个本地静态服务,运行:gulp会编译文件到build目录,同时会起一个本地server,访问:,就是访问bee-demo/src/index.js文件。包配置路径指向本地...

    kissy-1.4.8.rar

    9. **构建工具**:Kissy 提供了构建工具,可以帮助开发者进行代码的预处理、合并、压缩等操作,使得前端开发流程更加自动化和高效。 10. **MVC模式支持**:Kissy 支持Model-View-Controller(MVC)设计模式,帮助...

    Kissy 15天学会.zip

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

    kissy源文件代码

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

    Web常用UI库 kissy.zip

    - `build`脚本:用于构建和打包Kissy库的工具,可以生成不同配置(如压缩、未压缩版本)的库文件。 - `README`或`README.md`文件:项目简介和使用指南,介绍如何安装和使用Kissy。 在实际项目中,开发者可以根据...

    kissy editor 2.0

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

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

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

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

    **KISSY Editor** 是一个轻量级且高度可定制的网页编辑器,它专...这个小巧灵活的网页编辑器是开发人员构建富文本输入界面的一个强大工具,通过深入理解和实践,我们可以利用它创建出满足各种需求的定制化编辑器体验。

    Kissy学习教程

    Kissy 提供了一系列实用的工具方法,例如DOM操作、事件处理、Ajax请求等,这些都是前端开发中不可或缺的部分。通过Kissy,我们可以轻松地对DOM元素进行增删改查,监听和处理用户事件,以及与服务器进行异步通信。 ...

    提示补全组件:Kissy Suggest

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

    kissy Web编辑器,小巧灵活,简洁实用

    1. 小巧灵活:Kissy Web编辑器的体积小,加载速度快,不会对网站性能造成过大负担。它通过优化代码和减少不必要的组件,实现了在网页环境中快速响应用户操作,提供了流畅的编辑体验。同时,其灵活性体现在可以轻松地...

    kissy学习教程

    通过使用KISSY.use()方法,可以加载并使用KISSY框架中的不同模块,比如node模块。 最后,教程通过一系列动手实践的示例,让学习者能够更加直观地了解和使用KISSY框架。在KISSY中,可以使用模块化的思想来组织...

    使用KISSY实现视差滚动效果

    KISSY是一个轻量级的JavaScript库,旨在提供一个简洁且强大的工具集,帮助开发者快速构建复杂Web应用。视差滚动是一种增强网页用户体验的视觉技巧,通过不同层元素在滚动时以不同的速度移动,创造出深度感和动态效果...

    JS开源编辑器 Kissy Editor

    1. **界面美观**:Kissy Editor提供了直观且友好的用户界面,设计风格简洁,色彩搭配和谐,使得用户在编辑过程中拥有良好的视觉体验。此外,编辑器支持自定义皮肤,可以根据项目需求进行个性化定制。 2. **插件扩展...

    kissy最新开源包

    这个框架的主要目标是提供一套高效、灵活且易于使用的工具,以帮助开发者快速构建前端应用。Kissy的名字来源于“简单易用”的理念,旨在简化前端开发流程,提升开发效率。 在Kissy 1.3.0版本中,我们可以期待一些...

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

    1. **组件化开发**:KISSY 提供了一套完善的组件体系,允许开发者将 UI 组件进行模块化封装,通过组合这些组件来构建复杂的用户界面。这使得代码结构更加清晰,易于维护和扩展。 2. **事件系统**:KISSY 引入了事件...

    kissy 学习

    1. **模块化**:Kissy 基于CommonJS规范,采用模块化的设计思想,允许开发者将代码分割成多个模块,每个模块专注于特定的功能,便于代码的重用和维护。通过`require`和`exports`关键字,我们可以方便地引入和导出...

    修改的Kissy富文本编辑器

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

    淘宝KISSY前端开发框架

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

Global site tag (gtag.js) - Google Analytics