Front-end
Dev Environment

     Ting-yu Chiang / josephj
   josephj.com / josephj6802@gmail.com
/蒋
开   来
             • 2.5
                       师
             • 0.5
                     开发    传
             • 1
                            师
热爱         认为
Solution   讨论   来
没



           环岛
           29
    2008    5
           27
为  个  员   实       运
   关   ( 国语 学 )
 却进 别 挤 头 进
见识    软
现   职




          D-Link muchiii Team
        D-Link 现       设备
        联    务 强       户 关联
为        决 进 D-Link
当时 觉   产    来 没预        ...
为 D-Link 过   没   联 开发经验  进
 没    从 开          开   开发环    决
软
Software Engineer       Project Manager

         Service Engineer     System Architect         DBA

        Front-end Engineer    QA Engineer        QA Tester

            System Analyzer      Operation Engineer



这             Yahoo!          没        会                  为
                                      专门负责               团队...
    务        决         决                 够                变现     环
                             会
过        发现            欢
 纯 HTML/CSS/JavaScript     经
 结       术让              够 (
 碍   组    维护           现 热
Azure    Firmware
        Flash
                  I18N/L10N     PEAR
    CMS         Apache Module    Hardware

        Android     Win32     Objective C

           Embedded System       ChromeOS

                    Server-side Script



    励                师                      领
为         师                              师
开发环               -

• 减      环
     码       断环      设     档

•     块   开发
         HTML     CSS JS       块开发

• 让      错变        难
    Nicholas Zakas     “Make it difficult to make
    mistakes.“
1. 减         环
eliminate environment difference
断环                     过           ...
JavaScript       断 Host   决   图档   AJAX     径




  PHP        断   径   连        RD   样画       芦
类   断
环   给   设   档
环     开发   员数       语    类
让这   断 码   设 档 来    难   维
护      错    难 ...
没 办
码   断环   设 档   写   环
问题 1 :                    Host Name
              devm1.corp.muchiii.com:5002*
  Development
              devm1.corp.muchiii.com:50029
               devm1.corp.muchiii.com
         Alpha
               static.devm1.corp.muchiii.com

               img[n].staging.bar.tw1.corp.muchiii.com
       Staging
               w[n].staging.bar.tw1.corp.muchiii.com

                www.muchiii.com
   Production
                a.mimgs.com


             Commit                                码
    仅         组态档                 写            环
对开发      员来说
 开发   Host 对应
见        host 档
换   烦       Port  Protocol   对应
Proxy PAC 档   FF    Chrome   换
    没办             浏览
经过     寻
发现 Fiddler   Charles Debugging Proxy
  这类虚拟        软          们


                          对应   环
实际
 Charles Debugging Proxy 对应   devm1.corp.muchiii.com:50020
Fiddler 还
Fiddler 这类   软   还             应

1. 协 AJAX
2. 协 开发时             图         传   务
3.      惯
4. 变浏览           顺
5. 拟         环

 为   个           师   Fiddler       备
线       错 Online Debugging




    将   线   CSS      baidu.css
帮   东




        没   Firebug           YUI Console


        页             湾   欢
CSS        档内                    图档            径写

实际 径        /var/www/muchiii/static/home/style.css
HTTP 请      径    http://a.mimgs.com/home/style.css


#mod .bd {
    background: url(bg_empty.png);
}



#mod .bd {
    background: url(/https/www.slideshare.net/home/bg_empty.png);
}



#mod .bd {
    background: url(http://a.mimgs.com/home/bg_empty.png);
}
CSS        档内                    图档            径写
    #mod .bd {
        background: url(bg_empty.png);
    }



    #mod .bd {
        background: url(/https/www.slideshare.net/home/bg_empty.png);
    }



    #mod .bd {
        background: url(http://a.mimgs.com/home/bg_empty.png);
    }




为              将 个 CSS 档
      届时 CSS 将会        录
         对 径     会    图档                              径错误
               过   杂                                  错
      们   规
1.1 结语
         规   尽     减      码   环
         让   维护   来   轻
2.       块        开发
     Modular Development
Modular Development
       块       页开发


              页    为开发逻辑
      开发 个个 独 运         Div 块
独   HTML CSS JavaScript   Controller 档
建立前端开发团队 (Front-end Development Environment)
寻        块
                      _photo_filter.php
                      _photo_filter.css
                      _photo_filter.js




   显              块
