SlideShare a Scribd company logo
1 of 39
目录结构
要OUTING了
你不躁动吗?
结构
现状

1. p/markets/2011/common_v2.js?t=20120323

2. apps/tradeface/trademanager/1.0/base_v2.2.js?t=20111215.js

3. apps/mytaobao/3.0/mt/base/base.js?t=20120517.js

4. apps/mercury/2.0/20110610/mercury.js?t=201205311045
目录结构承担的责任

1. 让别人理解更容易

   (新人,业务调整,临时支援)

2. 让自己维护更方便

   (修改,扩展,打包,发布,调试,回滚)
统一结构,势在必行
为什么会出现

1. Ant

2. CDNcombo
                     模块化
3. Ucool

4. I debug

5. Module-compiler
目录的作用




    给文件分类
分类的维度

1. 按“应用”cart,mytaobao,sell
                              横向
2. 按“页面”page1,page2,page3

3. 按“版本”1.0,2.0,3.0
                              纵向
4. 按“发布日期”20120323,20120423

5. 按“职责”source,test,build,    关联
6. 按“重要程度”core,mods,
                              内容
7. 按“复用级别”common,utils,mods
目录联想



       1. 这是个按版本划分的目录

1.0    2. 同级可能会有2.0,3.0

       3. 我应该找最新的版本目录去查看
目录联想




  1.0,Detail,test
结论一




      单一维度
分类的维度

1. 按“应用”cart,mytaobao,sell
                              横向
2. 按“页面”page1,page2,page3

3. 按“版本”1.0,2.0,3.0
                              纵向
4. 按“发布日期”20120323,20120423

5. 按“职责”source,test,build,    关联
6. 按“重要程度”core,mods,
                              内容
7. 按“复用级别”common,utils,mods
维度的优先级




   先按哪个维度?
维度的优先级




     内聚性
维度的优先级


 ├─src        ├─detail
 │ ├─detail   │ ├─src
 │ └─list     │ ├─test
 ├─test       │ └─build
 │ ├─detail   └─list
 │ └─list       ├─src
 └─build        ├─test
   ├─detail     └─build
   └─list
维度的优先级


 ├─src     ├─1.0
 │ ├─1.0   │ ├─src
 │ └─2.0   │ ├─test
 ├─test    │ └─build
 │ ├─1.0   └─2.0
 │ └─2.0     ├─src
 └─build     ├─test
   ├─1.0     └─build
   └─2.0
维度的优先级


 ├─detail   ├─1.0
 │ ├─1.0    │ ├─detail
 │ └─2.0    │ ├─list
 ├─list     │ └─index
 │ ├─1.0    └─2.0
 │ └─2.0      ├─detail
 └─index      ├─list
   ├─1.0      └─index
   └─2.0
结论二




  横向 > 纵向 > 关联
横向分类的问题




  交集(共用)部分
横向分类的问题



   detail                     list
              utils

            common

      utils           utils


              index
横向分类的问题


    detail           list




             index
横向分类的问题

    B-detail
          C-detail




        index
横向分类的问题
                     list
    detail




             index
横向分类约定


     common

   utils   page
一级目录
纵向分类的问题



     同步生长
纵向分类


 ├─detail   ├─1.0
 │ ├─1.0    │ ├─detail
 │ └─2.0    │ ├─list
 ├─list     │ └─index
 │ ├─1.0    └─2.0
 │ └─2.0      ├─detail
 └─index      ├─list
   ├─1.0      └─index
   └─2.0
横向分类与纵向分类的界限

              ├─detail
 ├─detail
              │ ├─modA
 │ ├─1.0
              │ │ ├─1.0
 │ │ ├─modA
              │ │ └─2.0
 │ │ ├─modB
              │ ├─modB
 │ │ └─modC
              │ │ ├─1.0
 │ └─2.0
              │ │ └─2.0
 │   ├─modA
              │ └─modC
 │   ├─modB
              │   ├─1.0
 │   └─modC
              │   └─2.0
日期目录的缘由

           1. 新文件发布,简化系统发布依赖

           2. 利于回滚
