SlideShare uma empresa Scribd logo
1 de 88
高粒度模块化
                           DE        前端开发
                                                      蒋吉兵




2012/03/24   FRONT-END MODULAR DEVELOPMENT | CHINAFACE.COM   @集冰
About Me
蒋吉兵 Eddy or JJB
Weibo: @集冰
Email: idd.chiang@gmail.com
Website: www.microidc.com
现状
前端的模块化
解决方案
环境配置
性能优化
CHINAFACE前端架构
常见的前端模块化
传统CSS模块组织
/*-- reset --*/
html,body....{...}                                    global.css
/*-- header --*/
#header{...}
#body{...}

/*-- mod --*/
.mod{ ... }
.mod .hd{ ... }
.mod .bd{ ... }

/*-- login --*/
#login-form{...}
                                                         page.css
selector{...}

/*-- HTML --*/
<link href="domain/assets/css/global.css" rel="stylesheet"/>
<link href="domain/assets/css/page.css" rel="stylesheet"/>
再进一步
/*-- reset --*/
html,body....{...}                                       reset.css
/*-- header --*/
#header{...}                                         header.css
#body{...}

/*-- mod --*/                                            mod.css
.mod{ ... }
.mod .hd{ ... }
.mod .bd{ ... }

/*-- login --*/
#login-form{...}
                                                         page.css
select{...}


/*-- HTML --*/
<link href="combobase?files=domain/assets/css/reset.css|domain/assets/
css/header.css|domain/assets/css/mod.css|domain/assets/css/page.css"
rel="stylesheet"/>
传统js模块组织
/*-- HTML --*/
<script src="domain/assets/js/jquery-1.x.js" ></script>
<script src="domain/assets/js/common.js" ></script>
<script src="domain/assets/js/jquery.ui.x.js" ></script>
<script src="domain/assets/js/xx.js" ></script>
</head>
<body>
...
<script>
(function(){
    //to change world.
})();
</script>
</body>
</html>
再进一步
/*-- HTML --*/

<script src="combobase?files=domain/assets/js/jquery-1.x.js|domain/
assets/js/common.js|domain/assets/js/jquery.ui.x.js|domain/assets/js/
xx.js" ></script>
</head>
<body>

...

<script>
(function(){
    //to change world.
})();
</script>
</body>
</html>
再再进一步
     //path1/a.js
     Mod.define(function(){/*...*/}).require(‘c.js’,‘d.js’);




    /*-- HTML --*/
    <script src="domain/Seed.js" ></script>
    </head>
    <body>
    ...
    <script>
    Mod.require(‘a.js,b.js’).doSomething(function(){
        //to do
    });
    </script>
    </body>
    </html>

                                                            大量匿名模块不便管理
              parse/exec          parse/exec
                                                            请求数猛增

                                                                                 ...
inline code                a.js                c.js
                                                      parse/exec          parse/exec
                           b.js                d.js                e.js
ChinaFace前端模块化
       模块划分
文本



     模块化
模块化

http://www.flickr.com/photos/ejpphoto/2314610838/
模块化

http://www.flickr.com/photos/decojim/969950876/sizes/o/in/photostream/
模块化

http://www.flickr.com/photos/olaborda/2078050462/sizes/l/in/photostream/
模块 Module
可组合、分解和更换的单元

可组成系统的、具有某种确定独立功能的半
自律性的子系统

是较大系统的独立部件

功能、状态与接口反映外部特性,逻辑反映
内部特性


             http://baike.baidu.com/view/182267.htm
前端设计三大要素



                VISUAL
                         外观




   STRUCTURE             CONTROLLER

               结构                 控制器
他们的看法
                               VISUAL
   Designer                       structure
                                    Controller




  product manager     VISUAL Controller
                                    structure




  Web Developer     VISUAL structure             Controller




                       Images from: http://www.zcool.com.cn/gfx/ZMjAxNjg0.html
前端模块类型划分



                 VISUAL
   展示                     外观

                                  功能


    STRUCTURE             CONTROLLER

                结构                 控制器




 前端模块分为:展示模块和功能模块
前端模块抽离原则