_photo_view.php
_photo_view.css
_photo_view.js

                                  块
                      _photo_list.php
                      _photo_list.css
                      _photo_list.js
许   块档   (HTML)




         独   HTML 档
许   块档   CSS




               独   CSS 档
许   块档   JavaScript




                  独   JS 档
块             难点

• HTML           决        include
           Performance   响
• CSS :  id 当 namespace
    个 组      个档      页 30 个         组   会
  30 个 requests 对       响
• JavaScript :   CSS   样会   request
      问题               个         组 沟
static.php 设     页                          CSS/JS



               $key - PHP Module      称 or 页       称




                  is_top:       </head>          </body>


                     还      is_noscript, media    属        设
虽   static.php     块       CSS/JS 档        连            来
         务 请       过        对            冲击


                 10 个 CSS Request




                                      19 个 JS Request
Mini Tool


                                                            将 码缩
                                                         个 CSS/JS 档
                                                           开发环


                                                     档         担      问题


http://www.flickr.com/photos/prettypony/2644225789/
Mini   XML 设    档       刚            设                  这



                        寻 档                    义 个
                        $DEV_ROOT        设     Apache VirtualHost   环   变数



                                 个 module 会              CSS    JS 档



               module       module           exclude    个档




                                     index     CSS/JS   块档
经过 Mini          压缩




/mini?module=[Mini    块   称]&type=[css   js]
观           压缩   内




&nominify
长   static.php



        29 个 Request
页   Request 数
简过   static.php



            29 个 Request
            2 个 Request
页   Request   减
过 Mini 设     档   将   独   CSS/
JavaScript 档           达
Mini                 环                           静
态档     务           Server-Side Script
  会对          冲击



                    线     CSS/JS        变        个静态档

                               s
               *    md5_file() 检 档   内   产       stamp
                        减 CDN               档
JavaScript        块沟
    JavaScript     块为单
         独     Function Object
       统        沟           战

      mod A          mod B




                     mod C
满




        显        张图             户   单   资


                            毕
        显   点选   图

                        户点选
显           张图
    选        动

                      户点选   图
