SlideShare una empresa de Scribd logo
1 de 94
Descargar para leer sin conexión
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(/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(/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 档
寻        块
                      _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
时 难        话
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/

Más contenido relacionado

La actualidad más candente

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

La actualidad más candente (20)

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

Destacado

Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & ToolsSandeep Ramgolam
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Edureka!
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangMoch. Zamroni
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stabilityMáté Nádasdi
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Holger Bartel
 
User eXperience & Front End Development
User eXperience & Front End DevelopmentUser eXperience & Front End Development
User eXperience & Front End Developmentandreafallaswork
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your FrontendRuben Teijeiro
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasDavid Amend
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsRyan Roemer
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianMagnolia
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSPhil Leggetter
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesBrad Hill
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend TechnologyShip Hsu
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryChris Miller
 
Front End Development Workflow Tools
Front End Development Workflow ToolsFront End Development Workflow Tools
Front End Development Workflow ToolsAhmed Elmehri
 
TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend TechnologiesTechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologiesbincangteknologi
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...Prasid Pathak
 
engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?René Winkelmeyer
 

Destacado (20)

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

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

July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctechKai Cui
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化kaven yan
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails serverMichael Chen
 
前端性能测试
前端性能测试前端性能测试
前端性能测试tbmallf2e
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServBen Lue
 
Inside the browser
Inside the browserInside the browser
Inside the browserotakustay
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發Fred Chien
 
Node js feat pegasus
Node js feat pegasusNode js feat pegasus
Node js feat pegasuscnfi
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案美团技术团队
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocitykumawu
 
面向开发的前端性能优化
面向开发的前端性能优化面向开发的前端性能优化
面向开发的前端性能优化li qiang
 
Inside the-browser
Inside the-browserInside the-browser
Inside the-browserjy03845581
 
Inside the-browser
Inside the-browserInside the-browser
Inside the-browserjy03845581
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsChieh Lin
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
2011新版首页总结 技术篇
2011新版首页总结 技术篇2011新版首页总结 技术篇
2011新版首页总结 技术篇传贵 谢
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
Kissy design
Kissy designKissy design
Kissy designyiming he
 

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

July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServ
 
Inside the browser
Inside the browserInside the browser
Inside the browser
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
 
Node js feat pegasus
Node js feat pegasusNode js feat pegasus
Node js feat pegasus
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
 
面向开发的前端性能优化
面向开发的前端性能优化面向开发的前端性能优化
面向开发的前端性能优化
 
Inside the-browser
Inside the-browserInside the-browser
Inside the-browser
 
Inside the-browser
Inside the-browserInside the-browser
Inside the-browser
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
2011新版首页总结 技术篇
2011新版首页总结 技术篇2011新版首页总结 技术篇
2011新版首页总结 技术篇
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Kissy design
Kissy designKissy design
Kissy design
 

Más de Joseph Chiang

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

Más de Joseph Chiang (20)

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

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

  • 1. Front-end Dev Environment Ting-yu Chiang / josephj josephj.com / josephj6802@gmail.com
  • 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(/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(/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 档
  • 32.
  • 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
  • 72.
  • 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? josephj6802@gmail.com http://www.flickr.com/photos/phploveme/2847931240/