・充分了解产品需求,熟读PRD;
・深度挖掘产品需求,提炼模块;
・从视觉规范中抽离高耦合、高相似的部分;
・模块化业务需求中的重合部分;
・暴露接口实现模块间通讯;
ChinaFace.com 展示模块划分
                           header




           Personal-card



                           TimelineWrap
           Time
tags&lbs   rshaf
             t
                                             recom

                           Timeline & Feed
ChinaFace.com 功能模块划分




                       修改背景
ChinaFace前端模块化
       解决方案
展示模块解决方案




       +   Lessphp
TEMPLATE
           CONTROLLER
                                   应用   应用   page use



  VISUAL                           模块   模块   block-base



                                        元素   icon/form/ajax/button



                                   元件   容器   box/mod/...
     模块划分
                                        布局    layout
      展示模块          Less is more

                                        结构   ms-grid/grid
      功能模块

                                   框架   文档   full-screen/fixed-screen



                                        核心   reset/variables/classes
Moca资源组织                                                                      Less is more




           usage

           module

           element

  moca     container

           layout

           structure

           document

           base

              Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca资源组织                                                                      Less is more




           usage

           module

           element

  moca     container
                                                         reset.less
           layout
                                                         color.less
           structure

           document                                      classes.less


           base                                          variables.less

              Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca资源组织                                                                      Less is more




           usage

           module

           element

  moca     container

           layout

           structure

           document

           base

              Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca资源组织                                                                      Less is more

                                                         button-base.less


           usage                                         button-small.less

           module
                                                         ... ...
           element
                                                         form-element.less
  moca     container

                                                         icon-base.less
           layout

           structure                                     icon-timeline.less

           document

           base

              Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca语法定义
   /*-- base/variables.less --*/
   @version: “?v=0.1.1”;
   @imgPath: “/img/”;

   /*-- base/color.less --*/
   //ColorSystem For ChinaFace
   @mLink: “#b40000”;

   /*-- base/classes.less --*/
   .ClearFix(){
       zoom:1;
       &:before,&:after{
           content: "0020"; display: block; height: 0; overflow: hidden;
       }
       &:after{
           clear: both;
       }
   }


Less http://
www.lesscss.org

                                                                  Less is more
依赖与继承
   /**
    * File: module/register.less
    */
   @import "../base/variable";
   @import "../element/form-element";

   .form-input{
       .efInput(220px)
   }


 /*-- element/form-element --*/
 .efInput(@mWidth:218px,@mHeight:auto,@mSize:14px,@mBorderColor:#d4d4d4){
     width:@mWidth;
     ... ...;
     background: url('@{imgPath}input-bg.png@{version}') no-repeat;
     &:focus{
         border-color: #a1a1a1;
     }
 }
Less http://
www.lesscss.org

                                                                       Less is more
Moca模块引擎配置
   /*-- config.php --*/
   $less_path = '/opt/www/**/**/r.chinaface.com/moca/usage';
   //cache路径
                                                                      Lessphp
   $cache_path = '/opt/www/**/**/cache/moca';
   //本地调试
   $enable_cache = false;
   $enable_compress = true;


   /*-- smarty homepage.php --*/
   public function process(){
                                                                      Smarty
       $this -> tpl_engine -> assign('css_insert_point', 'homepage');
   }
   /*-- smarty meta.tpl --*/
   <link href="<?$cdn?><?$css_insert_point?><?$ver?>" rel="stylesheet"/>



   <link href="http//r.chinaface.com/less/?f=homepage&v=1.2.7" rel="stylesheet"/>


LessPHP http://leafo.net/
lessphp

                                                                          Less is more
Moca加载流程                                                                       Less is more




example.less                                   Browser




               Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca加载流程                                                                                   Less is more




example.less   a   e   g                                   Browser




                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca加载流程                                                                                   Less is more




example.less   a   e   g                                   Browser

     a.less    b   c

      e.less   c   g

     g.less    b   c   d




                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca加载流程                                                                                   Less is more




example.less   a   e   g                                   Browser

     a.less    b   c

      e.less   c   g

     g.less    b   c   d




                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca加载流程                                                                                   Less is more