window.mods[“photo-show”] = {
  showPhoto : function (src) {
    ....
  }
}            会       变      决问题




                                                            户点选




                                  window.mods[“photo-list”] = {
                                    init : function () {
                                      ...
                                      $(“img”).on(“click”, function(e) {
                                          window.mods[“photo-show”].showPhoto(this.src);
                                       }
                                                                    当    显   块没            页
                                    }                               时      块    现 Bug!
们       员(                块) 们
    场 (页 )                                                      赛(   )




       http://www.flickr.com/photos/vincentteeuwen/2816245519/
纪        (                                         变数)
将               员(               块)              间 冲




http://www.flickr.com/photos/acaben/2477822120/
页       师 Nicholas Zakas         启发




    师    这   PPK on JavaScript
稳       JavaScript 应




http://www.slideshare.net/nzakas/scalable-javascript-application-architecture
Loose Coupling
                                                                        组 关

http://www.thesoftwaredevotional.com/images/coupling_train.jpg




                                                    当页                 个 块
                                将          会                        组 结     样       为
                    将                                            让      组        沟      动
                          时                                        会 响    沟     组
Broadcast & Listen
        组沟        类 Hub

      broadcast    个 Client   会        讯
listen      Client                兴   讯    处
电脑发      讯    电脑 会
      电脑 处   兴   讯
Broadcast & Listen
         组沟        类 Hub

个 Client         内       时          会                  Client     错
 个   块        页      时          会                      块      页
           http://www.directsystems.com/support/switchvshub.php
块    独   运   类
    页




                 http://www.flickr.com/photos/nadesign/4324782791/
废话   说   来   实
个      个
       • Y.Core.register() :
         让个别 块 册
       • Y.Core._match() :
             组间          对应
Core
       • Y.Core._addListener() :
               个 组 记
块      API

                   • oAPI.listen() :
mod   mod    mod
                     让          块       个
      API          • oAPI.broadcast()
                     让         块发       个
      Core
                   • oAPI.getNode() :
                              块 DOM         参
_photo_list.js                          块            JavaScript
              资       Y.Core.register("photo-list", {
     毕
                          //     块
显   张图        满           init: function (api) {
                              // 这个 块 兴            两 讯
                              api.listen("photo-filter-submit");
                              api.listen("photo-filter-response");
                              this.api = api;
                          },
          户       单       //     块 页       ContentReady
                          onload: function () {
                              //    诉 Core          毕         张图   径
                              this.api.broadcast("photo-list-rendered", img.src);
                          },
                          //     块    讯
                          onmessage: function (eventType, callerName, data) {
                              switch (eventType) {
                                   case "photo-filter-response" :
                                       //   满
                                   break;
                                   case "photo-filter-submit" :
                                       //
                                   break;
                              }
                          },
                          _updateUI: function (data) {
                              //    诉 Core          毕         张图   径
                              this.api.broadcast("photo-list-rendered", img.src);
                          }
                      });
Demo
http://josephj.com:50010
结语
  块开发让开发         专       单       开发
    烦恼 页 杂                  测试
块为单 独 测试             Unit Test    个
TestCase Scope
3. 让        错变                   难
 Make it difficult to make mistakes
从   开   处   抢   赢
个来
说

      j os ephj




                  http://www.flickr.com/photos/eye1/3184963395/
                                                 by Ivan Mlinaric
开   许   Guidelines
建立前端开发团队 (Front-end Development Environment)
时 难        话
GM Meeting 时       级领导对   们       质   质
   As a F2E team    们
软   开发团队     须    规
                 设计
     码   质
规     开发   员
 设   况 会   ...
烟囱      盖 顶
这       叠




 Winchester House
 http://www.crockford.com/codecamp/quality.ppt
Guideline 错                   贴        积
习难        阳 阴违    个 对              习惯
                 将 Guideline
当         Guideline 会
遗   个团队   码   质开        乱...
Code Review    个                许   时
间 没办       办       发现      问题
  协                  ...
软 开发   应该            协
电脑          0   1吗
•         Commit 会      检       没   过       过关
    • 执    JSLint : JavaScript Good Parts
    • 执    PHP CodeSniffer :        订 码标     检
          PHP       JavaScript      CSS
•         Packaging 会
    • 执    Image Optimization (Smush.it)
       图
    • 没   压缩过      JavaScript    CSS    会
document.write
          can be form of eval




JSLint
.rule {
                           attr: value;
                        }




PHP CodeSniffer (a.k.a phpcs)
们 Visual Designer
        负责    PSD 档

 F2E       处   图档          问题



PNG8           认   Web

           Fireworks    转换
       Alpha Transparency
图   开 VD   PSD...
将 PNG8 转换
这样   费   没   义
个         帮




     图档     总频宽   46%




Image Optimization
给 Commit
pkg_create
             JS/CSS 档
         档          档   会     变               Mini
                          码       host    称
                    (www.muchiii.com -> devm1.corp.muchiii.com)




pkg_create &       线 pkg_deploy
动   让   协   错误   会   发
Review
• 减      环
                  规    减   环   产         码
    质

•       块   开发
    让   个    块独    来        减      争议        让
     组       沟

• 让      错变       难
     过            动        减       费   时间
     个       错
开发   http://josephj.com:50010

线    http://modev.josephj.com



规                           码       础

     过                   够      荡
Thank You
                                                    so muchiii
                                                     Any Questions?
                                                     josephj6802@gmail.com



http://www.flickr.com/photos/phploveme/2847931240/

More Related Content

PDF
模块加载策略 - 2012 SDCC, 北京
PDF
更好的文件组织
PDF
面向未来的重构
PDF
淘宝移动端Web开发最佳实践
PPTX
浅析浏览器解析和渲染
PDF
淘宝前端技术巡礼
PPTX
[2008]网站重构 -who am i
PDF
Responsive Web UI Design
模块加载策略 - 2012 SDCC, 北京
更好的文件组织
面向未来的重构
淘宝移动端Web开发最佳实践
浅析浏览器解析和渲染
淘宝前端技术巡礼
[2008]网站重构 -who am i
Responsive Web UI Design

What's hot (20)

PDF
HTML 入門 - 前端工程開發實務訓練
PPT
Html5
PDF
SeaJS - 前端模块化开发探索与网站性能优化实践
PDF
Performance 入門 - 前端工程開發實務訓練
PDF
前端工程開發實務訓練
PDF
Html&css培训 舒克
PDF
深入剖析浏览器
PDF
CSS 入門 - 前端工程開發實務訓練
PDF
Javascript 入門 - 前端工程開發實務訓練
PPTX
Html5移动网站开发实践
PDF
Java Web动态图表编程
PDF
Effective.enterprise.java中文版
PDF
Node.js 入門 - 前端工程開發實務訓練
PPTX
移动Web开发框架jqm探讨
PPT
Html5和css3入门
PPT
一淘新首页总结
PPTX
網頁三本柱之Html與css
PPTX
第三方内容开发最佳实践
PPTX
淘宝开放产品前端实践
PPTX
How to ASP.NET MVC4
HTML 入門 - 前端工程開發實務訓練
Html5
SeaJS - 前端模块化开发探索与网站性能优化实践
Performance 入門 - 前端工程開發實務訓練
前端工程開發實務訓練
Html&css培训 舒克
深入剖析浏览器
CSS 入門 - 前端工程開發實務訓練
Javascript 入門 - 前端工程開發實務訓練
Html5移动网站开发实践
Java Web动态图表编程
Effective.enterprise.java中文版
Node.js 入門 - 前端工程開發實務訓練
移动Web开发框架jqm探讨
Html5和css3入门
一淘新首页总结
網頁三本柱之Html與css
第三方内容开发最佳实践
淘宝开放产品前端实践
How to ASP.NET MVC4

Viewers also liked (20)

PPTX
Front end Tips Tricks & Tools
PDF
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
PDF
Frontend SPOF
PDF
Sinau Bareng Frontend Web Development @ DiLo Malang
PDF
Frontend automation and stability
PDF
Front End Tooling and Performance - Codeaholics HK 2015
PDF
User eXperience & Front End Development
PDF
Architecting your Frontend
PDF
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
PDF
Wrangling Large Scale Frontend Web Applications
PDF
A modern front end development workflow for Magnolia at Atlassian
PPTX
Frontend technologies
PDF
How to Build Front-End Web Apps that Scale - FutureJS
PPTX
W3 conf hill-html5-security-realities
PPTX
Modern Frontend Technology
PDF
Frontend at Scale - The Tumblr Story
PDF
Front End Development Workflow Tools
PDF
TechTalk #85 : Latest Frontend Technologies
PDF
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
PDF
engage 2015 - Domino App Development - Where should I go now?
Front end Tips Tricks & Tools
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Frontend SPOF
Sinau Bareng Frontend Web Development @ DiLo Malang
Frontend automation and stability
Front End Tooling and Performance - Codeaholics HK 2015
User eXperience & Front End Development
Architecting your Frontend
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Wrangling Large Scale Frontend Web Applications
A modern front end development workflow for Magnolia at Atlassian
Frontend technologies
How to Build Front-End Web Apps that Scale - FutureJS
W3 conf hill-html5-security-realities
Modern Frontend Technology
Frontend at Scale - The Tumblr Story
Front End Development Workflow Tools
TechTalk #85 : Latest Frontend Technologies
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
engage 2015 - Domino App Development - Where should I go now?

Similar to 建立前端开发团队 (Front-end Development Environment) (20)

PDF
Website Pracice Focusing on UX, Chinese
PDF
运维系统开发与Rails 3页面开发实践
PPTX
Fl介绍
PDF
前端性能优化和自动化
PPTX
重构经验分享
PDF
李成银:前端编译平台
PDF
前端编译平台
PDF
美团前端架构简介
PDF
CssGaga
PDF
Web development overview
KEY
高粒度模块化的前端开发
PDF
多说沈振宇:插件思想及多说的开发实践
PPTX
HTML5 介绍
 
PDF
白玉磊 Webrebuild
PDF
石玉磊 Web rebuild
PPTX
Http协议介绍
PPTX
程序组介绍Ver2.0
PPTX
前端基础知识回顾
KEY
独爽不如众乐
KEY
分享平台构建之旅
Website Pracice Focusing on UX, Chinese
运维系统开发与Rails 3页面开发实践
Fl介绍
前端性能优化和自动化
重构经验分享
李成银:前端编译平台
前端编译平台
美团前端架构简介
CssGaga
Web development overview
高粒度模块化的前端开发
多说沈振宇:插件思想及多说的开发实践
HTML5 介绍
 
白玉磊 Webrebuild
石玉磊 Web rebuild
Http协议介绍
程序组介绍Ver2.0
前端基础知识回顾
独爽不如众乐
分享平台构建之旅

More from Joseph Chiang (20)

PDF
不断归零的前端人生 - 2016 中国软件开发者大会
PDF
Let's Redux!
PDF
Automatic Functional Testing with Selenium and SauceLabs
PDF
From Hacker to Programmer (w/ Webpack, Babel and React)
PDF
JavaScript Promise
PDF
F2E for Enterprise
PDF
JavaScript Code Quality
PDF
F2E, the Keystone
PDF
前端的未來 - 前端工程實務訓練
PDF
Debugging - 前端工程開發實務訓練
PDF
YUI 教學 - 前端工程開發實務訓練
PDF
YUI is Sexy (for JSDC.tw)
PDF
YUI is Sexy - 使用 YUI 作為開發基礎
KEY
Git - The Social Coding System
PDF
miiiCasa is Fun
PDF
分享無名小站 API
PDF
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
PDF
建立前端開發團隊 - 2011 中華電信訓練所版
PDF
不用不可之 Fiddler Debugging Proxy!
PDF
Open platform
不断归零的前端人生 - 2016 中国软件开发者大会
Let's Redux!
Automatic Functional Testing with Selenium and SauceLabs
From Hacker to Programmer (w/ Webpack, Babel and React)
JavaScript Promise
F2E for Enterprise
JavaScript Code Quality
F2E, the Keystone
前端的未來 - 前端工程實務訓練
Debugging - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練
YUI is Sexy (for JSDC.tw)
YUI is Sexy - 使用 YUI 作為開發基礎
Git - The Social Coding System
miiiCasa is Fun
分享無名小站 API
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
建立前端開發團隊 - 2011 中華電信訓練所版
不用不可之 Fiddler Debugging Proxy!
Open platform

建立前端开发团队 (Front-end Development Environment)

  • 1. Front-end Dev Environment Ting-yu Chiang / josephj josephj.com / [email protected]
  • 2. /蒋 开 来 • 2.5 师 • 0.5 开发 传 • 1 师
  • 3. 热爱 认为 Solution 讨论 来
  • 4. 环岛 29 2008 5 27
  • 5. 为 个 员 实 运 关 ( 国语 学 ) 却进 别 挤 头 进 见识 软
  • 6. 职 D-Link muchiii Team D-Link 现 设备 联 务 强 户 关联
  • 7. 决 进 D-Link 当时 觉 产 来 没预 ...
  • 8. 为 D-Link 过 没 联 开发经验 进 没 从 开 开 开发环 决 软
  • 9. Software Engineer Project Manager Service Engineer System Architect DBA Front-end Engineer QA Engineer QA Tester System Analyzer Operation Engineer 这 Yahoo! 没 会 为 专门负责 团队... 务 决 决 够 变现 环 会
  • 10. 发现 欢 纯 HTML/CSS/JavaScript 经 结 术让 够 ( 碍 组 维护 现 热
  • 11. Azure Firmware Flash I18N/L10N PEAR CMS Apache Module Hardware Android Win32 Objective C Embedded System ChromeOS Server-side Script 励 师 领 为 师 师
  • 12. 开发环 - • 减 环 码 断环 设 档 • 块 开发 HTML CSS JS 块开发 • 让 错变 难 Nicholas Zakas “Make it difficult to make mistakes.“
  • 13. 1. 减 环 eliminate environment difference
  • 14. 断环 过 ... JavaScript 断 Host 决 图档 AJAX 径 PHP 断 径 连 RD 样画 芦
  • 15. 断 环 给 设 档
  • 16. 开发 员数 语 类 让这 断 码 设 档 来 难 维 护 错 难 ...
  • 17. 没 办 码 断环 设 档 写 环
  • 18. 问题 1 : Host Name devm1.corp.muchiii.com:5002* Development devm1.corp.muchiii.com:50029 devm1.corp.muchiii.com Alpha static.devm1.corp.muchiii.com img[n].staging.bar.tw1.corp.muchiii.com Staging w[n].staging.bar.tw1.corp.muchiii.com www.muchiii.com Production a.mimgs.com Commit 码 仅 组态档 写 环
  • 19. 对开发 员来说 开发 Host 对应
  • 20. host 档 换 烦 Port Protocol 对应
  • 21. Proxy PAC 档 FF Chrome 换 没办 浏览
  • 22. 经过 寻 发现 Fiddler Charles Debugging Proxy 这类虚拟 软 们 对应 环
  • 23. 实际 Charles Debugging Proxy 对应 devm1.corp.muchiii.com:50020
  • 24. Fiddler 还 Fiddler 这类 软 还 应 1. 协 AJAX 2. 协 开发时 图 传 务 3. 惯 4. 变浏览 顺 5. 拟 环 为 个 师 Fiddler 备
  • 25. 线 错 Online Debugging 将 线 CSS baidu.css
  • 26. 东 没 Firebug YUI Console 页 湾 欢
  • 27. CSS 档内 图档 径写 实际 径 /var/www/muchiii/static/home/style.css HTTP 请 径 http://a.mimgs.com/home/style.css #mod .bd { background: url(bg_empty.png); } #mod .bd { background: url(/https/www.slideshare.net/home/bg_empty.png); } #mod .bd { background: url(http://a.mimgs.com/home/bg_empty.png); }
  • 28. CSS 档内 图档 径写 #mod .bd { background: url(bg_empty.png); } #mod .bd { background: url(/https/www.slideshare.net/home/bg_empty.png); } #mod .bd { background: url(http://a.mimgs.com/home/bg_empty.png); } 为 将 个 CSS 档 届时 CSS 将会 录 对 径 会 图档 径错误 过 杂 错 们 规
  • 29. 1.1 结语 规 尽 减 码 环 让 维护 来 轻
  • 30. 2. 块 开发 Modular Development
  • 31. Modular Development 块 页开发 页 为开发逻辑 开发 个个 独 运 Div 块 独 HTML CSS JavaScript Controller 档
  • 33. 块 _photo_filter.php _photo_filter.css _photo_filter.js 显 块 _photo_view.php _photo_view.css _photo_view.js 块 _photo_list.php _photo_list.css _photo_list.js
  • 34. 块档 (HTML) 独 HTML 档
  • 35. 块档 CSS 独 CSS 档
  • 36. 块档 JavaScript 独 JS 档
  • 37. 难点 • HTML 决 include Performance 响 • CSS : id 当 namespace 个 组 个档 页 30 个 组 会 30 个 requests 对 响 • JavaScript : CSS 样会 request 问题 个 组 沟
  • 38. static.php 设 页 CSS/JS $key - PHP Module 称 or 页 称 is_top: </head> </body> 还 is_noscript, media 属 设
  • 39. static.php 块 CSS/JS 档 连 来 务 请 过 对 冲击 10 个 CSS Request 19 个 JS Request
  • 40. Mini Tool 将 码缩 个 CSS/JS 档 开发环 档 担 问题 http://www.flickr.com/photos/prettypony/2644225789/
  • 41. Mini XML 设 档 刚 设 这 寻 档 义 个 $DEV_ROOT 设 Apache VirtualHost 环 变数 个 module 会 CSS JS 档 module module exclude 个档 index CSS/JS 块档
  • 42. 经过 Mini 压缩 /mini?module=[Mini 块 称]&type=[css js]
  • 43. 压缩 内 &nominify
  • 44. static.php 29 个 Request
  • 45. Request 数
  • 46. 简过 static.php 29 个 Request 2 个 Request
  • 47. Request 减
  • 48. 过 Mini 设 档 将 独 CSS/ JavaScript 档 达
  • 49. Mini 环 静 态档 务 Server-Side Script 会对 冲击 线 CSS/JS 变 个静态档 s * md5_file() 检 档 内 产 stamp 减 CDN 档
  • 50. JavaScript 块沟 JavaScript 块为单 独 Function Object 统 沟 战 mod A mod B mod C
  • 51. 显 张图 户 单 资 毕 显 点选 图 户点选 显 张图 选 动 户点选 图
  • 52. window.mods[“photo-show”] = { showPhoto : function (src) { .... } } 会 变 决问题 户点选 window.mods[“photo-list”] = { init : function () { ... $(“img”).on(“click”, function(e) { window.mods[“photo-show”].showPhoto(this.src); } 当 显 块没 页 } 时 块 现 Bug!
  • 53. 员( 块) 们 场 (页 ) 赛( ) http://www.flickr.com/photos/vincentteeuwen/2816245519/
  • 54. ( 变数) 将 员( 块) 间 冲 http://www.flickr.com/photos/acaben/2477822120/
  • 55. 师 Nicholas Zakas 启发 师 这 PPK on JavaScript
  • 56. JavaScript 应 http://www.slideshare.net/nzakas/scalable-javascript-application-architecture
  • 57. Loose Coupling 组 关 http://www.thesoftwaredevotional.com/images/coupling_train.jpg 当页 个 块 将 会 组 结 样 为 将 让 组 沟 动 时 会 响 沟 组
  • 58. Broadcast & Listen 组沟 类 Hub broadcast 个 Client 会 讯 listen Client 兴 讯 处
  • 59. 电脑发 讯 电脑 会 电脑 处 兴 讯
  • 60. Broadcast & Listen 组沟 类 Hub 个 Client 内 时 会 Client 错 个 块 页 时 会 块 页 http://www.directsystems.com/support/switchvshub.php
  • 61. 独 运 类 页 http://www.flickr.com/photos/nadesign/4324782791/
  • 62. 废话 说 来 实
  • 63. 个 • Y.Core.register() : 让个别 块 册 • Y.Core._match() : 组间 对应 Core • Y.Core._addListener() : 个 组 记
  • 64. API • oAPI.listen() : mod mod mod 让 块 个 API • oAPI.broadcast() 让 块发 个 Core • oAPI.getNode() : 块 DOM 参
  • 65. _photo_list.js 块 JavaScript 资 Y.Core.register("photo-list", { 毕 // 块 显 张图 满 init: function (api) { // 这个 块 兴 两 讯 api.listen("photo-filter-submit"); api.listen("photo-filter-response"); this.api = api; }, 户 单 // 块 页 ContentReady onload: function () { // 诉 Core 毕 张图 径 this.api.broadcast("photo-list-rendered", img.src); }, // 块 讯 onmessage: function (eventType, callerName, data) { switch (eventType) { case "photo-filter-response" : // 满 break; case "photo-filter-submit" : // break; } }, _updateUI: function (data) { // 诉 Core 毕 张图 径 this.api.broadcast("photo-list-rendered", img.src); } });
  • 67. 结语 块开发让开发 专 单 开发 烦恼 页 杂 测试 块为单 独 测试 Unit Test 个 TestCase Scope
  • 68. 3. 让 错变 难 Make it difficult to make mistakes
  • 69. 开 处 抢 赢
  • 70. 个来 说 j os ephj http://www.flickr.com/photos/eye1/3184963395/ by Ivan Mlinaric
  • 71. 许 Guidelines
  • 73. 时 难 话 GM Meeting 时 级领导对 们 质 质 As a F2E team 们
  • 74. 开发团队 须 规 设计 码 质
  • 75. 开发 员 设 况 会 ...
  • 76. 烟囱 盖 顶 这 叠 Winchester House http://www.crockford.com/codecamp/quality.ppt
  • 77. Guideline 错 贴 积 习难 阳 阴违 个 对 习惯 将 Guideline
  • 78. Guideline 会 遗 个团队 码 质开 乱...
  • 79. Code Review 个 许 时 间 没办 办 发现 问题 协 ...
  • 80. 软 开发 应该 协 电脑 0 1吗
  • 81. Commit 会 检 没 过 过关 • 执 JSLint : JavaScript Good Parts • 执 PHP CodeSniffer : 订 码标 检 PHP JavaScript CSS • Packaging 会 • 执 Image Optimization (Smush.it) 图 • 没 压缩过 JavaScript CSS 会
  • 82. document.write can be form of eval JSLint
  • 83. .rule { attr: value; } PHP CodeSniffer (a.k.a phpcs)
  • 84. 们 Visual Designer 负责 PSD 档 F2E 处 图档 问题 PNG8 认 Web Fireworks 转换 Alpha Transparency
  • 85. 开 VD PSD...
  • 87. 这样 费 没 义
  • 88. 帮 图档 总频宽 46% Image Optimization
  • 90. pkg_create JS/CSS 档 档 档 会 变 Mini 码 host 称 (www.muchiii.com -> devm1.corp.muchiii.com) pkg_create & 线 pkg_deploy
  • 91. 让 协 错误 会 发
  • 92. Review • 减 环 规 减 环 产 码 质 • 块 开发 让 个 块独 来 减 争议 让 组 沟 • 让 错变 难 过 动 减 费 时间 个 错
  • 93. 开发 http://josephj.com:50010 线 http://modev.josephj.com 规 码 础 过 够 荡
  • 94. Thank You so muchiii Any Questions? [email protected] http://www.flickr.com/photos/phploveme/2847931240/