avalon.oniui
avalon.oniui copied to clipboard
如何打包
推荐使用requirejs打包【,webpack的坑还没有淌过】,并禁用avalon自带的loader或者直接使用avalon.shim.js
大致的思路【只打包oniui,下面的一个回复有介绍打包oniui + 项目】
1,output.js - 在该文件里define(["uiname.js"], function() {}),引入用到的组件
2,build.js
npm install requirejs
// build.js
var requirejs = require("requirejs")
requirejs.optimize({
baseUrl: 'oniui目录',
name: "output",
out: "输出文件.js"
}, function(res) {
console.log(res) // 成功
}, function(err) {
console.log(err) // 出错
})
```·
3,css.js【自行实现,你可以在这个里面自己去读取并合并css,省事的话,可以直接把oniui里面所有的css文件全部筛选出来,拼凑在一起就可以了】
```javacript
define(['module'], function (module) {
return {
load: function(name, localRequire, onLoad) {onLoad();return ""},
get: function() {
return ""
},
write: function(pluginName, moduleName, write, config) { // 这个是node环境打包时候调用
// 如果不想内联css到js内,可以在这里把css文件的路径写入到外面一个css【比如main.css】内,再另行打包
write.asModule(pluginName + "!" + moduleName, "define({});\n"); // 你也可以在这里返回一个字符串,然后直接在页面里创建style标签,写入style规则
}
};
})
你可以使用开源的require-css,该工具打包后会将css内联
此外你还需要text.js,requirejs插件,将css.js和text.js放在oniui根目录(也有可能是node_modules目录)
4,node build.js
这里有一个基于requirejs的打包详细例子【requirejs和用gulp集成requirejs版】:
https://github.com/gogoyqj/mmRouter-demo-list/tree/master/requirejs
tips:如果用requirejs打包,则不能用avalon自带的加载器,截止目前必须采用requirejs的加载器
我的main.js代码如下
define(["./textbox/avalon.textbox","./dropdown/avalon.dropdown","./dropdownlist/avalon.dropdownlist"],function(){
});
built.js代码如下
({
baseUrl : "../avalon-1.4.4/",
name: "main",
out : "../avalon-1.4.4/oniui.js",
paths : {
text : "../require/text",
css : "../require/css",
"css-builder" : "../require/css-builder",
"normalize" : "../require/normalize"
}
})
也修改了avalon.getModel.js引avalon为define(["./avalon.shim"], function(avalon) {了; 打包成功了,用的时候html代码还是ms-controller之类的,执行avalon.sacn()也没有用,这是什么原因啊?
不要用requirejs打包了,改成webpack吧,我写了专门的文章了
http://www.cnblogs.com/rubylouvre/p/4963984.html