example.less   a   e   g
                               Lessphp                     Browser

     a.less    b   c

      e.less   c   g

     g.less    b   c   d




                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca加载流程                                                                                   Less is more




example.less   a   e   g
                               Lessphp                     Browser

     a.less    b   —
                   c

      e.less   —
               c   —
                   g

     g.less    —
               b   c   d




                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca加载流程                                                                                   Less is more




example.less   a   e   g
                               Lessphp                     Browser

     a.less    b   —
                   c                                          css
      e.less   —
               c   —
                   g

     g.less    —
               b   c   d




                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Moca小结
较大限度减少无用样式引入
减少不必要的http请求
开发效率得到明显提高
命名空间与写作方法需自我约束
基类与全局变量需严格控制
规范文档很必要、CodeReview必不可少
选择器遵循性能优先原则
功能模块解决方案



      Eva
   YUI3 +   Minify
Eva 关键词

一个变'种'的YUI

基于YUI3、增强YUI3

量身定制的Loader
完备的框架、快速开发利器
文档丰富、开源项目受益者

YUI3 http://
yuilibrary.com/
                  Eva UI Library
TEMPLATE
                                                                               ...
           CONTROLLER               应用   common          side     analysis



                                                                         ...
  VISUAL
                                         comment          timershaft
                                    模块
                                         publisher       rich-editor    slideshow


                                         flyout    msgbox         ...
                                    组件    xpost      switchable         uploader

                                         ebase       button       localStorage


     模块划分                                     Eva1.0.4
      展示模块         Eva UI Library   组件   IO       Anim      JSONP       ...
                                    基础   Attribute       Plugin     Widget
      功能模块
                                    核心   Event       Dom        Node     OOP

                                              YUI3.4.1
                                    种子   Eva      YUI Base        Get    Loader
                                                                         loader
Eva资源组织                                                                              Eva UI Library



                                                plug-button


                                                switchable                         switchable.js

         eva /1.0.4/build/
                                                 ...


js/      yui                                    xdr-post
                                                                                    msgbox-css.css
                                                msgbox
         usage                                                                      msgbox.js
                                                name-autocomplete

         vendor
                                   eva-min.js


                             Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Eva资源组织                                                                            Eva UI Library



                                         oop                              node-base-debug.js


                                       node-base                          node-base-min.js

         eva
                                         ...                               node-base.js


js/      yui     /3.4.1/                transition


                                        event-mouseenter
         usage

                                         autocomplete

         vendor



                           Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
Eva资源组织                                                                   Eva UI Library




                    register.js


                    ...
         eva

                    common.js

js/      yui
                    analysis.js                             timeline.js


         usage       module                                 recommend.js

                      ...                                   ...
         vendor



                  Images from:http://preview.zcool.com.cn/png/computer/20071008/png_100RO92007.html
添加组件
                                                   YUI3
 /*-- define build/msgbox/msgbox.js--*/

 YUI.add(‘msgbox’,function(Y){
   //todo what you want
   Y.namespace(‘Msgbox’);
   Y.Msgbox = function(){
      this.init.apply(this, arguments);
   }
   //Msgbox Logic
   Y.Mix(Y.Msgbox,{/*something*/},0,null,4);

 },‘1.0.4’,{requires:[‘node’,‘plug-button’,‘xdr-
 post’,‘msgbox-css’]});


基于YUI3的组件和插件                                       Eva UI Library
配置组件模块依赖,为合并做准备
                                             YUI3
 /*-- eva module configure --*/
 modules: {
   //JS module
   ‘msgbox’:{
       requires: [‘node’,...,‘msgbox-css’]
   },
   //CSS module
   ‘msgbox-css’:{
       path: ‘msgbox/msgbox-css.css’,
       type: ‘css’
   },
   ...
 }



                                             Eva UI Library
生成应用模块与片段
/**
 * block-base file
                                             典型片段
 * example:example.js
 */

/*-- how to use eva --*/
Eva.require(‘node’,...,‘msgbox’).ready(function(S){
  //todo what you want when requires was loaded
  S.Msgbox.confirm(‘Hello,World!’,{
     confirm: function(O){
       S.log(‘点击确认’);
            }
      });
});


                                                      Eva UI Library
