#jdf组件规范和开发流程

<table>
<tr><td>版本</td> <td> 日期</td> <td> 说明 </td> </tr>
<tr><td>v1.0</td> <td> 2014-5-27</td> <td> 初版,收集意见后修正更新</td> </tr>
<tr><td>v1.1</td> <td> 2014-6-26</td> <td> 转移至svn：jdf</td> </tr>
</table>

##适用人员
UED部前端组成员

##组件开发宗旨
技术驱动业务,减少重复开发,项目积累沉淀

##组件总体原则
* 组件发布前,需先在线上项目中实际应用,再大范围推广
* 组件测试,要经过严格的兼容性自测/QA测试,同时兼容常见浏览器
* 组件升级同时未更新版本号时,需要验证线上实际业务
* 组件接口要相对比较完善
* 文档要尽可能全面,包括但不限于简介,应该场景,接口说明等

##组件开发流程


* 检出jdf部分源码做参考
	* 下载最新源码svn: http://svn1.360buy-develop.com/arch/fe/jdf/
* 初始化工作文件夹
	* 参考下面的组件目录结果
* 开始编码
* 编码提交
	* 参考下面的组件提交方式

##组件开发细则
* 概述开发的各个流程,如下:
* 设计阶段
   * 应用场景和需求分析: 具体会用在哪些地方
   * 同类组件分析: 有哪些已成成熟的同类组件,借鉴
   * 整理功能点: 组件应该有哪些功能,预留哪些接口
   * 技术方案: 具体实现组件的算法,思路等等
   * 开发计划: 具体的上线时间点和某些版本要实现的功能,第一个版本要尽量简单,保留相关接口供后续迭代
   * 讨论: 可以先发方案给大家一起讨论
* 开发阶段
   * 设计:参考设计阶段
   * 编写源码
   * 代码评审:参考团队成员的意见,集思广益
   * 重构:根据评审的结论重新合理优化代码,使代码健壮
   * 提交正式版本
* 发布阶段
   * 发布预览版
   * 应用在某些实现项目中,检验组件的完整性和可用性
   * 收集工程师和用户反馈
   * 持续跟进出现的问题,尽快修正
* 确定名字
	* 由于组件引用时依靠文件名来做索引,所以不要和现有组件重名,当然重名提交时svn也通不过的,后期考虑做成后台系统协助检测
	* 尽量不要起非常简短的名字,比如page,tab等等
* 书写demo
	* 尽可能多的写出组件相关demo
	* 可参考 http://fe.jd.com/jdf/1.0.0/doc_build/demo.html#dialog
* 书写文档
	* 可参考 http://fe.jd.com/jdf/1.0.0/doc_build/api.html#dialog

##组件分类说明
* 元件
	* html模块化组件,比如分页,布局,表格等等
* ui组件
	* 对原生js的兼容类组件
	* 某些特性比如切换组件,排序组件,选择组件,定位组件等等
* unit(业务)组件
	* 实现一个完整的业务,比如登录注册,加关注,分享,在线客服等等
* 模块 
	* 一个模块包括html/js/css/图片,可以认为是元件+ui+unit的综合体

##js组件目录结构

总体原则为svn开发目录和上线目录保持一致
如ui组件dialog示例如下:


      ├── jdf
      |   └──1.0.0
      |       ├── ui //ui/unit组件化目录
      |       |   ├── dialog //dialog组件
      |       |   |   └── 1.0.0 //大版本号
      |       |   |       ├── example //举例
      |       |   |       |     ├── dialog_fixed.html
      |       |   |       |     ├── dialog_drag.html
      |       |   |       |     └── dialog_iframe.html
      |       |   |       ├── dialog.md //文档
      |       |   |       ├── dialog.css //样式
      |       |   |       ├── i/dialog.png //图片
      |       |   |       └── dialog.js //脚本


##组件提交

* 现阶段把组件文件夹打包好,放svn,后期可通过后台提交
* 当你希望重构以提高代码质量时,请在版本号后面加0.0.1,在此版本里修正
* 建议组件正式发部后,邮件至f2e@jd.com宣传一下自己的组件

##组件提交激励

* <del>现阶段一个组件可兑换1瓶饮料,先提交先得</del>
