Honey 2.0 升级说明 - xydudu/Honey GitHub Wiki
Honey 2.0 升级说明
Honey 的文件结构与 Url 关系
Honey 2.0 文件夹有 基础库 与 项目库 两种,其中 基础库 由前端组维护,项目库 理论上大部分由各项目组负责。
其 Url 对应如下(以微空间项目示例):
当然,在项目中,其实并不用在意 Url 的关系,所以下面讲一下 Honey 2.0 最重要的一点改变。
Honey 模块引入方式
Honey 2.0 由于模块有了基础库与项目库的区分,所以在引入方式上也将有所区别。我们知道 Honey 版本模块引入是像下面这样的:
honey.go('lib_jquery, mod_dialog', function() {
// do something
});
上面的代码是应该都能明白就是引入jquery与dialog两个模块,然后在此依赖下进行业务层的代码。
而 Honey 2.0 的引入方式只是在于模块的标记上有了区别:
lib_jquery 是引入项目库里的 jQuery 模块,而 lib:jquery 则是引入基础库里的模块
所以在 Honey 2.0 的思想下,应该先搞清楚你的代码依赖的模块是在基础库中还是项目库中,然后区别引入比如像下面:
honey.go('lib:jquery, mod_dialog', function() {
// so something
})
上面的代码将从基础库中引入 jQuery ,从项目库中引入 dialog。
所以,为什么要搞成这样?好像复杂了。
为什么要有基础库与项目库之分
显然,老版本 Honey 在引入模块方面显得很是简单,只需要搞清楚模块名及所处文件夹,就能很简单的引入模块进入到页面中。但是这样带来一个隐患与不便,就是很多项目都需要使用的一些模块,被分散到了每个项目的文件结构中。
比如有 微空间 与 芒果TV 两个项目,他们都需要引入 jQuery 来进行编码。于是不得不把 jQuery 复制为两份分别放入两个项目中的 Honey 文件结构中,然后再使用 honey.go('lib_jquery') 来引入。
这种公用的模块被分散开后,要统一升级版本,或者修改bug,就变得很是棘手了,你得在每一个使用到的项目中进行更新。
终上所述, Honey 2.0 将被多个项目频繁使用的基础模块独立出来,形成一个基础库,而这个库中的模块也将由前端组进行维护与更新,并形成文档,保证其质量。
那现在的 Honey 2.0 有多少基础模块了呢?
已有基础模块
├── lib
│ ├── jquery.source.js // 不多说
│ ├── mustache.source.js // 前端模板引擎
│ └── socket.source.js // socket.io
├── mod
│ ├── dialog.source.js // 弹层基础类
│ ├── pusher.source.js // honey-pusher 基础文件 依赖于 socket.io
│ ├── slide.nojquery.source.js // 图片滚动,现应用于hunantv.com首页多处,无jquery 要求
│ ├── slide.source.js // 图片滚动
│ └── topbar.source.js // 顶部登录以及状态栏
├── plugin
│ ├── center.source.js // 使元素居中
│ ├── lazyload.source.js // 延迟加载
│ ├── mousewheel.source.js // 鼠标滚轮事件加强
│ ├── pswencode.source.js // 通行证加密
│ └── rotate.source.js // 旋转图片
├── tpl
│ └── comment.source.js // 评论组件模板文件
└── widget
├── comment.source.js // 公共评论组件
├── login.dialog.source.js // 公共登录弹层
├── photoview.source.js // 图片浏览层
└── tooltip.source.js // 提示小弹层
实例
截取金鹰网登录页的一段代码:
honey.go("lib:jquery, plugin:pswencode, mod:dialog, mod_suggestion, mod_login",
function() {
honey.login();
});
可以看到,其实中的 jquery, pswencode, dialog 都是引自基础库,使用 firebug 能清楚的看到这几个模块的 Url:
http://honey.hunantv.com/honey-2.0//lib/jquery.js
http://honey.hunantv.com/honey-2.0//plugin/pswencode.js
http://honey.hunantv.com/honey-2.0//mod/dialog.js
而 suggestion, login 两个模块则是从 微空间 项目库中引入的,其 Url 如下:
http://honey.hunantv.com/i/js/mod/suggestion.js
http://honey.hunantv.com/i/js/mod/login.js
然后,就有了下一个问题,如何配置这些 Url。
Honey 2.0 的配置文件
先看一个标准的配置文件:
var
PROJECT = 'i.hunantv', //绑定到项目中
VERSION = '20130314',
DEV = !!window.DEV,
COMBO = false,
COMBOURL = 'http://honey.hunantv.com/combo/',
ROOT = 'http://honey.hunantv.com/i/js',
PUBROOT = 'http://honey.hunantv.com/honey-2.0/',
CSS = 'http://honey.hunantv.com/css',
IMG = 'http://honey.hunantv.com/img';
关于基础库与项目库地址的配置,就只需要看 ROOT 与 PUBROOT 两个配置项。
- ROOT:项目库地址
- PUBROOT:基础库地址
理论上,这些配置项都不需要具体项目编码人员进行管理维护。因为每一个项目,都会生成一个核心 honey 文件,将会包含这些配置项,这将是不可顺便更改的。
比如下面几个项目的Honey核心文件:
http://honey.hunantv.com/honey-2.0/honey.ihunantv.js
http://honey.hunantv.com/honey-2.0/honey.hunantv.js
http://honey.hunantv.com/honey-2.0/honey.data.js
http://honey.hunantv.com/honey-2.0/honey.monitor.js
这些都是已经在线上的项目核心文件,如果有新项目,就只要通知前端组生成一个核心文件用于项目的初始化,然后就可以开始引入模块,编码的常规操作了。
4.9/2013