调用应用模块或片段
   <!-- Page Content -->
   </div>
   <!-- Eva Seed -->
   <script src="http://r.chinaface.com/js/eva/1.0.4/eva-
   min.js?v=0.1.2.7&combine=true&debug=1"></script>

   <script>
     /*-- webpage use --*/
     Eva.usage('common,example,analysis');
   </script>

   </body>
   </html>

YUI3 http://
yuilibrary.com/
                                                     Eva UI Library
Eva模块依赖处理1

      /*-- Page Usage --*/
                                                          USAGE
      Eva.usage(‘common,example,analysis’);



          /*-- compile --*/

          http://r.chinaface.com/~?
          b=usage&common,example,analysis&version=1.2.7




Minify 实现资源合并压缩

Assets Minify http://code.google.com/p/
minify/
Eva模块依赖处理2

          http://r.chinaface.com/~?                                    loader
          b=usage&common,example,analysis&version=1.2.7

      /*-- Requires --*/
                                   yui components: [‘node’,...,‘io-xdr’]
                        js
                                   eva components: [‘ebase’,...,‘msgbox’]
      Requires
                                   yui: [‘widget-css’,...,‘auto..’]
                       css
                                   eva: [‘msgbox-css’,...]

          /*-- compile --*/
                   http://r.chinaface.com/~?b=css&yui=widget/skin/
           css     widget.css,...,&eva=msgbox/msgbox-
                   css.css,...,&yv=3.4.1&ev=1.0.4&version=1.2.7&debug=1
                   http://r.chinaface.com/~?b=js&yui=node,...,io-
           js      xdr&eva=ebase,...,msgbox&yv=3.4.1&ev=1.0.4&ver
                   sion=1.2.7&debug=1
Assets Minify http://code.google.com/p/
minify/
Eva模块依赖处理2

          http://r.chinaface.com/~?                                    loader
          b=usage&common,example,analysis&version=1.2.7

       /*-- Requires
      /* common.js */   --*/
                                   yui components: [‘node’,...,‘io-xdr’]
                        js
     /* 15 */  S.CF.Temp._lazyLoad = new S.DataLazyLoader({mod: 'mannal'});
                                eva components: [‘ebase’,...,‘msgbox’]
     /* 16 */
      Requires //延迟加载
     /* 17 */                      yui: [‘widget-css’,...,‘auto..’]
              S.CF.Temp.lazyLoad = function(item){
     /* 18 */          css
                  S.CF.Temp._lazyLoad.loadCustomLazyData(item, 'data-src');
                                   eva: [‘msgbox-css’,...]
     /* 19 */ }
     /* 20 */ var imgs = S.one('body').all('[data-lazyimg]');
      /*-- compile --*/
     /* 21 */ if(imgs){
     /* 22 */     S.later(100,null,function(){
                http://r.chinaface.com/~?b=css&yui=widget/skin/
     /* 23 */         imgs.each(function(n){
           css
     /* 24 */   widget.css,...,&eva=msgbox/msgbox-
                          S.CF.Temp.lazyLoad(n);
     /* 25 */   css.css,...,&yv=3.4.1&ev=1.0.4&version=1.2.7&debug=1
                      });
     /* 26 */     });
     /* 27 */ } http://r.chinaface.com/~?b=js&yui=node,...,io-
           js      xdr&eva=ebase,...,msgbox&yv=3.4.1&ev=1.0.4&ver
                   sion=1.2.7&debug=1
Assets Minify http://code.google.com/p/
minify/
EVA加载流程

Eva.usage(‘a,e,f,g’)   browser
EVA加载流程

Eva.usage(‘a,e,f,g’)   browser



     browser
EVA加载流程

Eva.usage(‘a,e,f,g’)                browser

异步创建        请求 Minifycombo
                       compressed
     browser
EVA加载流程

Eva.usage(‘a,e,f,g’)                browser

异步创建        请求 Minifycombo
                       compressed
     browser

  解析        YUI Loader
EVA加载流程

Eva.usage(‘a,e,f,g’)                browser