20120304   3. 避免冗余的兼容性代码

           4. 消除客户端缓存问题
纵向分类的约定

 1. 版本目录:

  • 存放模块文件的源文件

  • 以1.0, 2.0, 3.0命名

 2. 日期目录:

  • 存放打包后的线上引用文件

  • 以“YYYYMMDD”命名
目录约定
模块载入机制


  1. CDNcombo


  2. 本地打包


  3. 动态加载
模块打包约定

  1. kissy1.2

  2. Common里的文件静态载入

  3. Utils里的组件参与本地打包,避免动态载入

  4. 每次打包到指定日期目录

  5. 每次发布新的日期目录
模块打包图示
版本下的模块开发目录约定

  1. 行为:编码,打包,测试;

  2. Css和Js的共同抽象

  3. 兼容kissy1.1.6
版本下的模块开发目录约定

    1. Core:入口脚本

    2. Mods:普通业务模块

    3. Test:测试用例

    4. Build:打包配置信息

    5. 打包工具:front-build
结构
3Q

More Related Content

Similar to 目录结构规范

OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86dbabc
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-showleneli
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章浒 刘
 
Rec soft npp
Rec soft nppRec soft npp
Rec soft nppcri fan
 
Wxpython In Action
Wxpython In ActionWxpython In Action
Wxpython In Action智锋 范
 
Foundation of software development 2
Foundation of software development 2Foundation of software development 2
Foundation of software development 2netdbncku
 
GCC_Porting_on_MiniSystem
GCC_Porting_on_MiniSystemGCC_Porting_on_MiniSystem
GCC_Porting_on_MiniSystemXiaojing Ma
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
Nagiosql和centreon比较
Nagiosql和centreon比较Nagiosql和centreon比较
Nagiosql和centreon比较GGclub
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Kris Mok
 
Android hw accelerated_2d_rendering
Android hw accelerated_2d_renderingAndroid hw accelerated_2d_rendering
Android hw accelerated_2d_renderingGump Law
 
九州通小型机扩Vg大小(20090416)
九州通小型机扩Vg大小(20090416)九州通小型机扩Vg大小(20090416)
九州通小型机扩Vg大小(20090416)heima911
 
Java explore
Java exploreJava explore
Java exploreRoger Xia
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails serverMichael Chen
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshellNelson Tai
 
Skan it 6.0 user manual chinese
Skan it 6.0 user manual chineseSkan it 6.0 user manual chinese
Skan it 6.0 user manual chineseLenin TaMe
 

Similar to 目录结构规范 (20)

OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Intro to svn
Intro to svnIntro to svn
Intro to svn
 
Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 
Mongodb学习手册
Mongodb学习手册Mongodb学习手册
Mongodb学习手册
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
 
Rec soft npp
Rec soft nppRec soft npp
Rec soft npp
 
Wxpython In Action
Wxpython In ActionWxpython In Action
Wxpython In Action
 
Foundation of software development 2
Foundation of software development 2Foundation of software development 2
Foundation of software development 2
 
GCC_Porting_on_MiniSystem
GCC_Porting_on_MiniSystemGCC_Porting_on_MiniSystem
GCC_Porting_on_MiniSystem
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
Nagiosql和centreon比较
Nagiosql和centreon比较Nagiosql和centreon比较
Nagiosql和centreon比较
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
 
Android hw accelerated_2d_rendering
Android hw accelerated_2d_renderingAndroid hw accelerated_2d_rendering
Android hw accelerated_2d_rendering
 
九州通小型机扩Vg大小(20090416)
九州通小型机扩Vg大小(20090416)九州通小型机扩Vg大小(20090416)
九州通小型机扩Vg大小(20090416)
 
Java explore
Java exploreJava explore
Java explore
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
無障礙網頁
無障礙網頁無障礙網頁
無障礙網頁
 
Skan it 6.0 user manual chinese
Skan it 6.0 user manual chineseSkan it 6.0 user manual chinese
Skan it 6.0 user manual chinese
 

目录结构规范