异步创建         请求 Minifycombo
                       compressed
     browser

  解析         YUI Loader

         a

         e

         f

         g
EVA加载流程

Eva.usage(‘a,e,f,g’)                    browser

异步创建         请求 Minifycombo
                           compressed
     browser

  解析         YUI Loader

         a

         e      a      b

         f      b      c     d

         g      c
EVA加载流程

Eva.usage(‘a,e,f,g’)                    browser

异步创建         请求 Minifycombo
                           compressed
     browser

  解析         YUI Loader

         a

         e     a
               —       b

         f     b
               —       c     d

         g     —
               c
EVA加载流程

Eva.usage(‘a,e,f,g’)                                 browser

异步创建         请求 Minifycombo
                           compressed
     browser

  解析         YUI Loader

         a

         e     a
               —       b                 编译
         f     b
               —       c     d          YUI Loader

         g     —
               c
EVA加载流程

Eva.usage(‘a,e,f,g’)                                   browser

异步创建         请求 Minifycombo
                           compressed
     browser

  解析         YUI Loader

         a

         e     a
               —       b                 编译
                                                     css    js
         f     b
               —       c     d          YUI Loader

         g     —
               c
EVA加载流程

Eva.usage(‘a,e,f,g’)                                   browser

异步创建         请求 Minifycombo
                           compressed
     browser

  解析                                                 请求    Minify
             YUI Loader
                                                           combo
                                                           compressed
         a

         e     a
               —       b                 编译
                                                     css    js
         f     b
               —       c     d          YUI Loader

         g     —
               c
EVA小结

模块化组织页面功能模块
组件和插件扩展出丰富模块
自动处理模块依赖
组件开发延续了模块的生命周期
调试和版本号管理容易
文档和规范是基本
ChinaFace前端模块化
       开发环境
模拟CDN本地开发
        hosts127.0.0.1   r.chinaface.com




                  vhost r.chinaface.com
        Apache



                            Minify
              PHP

                         svn

   Template/Moca/Eva
WEB服务器配置 APACHE2 + PHP5
 /*-- httpd.conf --*/
 #open
 LoadModule vhost_alias_module modules/mod_vhost_alias.so
 LoadModule alias_module modules/mod_alias.so
 LoadModule rewrite_module modules/mod_rewrite.so

 Include ***/extra/httpd-vhosts.conf




 /*-- extra/httpd-vhost.conf --*/
 <VirtualHost *:80>
     DocumentRoot "yourcode"
     ServerAlias yourdomain.com
     AliasMatch ^/~(.*) yourcode/minify/index.php$1
     ...
     </Directory>
 </VirtualHost>


 /*-- setting hosts --*/
 127.0.0.1   yourdomain
Smarty                               维护TPL和资源引用
  <!DOCTYPE html>
  <html lang='cn'>
     <head>
       <?include file='base/meta.tpl'?>
     </head>
     <body>
       <chinaface id="<?$doctype?>">
         ...
         <?include file='base/header.tpl'?>
         ...
         <?include file=$child_tpl?>
         ...
  
     </chinaface>
  ... <script type="text/javascript">
             Eva.usage('<?$js_insert_point?>');
      </script>


Smarty http://www.smarty.net/
模拟CDN本地开发特点

完整模拟正式环境资源服务器;
资源版本控制,真正有据可查;
避免频繁提交代码导致的版本冲突;
便于前后端协同开发;
提升前端项目开发效率;
ChinaFace前端模块化
       性能优化
4s
—— 如果网页加载时间超过4秒,约有四分
   之一的人会放弃打开该网页

—— 如果网页加载时间超过10秒,50%的移
   动用户会放弃该网页,约五分之三的人
   不会再返回该网站

               来源 http://gtmetrix.com/
ChinaFace1.0




           资源加载瀑布
ChinaFace1.0



干扰网页外观渲染




           资源加载瀑布
ChinaFace1.0



干扰网页外观渲染




 决定外观的资源




           资源加载瀑布
性能优化
1.eva种子、Usage放至于</body>之前:
性能优化
1.eva种子、Usage放至于</body>之前:




chinafac
e2.0       domContentReady
性能优化
1.eva种子、Usage放至于</body>之前:


                             排除JS加载阻塞风险
                             优先加载决定表现的资源
                             优先渲染首屏
chinafac
e2.0       domContentReady
性能优化
1.eva种子、Usage放至于</body>之前:


                                                排除JS加载阻塞风险
                                                优先加载决定表现的资源
                                                优先渲染首屏
chinafac
e2.0                  domContentReady




 异步加载脚本文件优于直接引用脚本文件
 扩展阅读:
 http://hikejun.com/blog/2012/02/02/js和css的顺序     系/

 http://gent.ilcore.com/2011/05/how-web-page-loads.html
性能优化
2.延迟加载图片、区域:

 减少大量请求同时出现
 合理分配资源加载次序
 减少首屏节点树创建
                                                 inViewportRegion


                                               <img data-src=”” />

  <img data-src=”” />



  <textarea data-src=”lazy-load” disabled />      <textarea/>
勇敢和IE6告别

降低对IE6的测试权重
不再重视IE6性能问题
引导用户向高级别标准浏览器更迭
只有我们无视,用户才会重视
勇敢和IE6告别

降低对IE6的测试权重
不再重视IE6性能问题
引导用户向高级别标准浏览器更迭
只有我们无视,用户才会重视
性能优化小结

遵循Yslow和pagespeed的优化建议
优化不是一次性,而是永无止境
优化是种习惯,需因地制宜
良好的编程习惯 > 优化
切忌一根筋
附 ChinaFace前端架构




image from Flickr http://www.flickr.com/photos/garycherry/2290069108/lightbox/
ChinaFace 前端架构
                Base
           Document                                  YUI3
                 Grid                     Eva        Eva UI组件库
            Structure   Moca                         应用模块                                              模块HTML
             Element                                                                       Smarty
                                                                                                       引用模块资源
              Module
               Usage
                                                                                           LessPHP     Moca less

                               发框架                                 模块引擎

            工具                                                                            YUI Loader


          Photoshop
          Vim                                                                                                 模块CSS
                                                                                                     Minify
          Emeditor                                                                                            组件JS
          Sublime                                                               兼容性
                                                                        测试
          Editplus                                                              JS单元

                                                 发

 项目资源                                                                                        Yslow
                                                                                              WebPageTest.com
                                                                             性能监测
 SVN                                                                                          PageSpeed
 Vanish                                                                                       DynaTrace
 CDN
                               Fiddler                                       Smush.it
                               Firebug                           品质保障        JSLint
                        调试                                                   CodeReview
                               Developer Tools
                               Visual Studio
环境部署

                                  sources
                         本地环境               debug



                           发环境      SVN     debug




                         测试环境               compress
环境   模拟CDN本地       发
                         预发布环境              compress、cache
       Apache 2(vhost)
       PHP 5
       hosts
                         Vanish     sync    cache file



                         CDN                cache file

                                  r.chinaface.com
文档规范


文件组织                                       前端周报


命名规范                                       项目管理


编程规范   F2E Doc   规范              wiki      接口文档

       wd.org         wiki.chinaface.com
模块指南                                       分享培训


前端安全                                       学习文档
总结

减少代码循环依赖、冗余;
减少无用代码的引入;
适合富应用Web项目;
有效提高前端团队的开发效率;
保证前端产出物与设计和产品的一致性;
模块化开发一劳永逸;
省钱、省时间
ChinaFace前端团队、银泰网前端团队
@拔赤、@一舟、@舒克、@淘宝UED(bj)
QA

Mais conteúdo relacionado

Destaque

前端开发理论热点面对面:从怎么看,到怎么做?
前端开发理论热点面对面:从怎么看,到怎么做?前端开发理论热点面对面:从怎么看,到怎么做?
前端开发理论热点面对面:从怎么看,到怎么做?Kejun Zhang
 
面向未来的重构
面向未来的重构面向未来的重构
面向未来的重构Kejun Zhang
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
Ued交流会 《用户体验杂谈》
Ued交流会 《用户体验杂谈》Ued交流会 《用户体验杂谈》
Ued交流会 《用户体验杂谈》iddcn
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & developmentXuefeng Zhang
 
通用JS时代的模块机制和编译工具
通用JS时代的模块机制和编译工具通用JS时代的模块机制和编译工具
通用JS时代的模块机制和编译工具Dexter Yang
 
Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)Dexter Yang
 
如何將現有 Web form 轉換到mvc
如何將現有 Web form 轉換到mvc如何將現有 Web form 轉換到mvc
如何將現有 Web form 轉換到mvcGelis Wu
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
SOHU_Entrprise_Email_System_Design-200312
SOHU_Entrprise_Email_System_Design-200312SOHU_Entrprise_Email_System_Design-200312
SOHU_Entrprise_Email_System_Design-200312SITONG SHEN
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性Xuefeng Zhang
 
从学生到工程师
从学生到工程师从学生到工程师
从学生到工程师RANK LIU
 
Web 前端工程师与成长
Web 前端工程师与成长Web 前端工程师与成长
Web 前端工程师与成长RANK LIU
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureNicholas Zakas
 
【前端Mvc】mvc behind-alphatown
【前端Mvc】mvc behind-alphatown【前端Mvc】mvc behind-alphatown
【前端Mvc】mvc behind-alphatowntaobao.com
 
张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考taobao.com
 

Destaque (17)

前端开发理论热点面对面:从怎么看,到怎么做?
前端开发理论热点面对面:从怎么看,到怎么做?前端开发理论热点面对面:从怎么看,到怎么做?
前端开发理论热点面对面:从怎么看,到怎么做?
 
F2e @ douban
F2e @ doubanF2e @ douban
F2e @ douban
 
面向未来的重构
面向未来的重构面向未来的重构
面向未来的重构
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
Ued交流会 《用户体验杂谈》
Ued交流会 《用户体验杂谈》Ued交流会 《用户体验杂谈》
Ued交流会 《用户体验杂谈》
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
通用JS时代的模块机制和编译工具
通用JS时代的模块机制和编译工具通用JS时代的模块机制和编译工具
通用JS时代的模块机制和编译工具
 
Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)
 
如何將現有 Web form 轉換到mvc
如何將現有 Web form 轉換到mvc如何將現有 Web form 轉換到mvc
如何將現有 Web form 轉換到mvc
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
SOHU_Entrprise_Email_System_Design-200312
SOHU_Entrprise_Email_System_Design-200312SOHU_Entrprise_Email_System_Design-200312
SOHU_Entrprise_Email_System_Design-200312
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
从学生到工程师
从学生到工程师从学生到工程师
从学生到工程师
 
Web 前端工程师与成长
Web 前端工程师与成长Web 前端工程师与成长
Web 前端工程师与成长
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
 
【前端Mvc】mvc behind-alphatown
【前端Mvc】mvc behind-alphatown【前端Mvc】mvc behind-alphatown
【前端Mvc】mvc behind-alphatown
 
张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考
 

Semelhante a 高粒度模块化的前端开发

Kissy design
Kissy designKissy design
Kissy designyiming he
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发leneli
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京Joseph Chiang
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designJackson Tian
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现hua qiu
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)Joseph Chiang
 
Single-Page App Development
Single-Page App DevelopmentSingle-Page App Development
Single-Page App Developmentgenify
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctechKai Cui
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-showleneli
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101Jollen Chen
 
Uliweb设计分享
Uliweb设计分享Uliweb设计分享
Uliweb设计分享modou li
 
2011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.02011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.0Anthony Chen
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVCjeffz
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践Du Yamin
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践jay li
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Jollen Chen
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计thinkinlamp
 

Semelhante a 高粒度模块化的前端开发 (20)

Kissy design
Kissy designKissy design
Kissy design
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
Single-Page App Development
Single-Page App DevelopmentSingle-Page App Development
Single-Page App Development
 
2021laravelconftwslides8
2021laravelconftwslides82021laravelconftwslides8
2021laravelconftwslides8
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101
 
Uliweb设计分享
Uliweb设计分享Uliweb设计分享
Uliweb设计分享
 
2011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.02011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.0
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计
 

高粒度模块化的前端开发

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n