Upgrade to Pro — share decks privately, control downloads, hide ads and more …

更好的文件组织

Max
February 06, 2013

 更好的文件组织

更好的文件组织

Max

February 06, 2013
Tweet

More Decks by Max

Other Decks in Programming

Transcript

  1. package dependence tools compiler loader http://www.flickr.com/photos/sixteen-miles/3695679411/ . . . .

    . ߋ޷త * จ݅组织 kejun / hikejun.com Sunday, March 25, 2012 ઌղ释ҰԼ为ॄ㜮ੋจ݅组织ࣕෆੋ୅码组织ɻ୅码组织ԟԟੋࢦ应༻Սᦻํ໘త಺༰ɼ诸೗ CommonJSɺMVC೭㜎త话题ɼୠ这ࠣੋࠓఱෆձ㐪ٴతɻࠓఱ谈论తจ݅组织ࢦతबੋ੩态จ݅త؅ ཧ࿨组织ɻ
  2. 1. ެڞจ݅త৑༨ ʵ ໛块Խ ʵ ෼㩂业务逻辑୅码 ໨త࿨໨标 Sunday, March 25,

    2012 [લ䫆఺ੋ实际۰౸త问题ɼଖதୈ1఺໬为严ॏ]讨论୅码组织ձ௚઀联ܥ౸ୈ1఺ɻୠ仅仅ղႊ๭Ұ问题౎ෆੋ኷޷తํࣜɻ 举࿽ྫࢠɼ༻CommonJSݪຊੋ኷޷త୅码໛块Խ组ํࣜɼሏߋ㭕߹༻ဋ单页తweb应༻ɼ䇖发时组织తੋ细ཻ౓త୅码໛ 块ɼ্线޳编译੒单࿽จ݅ɻୠሏ೗Ռ༻ဋ传统తେ规໛᠓᜾䇖发ब༗问题ɼෆ߹ኂ଄੒େྔখจ݅请ٻɼ߹ኂຢձ଄੒ެڞ จ݅ඇৗେɻཁฏߧ这ࠣ问题ಘग़Ұ࿽࠷终ํҊɼੋࠓఱཁ讨论ओཁ಺༰ɻզձઌဓୈ2఺ग़发ɼ牵ग़ॴ༗త问题ɻ
  3. 1. ެڞจ݅త৑༨ ʵ ໛块Խ ʵ ෼㩂业务逻辑୅码 ໨త࿨໨标 2. ఏߴ᠓᜾ੑೳ ʵ

    ਚշల现಺༰ ʵ ਚշ㠳应༻户ަޓ Sunday, March 25, 2012 [લ䫆఺ੋ实际۰౸త问题ɼଖதୈ1఺໬为严ॏ]讨论୅码组织ձ௚઀联ܥ౸ୈ1఺ɻୠ仅仅ղႊ๭Ұ问题౎ෆੋ኷޷తํࣜɻ 举࿽ྫࢠɼ༻CommonJSݪຊੋ኷޷త୅码໛块Խ组ํࣜɼሏߋ㭕߹༻ဋ单页తweb应༻ɼ䇖发时组织తੋ细ཻ౓త୅码໛ 块ɼ্线޳编译੒单࿽จ݅ɻୠሏ೗Ռ༻ဋ传统తେ规໛᠓᜾䇖发ब༗问题ɼෆ߹ኂ଄੒େྔখจ݅请ٻɼ߹ኂຢձ଄੒ެڞ จ݅ඇৗେɻཁฏߧ这ࠣ问题ಘग़Ұ࿽࠷终ํҊɼੋࠓఱཁ讨论ओཁ಺༰ɻզձઌဓୈ2఺ग़发ɼ牵ग़ॴ༗త问题ɻ
  4. 1. ެڞจ݅త৑༨ ʵ ໛块Խ ʵ ෼㩂业务逻辑୅码 ໨త࿨໨标 2. ఏߴ᠓᜾ੑೳ ʵ

    ਚշల现಺༰ ʵ ਚշ㠳应༻户ަޓ 3. ‘‘૒ߴ’’త໨标∶ ߴՄ维护ੑ࿨ߴੑೳ Sunday, March 25, 2012 [લ䫆఺ੋ实际۰౸త问题ɼଖதୈ1఺໬为严ॏ]讨论୅码组织ձ௚઀联ܥ౸ୈ1఺ɻୠ仅仅ղႊ๭Ұ问题౎ෆੋ኷޷తํࣜɻ 举࿽ྫࢠɼ༻CommonJSݪຊੋ኷޷త୅码໛块Խ组ํࣜɼሏߋ㭕߹༻ဋ单页తweb应༻ɼ䇖发时组织తੋ细ཻ౓త୅码໛ 块ɼ্线޳编译੒单࿽จ݅ɻୠሏ೗Ռ༻ဋ传统తେ规໛᠓᜾䇖发ब༗问题ɼෆ߹ኂ଄੒େྔখจ݅请ٻɼ߹ኂຢձ଄੒ެڞ จ݅ඇৗେɻཁฏߧ这ࠣ问题ಘग़Ұ࿽࠷终ํҊɼੋࠓఱཁ讨论ओཁ಺༰ɻզձઌဓୈ2఺ग़发ɼ牵ग़ॴ༗త问题ɻ
  5. 1. ެڞจ݅త৑༨ ʵ ໛块Խ ʵ ෼㩂业务逻辑୅码 ໨త࿨໨标 2. ఏߴ᠓᜾ੑೳ ʵ

    ਚշల现಺༰ ʵ ਚշ㠳应༻户ަޓ 3. ‘‘૒ߴ’’త໨标∶ ߴՄ维护ੑ࿨ߴੑೳ 4. 㠥֎Ұ࿽໨标∶ ఏߴ䇖发Ꮘ཰ Sunday, March 25, 2012 [લ䫆఺ੋ实际۰౸త问题ɼଖதୈ1఺໬为严ॏ]讨论୅码组织ձ௚઀联ܥ౸ୈ1఺ɻୠ仅仅ղႊ๭Ұ问题౎ෆੋ኷޷తํࣜɻ 举࿽ྫࢠɼ༻CommonJSݪຊੋ኷޷త୅码໛块Խ组ํࣜɼሏߋ㭕߹༻ဋ单页తweb应༻ɼ䇖发时组织తੋ细ཻ౓త୅码໛ 块ɼ্线޳编译੒单࿽จ݅ɻୠሏ೗Ռ༻ဋ传统తେ规໛᠓᜾䇖发ब༗问题ɼෆ߹ኂ଄੒େྔখจ݅请ٻɼ߹ኂຢձ଄੒ެڞ จ݅ඇৗେɻཁฏߧ这ࠣ问题ಘग़Ұ࿽࠷终ํҊɼੋࠓఱཁ讨论ओཁ಺༰ɻզձઌဓୈ2఺ग़发ɼ牵ग़ॴ༗త问题ɻ
  6. http://www.zhihu.com/question/20045953 Ҿࢠ ೂޅಞ်૫ഈ၂۱CVUUPOቋॹಞႨ޼ु֞ѩ౏ॖၛҠቔ Ⴕ၂۱๙ႨCVUUPO бೂğ๷ࡩCVUUPO ᄝ಩ޅ်૫׻ႵॖିႨ֞b໙ีЇݣğ ೂޅቋॹཁൕԛটbčࡌഡ෱ၘࣜᄝ်૫ौభ໊֥ᇂĎ CVUUPOႵׄࠌྛູđೂޅ࣐ॹԚ൓߄čԚ൓߄၇ঠKRVFSZĎ ቔູ๙Ⴈቆࡱđေॉ੮۲ᇕॖି౦ঃ֥႕ཙč఼ט൞۲ᇕॖି౦ঃĆĎ ۳ԛ၂۱ቋݺ֥ٚσĤ

     ٳ۩ཌ  ໙ีׄ҂ࣇࣇ൞Ⴊ߄࠯ెđط൞်૫ഈKT DTT֩ཋᇅၹ෍ೂޅܵ৘b Sunday, March 25, 2012 ද໘্؃这ੋղႊҰ࿽ಛྫతੑೳ问题ɼୠ实际্զੋ૝讨论೗Կߋշత㠳应༻户ߦ为这Ұኅᔟత问题ɻ༻户ଧ䇖 页໘时౳଴㞆વੋਖ਼ৗతɻୠੋ༻户೗Ռ༗໌䉯తҙ图ɼଞձഭෆٸ଴఺ಹ࿽҈钮ɻ现ࡏత᠓页ঝ载ଠଟత东੢ɼ 动辄े႓ɺ႓े࿽JSɼ೗Կ组织ሏ们ɼ೗Կਚշత㠳应༻户తަޓߦ为ੋ࿽धཁࢥߟత问题ɻሏൺ单纯త௥ٻҰࠣ
  7. 1. bodyཬత资ݯจ݅ཁ౳౸ሏલ໘తJS执ߦ׬࠽䇖࢝Լ载 2. bodyཁ౳౸headཬతCSS࿨JSԼ载ኂ执ߦ׬࠽䇖࢝䘦છ 3. 资ݯจ݅㑌Ҭ໊ኂߦԼ载਺ߴ௿୺浏览ثࠩ䇗େ 4. ۰౸֎联JSɼ䘦છձఀࢭ௚౸JSԼ载ኂ执ߦ׬ 5. ۰౸಺联JSɼ䘦છձఀࢭ௚౸执ߦ׬

    6. Ꮰ论֎҃಺联JSɼཁ౳౸ሏલ໘࠷ຫҰ࿽CSSԼ载׬࠽执ߦ 7. DOMContentReadyཁ౳࠷޳Ұ࿽JS执ߦ׬ ҰࠣӨ㠳页໘䘦છత结论 Sunday, March 25, 2012 这ੋҰࠣӨ㠳页໘䘦છత结论ɻߴ୺浏览ث㞆વ౎ࢧ࣋ߴኂߦԼ载਺࿨预Ճ载ɼୠੋ这䝅ኂߦձඃJSଧஅʢ结论1ʣɻ೚ԿҰ࿽JSɼ䬟ዑԼ载时 间୞༗0ms҃执ߦ时间୞༗0msɼ໵ཁ౳ணሏલ໘࠷ຫతಹ࿽CSSʢ结论6ʣɻ这኷૾ࡏߴ଎্䇖车ɼલ໘༗Ұ辆ຫ㚌㚌త车ɼඇৗӨ㠳௨ߦᏈ ཰ɻheadṉ࠹bodyత䘦છੋӨ㠳࠷େతʢ结论2ʣɼ૝૝Ֆྃେ钱⃧㖘෰务ث೺㠳应时间Ճշྃ႓ඦmsɼ结Ռhead过ॏɼຢ኷轻қత࿘费ྃ ႓ඦms኷ෆ䎞ࢉɻဓ这ࠣ结论্؃ࣅݷ౎࿨JS༗௚઀䎔ܥɼୠJS䇖࢝执ߦຢඞ须౳ሏલ໘తCSSɻҼࠑલ୺తจ݅组织टઌबੋཁཧਗ਼这ࠣ䎔
  8. <head> <link href=”base.css”> <link href=”movie.css”> <script> ᆳྛNT </script> </head> <body>

    <div>؃౸զྃ</div> <img src=”avatar.png”> </body> <head> <script> ᆳྛNT </script> <link href=”base.css”> <link href=”movie.css”> </head> ... <head> <link href=”base.css”> <link href=”movie.css”> </head> ... <script> ᆳྛNT </script> </body> 300ms 400ms + 100ms 300ms 300ms 400ms 300ms 400ms 1. 2. 3. Sunday, March 25, 2012 ࡏ্ड़结论తج础্ɼ۩ମ෼ੳҰԼɻ
  9. <head> <link rel="stylesheet" href="css1.css"> <link rel="stylesheet" href="css2.css"> </head> <body> <script

    type="text/javascript"> </script> <img src="img1.jpg" alt="" /> <script type="text/javascript"> </script> <img src="img2.jpg" alt="" /> <script type="text/javascript"> </script> <img src="img3.jpg" alt="" /> <script type="text/javascript"> </script> <img src="img4.jpg" alt="" /> </body> scriptഁᆀኂߦԼ载ɼӽᯪલӨ㠳ӽେ 4. Sunday, March 25, 2012 资ݯจ݅ཁ౳ሏલ໘తJS执ߦ׬ʢ㞆વ୞༗ۭ֨తۭ标签ɼҙຯண0执ߦ时间ʣɼJS还ੋཁ౳ሏલ໘త CSSԼ载׬ɻ这样ኂߦԼ载ඃଧഁྃɼ೗Ռἥᎎࡏ页໘தత಺联JS执ߦ时间኷୹త话ɼআྃ对页໘load 时间༗Ө㠳֎ɼ对dom readyӨ㠳ෆେ还ೳ઀डɻ
  10. ඃࠌ视త“蓝线” DOMContentLoaded (empty cache) DOMContentLoaded (primed cache) user.qzone.qq.com/id ~7s ~3s

    renren.com/id ~10.8s ~8s weibo.com/id ~7s ~3.6s taobao.com ~9.5s ~5.6s news.163.com ~10s ~6.3s yongche.com ~8s ~5s douban.com ~3s ~1s Sunday, March 25, 2012 ௨过测试Ұࠣओྲྀ᠓᜾ɼDOM-readyత时间౎ൺ较长ɼզ૝ଞ们ੋෆ׶轻қ೺JS์ࡏDOM-ready޳执ߦతɻ这样ҙຯணJS୞ ೳૢ࡞ሏલ໘తDOMɻୠඞᰈձ༗લ໘త໛块࿨޳໘ަޓతՄೳɼ౰વՄҎ೺ॴ༗JS౎์ࡏ页໘࠷޳ɻୠ这样ఏߴྃ୅码维护 త੒ຊɻमվҰ࿽໛块ɼಉ时ཁࡏ㠥֎Ұ࿽஍ํमվሏతJSɼ时间长ྃඇৗ༰қ଄੒৑༨ɻ޳໘ձఏ౸೗Կฏߧ这࿽问题ɻ
  11. ཧ૝తจ݅组织 1. ௥ٻ࠷轻తHEAD ʵ HEADཬෆ์೚ԿJSɼಉ时仅༗಺联CSSʢ຅༗ෆՄೳʣɼੋ࠷轻త ʵ HEADཬ์执ߦ时间ਚՄೳ୹త಺联JSɼಉ时JS์ࡏCSSલ໘ɼ઀ۙ࠷轻 2. ॴ༗页໘ॳ࢝Խ阶ஈඞ须తJS౎์ࡏจᑆ࠷޳ 3.

    ඇ页໘ॳ࢝Խ阶ஈతJSࡃऔ҈धՃ载 Sunday, March 25, 2012 Ҏલ讨论จ݅组织׬શੋဓੑೳាԽ֯౓ग़发తɻዎ㜮߇੍ެڞจ݅త৑༨ɼዎ㜮߇੍จཻ݅౓࿨请ٻ ਺ɼዎ㜮؅ཧґ赖䎔ܥɼ页໘໛块࿨ሏ专ଐతCSSҎٴJSత维护问题......这ࠣ还౎຅༗㐪ٴ౸ɼॴҎ现ࡏ ؃དྷෆ䭧ཧ૝ɻ
  12. ཧ૝తจ݅组织 1. ௥ٻ࠷轻తHEAD ʵ HEADཬෆ์೚ԿJSɼಉ时仅༗಺联CSSʢ຅༗ෆՄೳʣɼੋ࠷轻త ʵ HEADཬ์执ߦ时间ਚՄೳ୹త಺联JSɼಉ时JS์ࡏCSSલ໘ɼ઀ۙ࠷轻 2. ॴ༗页໘ॳ࢝Խ阶ஈඞ须తJS౎์ࡏจᑆ࠷޳ 3.

    ඇ页໘ॳ࢝Խ阶ஈඞ须తJSࡃऔ҈धՃ载 4. 对େ规໛᠓᜾తจ݅组织དྷ说ɼ௥ٻੑೳෆੋ࠷ॏཁ 5. લ޳୺ڞಉܗ੒Ұ౟੩态จ݅组织؅ཧମܥ 6. จ݅组织ཁ၏౸“ࣗવ”ɼෆ额֎⃧Ճ环节ɼආ໔೺ࣄ৘“䐾杂Խ” 7. web应༻۠䫲对଴ Sunday, March 25, 2012 ੑೳఏঋ୞ੋจ݅组织达౸ᏈՌ೭Ұɼෆੋ།Ұ௥ٻత໨标ɻཁ实现Ұ࿽ཧ૝తจ݅组织ɼෆೳ仅ᯪલ ୺खஈɻจ݅组织ํࣜ应该ූ߹䇖发习惯ɼਚྔࣗ动Խʢෆ额֎⃧Ճ环节ʣɼ೗Ռ೺问题䐾杂Խबಘෆ 偿ࣦྃɻ㠥֎ɼେ规໛᠓᜾࿨web应༻తจ݅؅ཧ೭ಓੋෆಉతɻ
  13. Doత༝དྷ ݪ࢝ࣸ๏ <head> <script src="jQuery.js"></script> <link rel="stylesheet" href="common.css"> </head> <body>

    <%include file=”mod.html” /> <script src="another.js"></script> <script> $('#bn').click(function(e){ ... }); </script> </body> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> Sunday, March 25, 2012 ࢥߟ኷ଟ问题ଖ实౎应该ઌճ౸ݪ఺ɻ૝૝೗Ռ໛块༻౸తcss࿨js෼䇖์ɼ维护ىདྷੋଟ㜮ຑ烦ɻ Do1.0/2.0简单త说बੋ೺֎෦JSඇ્࠹తՃ载进དྷɼ໛块తHTML࿨ሏ专ଐతJSՄҎ์ࡏҰىɼ维护ى དྷํศଟྃɻDo3.0进Ұ㑊ఏঋੑೳɻ
  14. Doత༝དྷ ݪ࢝ࣸ๏ <head> <script src="jQuery.js"></script> <link rel="stylesheet" href="common.css"> </head> <body>

    <%include file=”mod.html” /> <script src="another.js"></script> <script> $('#bn').click(function(e){ ... }); </script> </body> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <script> Do(‘another.js’, function(){ $('#bn').click(function(e){ ... }); }); </script> <head> <script src="do.js" data-corelib="jQuery.js"></script> <link rel="stylesheet" href="common.css"> </head> <body> <%include file=”mod.html” /> </body> Do1.0/2.0 Sunday, March 25, 2012 ࢥߟ኷ଟ问题ଖ实౎应该ઌճ౸ݪ఺ɻ૝૝೗Ռ໛块༻౸తcss࿨js෼䇖์ɼ维护ىདྷੋଟ㜮ຑ烦ɻ Do1.0/2.0简单త说बੋ೺֎෦JSඇ્࠹తՃ载进དྷɼ໛块తHTML࿨ሏ专ଐతJSՄҎ์ࡏҰىɼ维护ى དྷํศଟྃɻDo3.0进Ұ㑊ఏঋੑೳɻ
  15. Doత༝དྷ ݪ࢝ࣸ๏ <head> <script src="jQuery.js"></script> <link rel="stylesheet" href="common.css"> </head> <body>

    <%include file=”mod.html” /> <script src="another.js"></script> <script> $('#bn').click(function(e){ ... }); </script> </body> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <script> Do(‘another.js’, function(){ $('#bn').click(function(e){ ... }); }); </script> <head> <script src="do.js" data-corelib="jQuery.js"></script> <link rel="stylesheet" href="common.css"> </head> <body> <%include file=”mod.html” /> </body> Do1.0/2.0 Do3.0 <head> <script> ${istatic(‘/js/lib/head.js’)|n} </script> <link rel="stylesheet" href="common.css"> </head> <body> <%include file=”mod.html” /> <script src="do.js" data-corelib="jQuery.js"></script> </body> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <script> Do(‘another.js’, function(){ $('#bn').click(function(e){ ... }); }); </script> Sunday, March 25, 2012 ࢥߟ኷ଟ问题ଖ实౎应该ઌճ౸ݪ఺ɻ૝૝೗Ռ໛块༻౸తcss࿨js෼䇖์ɼ维护ىདྷੋଟ㜮ຑ烦ɻ Do1.0/2.0简单త说बੋ೺֎෦JSඇ્࠹తՃ载进དྷɼ໛块తHTML࿨ሏ专ଐతJSՄҎ์ࡏҰىɼ维护ى དྷํศଟྃɻDo3.0进Ұ㑊ఏঋੑೳɻ
  16. લ୺੩态จ݅؅ཧث ʵ Do 3.0 ʵ ໨标1ɿBodyਚշ䘦છ ʵ ໨标2ɿDOM-readyਚշ৮发 (ঘࡏ实验阶ஈ) <head>

    <script>${istatic('/js/core/do/inline.js')|n}</script> <!-- 465bytes, ~5ms执ߦ时间 --> <link rel="stylesheet" href="core.css"> <link rel="stylesheet" href="product.css"> </head> <script src="do.js" data-corelib="jQuery.js"></script> </body> <body> ʢ׬શ݉༰Do1/2తࣸ๏ʣ Sunday, March 25, 2012 Do3త༻๏ɻ
  17. <head> </head> <body> </body> var Do = function() { Do.actions.push([].slice.call(arguments));

    }; Do.ready = function() { Do.actions.push([].slice.call(arguments)); }; Do.add = Do.define = function(name, opts) { Do.mods[name] = opts; }; Do.global = function() { Do.global.mods = Array.prototype.concat(Do.global.mods, [].slice.call(arguments)); }; Do.global.mods = []; // ఆ义શہ໛块 Do.mods = {}; // ఆ义໛块 Do.actions = []; // 处ཧ队ྻ ௒轻తDo઀ᅫఆ义ɿ <script> </script> <script src=”do.js”.. Sunday, March 25, 2012
  18. <head> </head> <body> </body> var Do = function() { Do.actions.push([].slice.call(arguments));

    }; Do.ready = function() { Do.actions.push([].slice.call(arguments)); }; Do.add = Do.define = function(name, opts) { Do.mods[name] = opts; }; Do.global = function() { Do.global.mods = Array.prototype.concat(Do.global.mods, [].slice.call(arguments)); }; Do.global.mods = []; // ఆ义શہ໛块 Do.mods = {}; // ఆ义໛块 Do.actions = []; // 处ཧ队ྻ ௒轻తDo઀ᅫఆ义ɿ <script> </script> <script src=”do.js”.. Do执ߦ队ྻ/Ճ载ث Sunday, March 25, 2012
  19. લ୺੩态จ݅؅ཧث ʵ Do 3.0 <script src="../do.min.js"></script> (4.4k, gzip:1.8k) Doຊ਎ੋҰ࿽纯ហతจ݅Ճ载ث Do('js/tip.js',

    function(){ $('#demo2 a').simpleTip(); }); Do({path: 'js/tip.js', requires:['tip-base.js']}, function(){ $('#demo2 a').simpleTip(); }); Do.define('lightBox-css', {path: '{URL}', type: 'css'}); Do.define('lightBox', {path: '{URL}', type: 'js', requires: ['lightBox-css']}); Do('lightBox', 'dialog', function(){ $('#demo3 a').lightBox(); }); Do(function(){ Do.getData('test-value', function(value){ console.log(value); //1000 }); }); Do('slow-js', function(){ Do.setData('test-value', 1000); }); Do.setConfig('timeoutCallback', function(url){ // log timeout file. }); 轻޼ 䈻׆ ໛块间௨ਝ ௒时/错误处ཧ Sunday, March 25, 2012
  20. લ୺จ݅组织త问题 ʵ ໛块Խ࿨请ٻ਺తႌಥ ʵ CSSత໛块Խ问题 ʵ ެڞจ݅৑༨问题 ʵ ෆ㭕߹进ߦ预编译 ʵ

    Doతํࣜձ᜗᜗ׯᢗኂߦԼ载 Sunday, March 25, 2012 લ୺खஈղႊෆྃత问题ɻ
  21. ޳୺੩态จ݅؅ཧܥ统 <head> <script> ${istatic(‘/js/lib/head.js’)|n} </script> <link rel="stylesheet" href="base.css"> </head> <body>

    <%inluce file=”mod.html” /> <script src="do.js" data-corelib="jQuery.js"></script> </body> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <script> Do(‘another.js’, function(){ $('#bn').click(function(e){ ... }); }); </script> Sunday, March 25, 2012 ղႊ໛块专ଐCSSత问题ɻ໛൘ܥ统对લ୺䇖发དྷ说ੋॴ༗CSS/HTML/JS୅码త载ମɻॴҎधཁॆ෼䮽 ۷ሏతೳྗɻ ੜ੒页໘޳ձࣗ动෼㩂໛块专ଐతJS࿨CSSɻ
  22. ޳୺੩态จ݅؅ཧܥ统 <head> <script> ${istatic(‘/js/lib/head.js’)|n} </script> <link rel="stylesheet" href="base.css"> </head> <body>

    <%inluce file=”mod.html” /> <script src="do.js" data-corelib="jQuery.js"></script> </body> <!-- ந㩂为mod.html --> <div class="mod"> <a id="bn">link</a> </div> <script> Do(‘another.js’, function(){ $('#bn').click(function(e){ ... }); }); </script> <head> <script> ${istatic(‘/js/lib/head.js’)|n} </script> <link rel="stylesheet" href="base.css"> </head> <body> <%inluce file=”mod.html” /> <script src="do.js" data-corelib="jQuery.js"></script> </body> 专ଐCSS 专ଐJS HTML <!-- ந㩂为mod.html --> <%block filter=”collect_css”%> .mod a { ... } </%block> <div class="mod"> <a id="bn">link</a> </div> <%block filter=”collect_js”> Do(‘another.js’, function(){ $('#bn').click(function(e){ ... }); }); </%block> Sunday, March 25, 2012 ղႊ໛块专ଐCSSత问题ɻ໛൘ܥ统对લ୺䇖发དྷ说ੋॴ༗CSS/HTML/JS୅码త载ମɻॴҎधཁॆ෼䮽 ۷ሏతೳྗɻ ੜ੒页໘޳ձࣗ动෼㩂໛块专ଐతJS࿨CSSɻ
  23. 细ཻ౓໛块త组߹࿨预处ཧ 组߹ 压缩 JS 组߹ SASS编译 压缩 CSS ந㩂 组߹

    HTML લ୺؃౸తจ݅എ޳ੋ...... Sunday, March 25, 2012 处ཧଯ栈
  24. 细ཻ౓໛块త组߹࿨预处ཧ 组߹ 压缩 JS 组߹ SASS编译 压缩 CSS ந㩂 组߹

    HTML લ୺؃౸తจ݅എ޳ੋ...... Sunday, March 25, 2012 处ཧଯ栈
  25. /* button样ࣜ */ .bn-flat { display: inline-block; *display: inline; zoom:

    1; vertical-align: middle; overflow: hidden; color: #444; border-width: 1px; border-style: solid; border-color: #bbb #bbb #999; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f8f8f8', endColorstr='#ddd', GradientType=0 ); background-image: -webkit-gradient(linear, left top, left bottom,from(#f8f8f8),to(#dddddd)); background-image: -webkit-linear-gradient(top, #f8f8f8, #dddddd); background-image: -moz-linear-gradient(top, #f8f8f8, #dddddd); background-image: -ms-linear-gradient(top, #f8f8f8, #dddddd); background-image: -o-linear-gradient(top, #f8f8f8, #dddddd); background-image: linear-gradient(center top, #f8f8f8 0%, #dddddd 100%); } CSSӽདྷӽ䐾杂 Sunday, March 25, 2012 让cssߋ૾编ఔ语ݴɻ೺䐾杂҃Մॏ༻త规则෧૷ىདྷɻ诸೗css3, ௨༻UI对৅ɼഉ൛ํ໘౳౳ܗ੒Ұ౟ ௨༻CSS库ɻ
  26. /* button样ࣜ */ .bn-flat { display: inline-block; *display: inline; zoom:

    1; vertical-align: middle; overflow: hidden; color: #444; border-width: 1px; border-style: solid; border-color: #bbb #bbb #999; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f8f8f8', endColorstr='#ddd', GradientType=0 ); background-image: -webkit-gradient(linear, left top, left bottom,from(#f8f8f8),to(#dddddd)); background-image: -webkit-linear-gradient(top, #f8f8f8, #dddddd); background-image: -moz-linear-gradient(top, #f8f8f8, #dddddd); background-image: -ms-linear-gradient(top, #f8f8f8, #dddddd); background-image: -o-linear-gradient(top, #f8f8f8, #dddddd); background-image: linear-gradient(center top, #f8f8f8 0%, #dddddd 100%); } CSSӽདྷӽ䐾杂 @import "_mixin_lib.css"; // button样ࣜ .bn-flat { @include inline_block; overflow:hidden; color:#444; border-width:1px; border-style:solid; border-color:#bbb #bbb #999; @include rounded(all, 3px); @include gradient(#f8f8f8, #ddd); } Sunday, March 25, 2012 让cssߋ૾编ఔ语ݴɻ೺䐾杂҃Մॏ༻త规则෧૷ىདྷɻ诸೗css3, ௨༻UI对৅ɼഉ൛ํ໘౳౳ܗ੒Ұ౟ ௨༻CSS库ɻ
  27. pySCSS https://github.com/Kronuz/pyScss • Compass: Compass 0.11 Support • Nested rules

    • Keyword arguments • Mixins: @mixin, @include • Functions: @function, @return • Inheritance: @extend • Conditions: @if, @else if, @else • Loops: @for, @each • Variables: $, @variables, @vars • Sprites: sprite-map(), sprite(), sprite-position(), sprite-url(), ... • Images: image-url(), image-width(), image-height(), ... • Embedded (inline) images: inline-image() • Colors handling: adjust-color(), scale-color(), opacify()/transparentize(), lighten()/darken(), mix(), ... • Math functions: sin(), cos(), tan(), round(), ceil(), floor(), pi(), ... • CSS Compression: @option compress:yes; Sunday, March 25, 2012
  28. 彻ఈղႊެڞจ݅త৑༨ ʵ 业务૬䎔తCSS / JS౎ඃ෼ࢄ౸໛块த ʵ ௨༻JS组݅҈धՃ载 ʵ ௨༻CSS: resetɺ෍ہɺجຊഉ൛样ࣜɺ௨༻UI对৅......(ෆ应该኷େ)

    ʵ ௨༻JS: 页໘Ճ载தґ赖తutils...... (ෆ应该኷େ) ʵ “಺༻֎؅” ʢ಺联୅码౰၏֎෦จ݅维护ɼಉ时ڗड֎෦จ݅త֤䝅预处ཧʣ Sunday, March 25, 2012 㑌࿽໛块૾Ұ࿽খ页໘ɼ业务૬䎔తCSS/JS౎ूதࡏ໛块಺෦؅ཧɻ௨༻จ݅୞อཹ࠷௨༻࠷֩৺త෦ ෼ɻ಺༻֎؅࠷େతា఺ੋՄҎ೚ҙ组߹这ࠣจ݅໛块ɻ
  29. 彻ఈղႊެڞจ݅త৑༨ ʵ 业务૬䎔తCSS / JS౎ඃ෼ࢄ౸໛块த ʵ ௨༻JS组݅҈धՃ载 ʵ ௨༻CSS: resetɺ෍ہɺجຊഉ൛样ࣜɺ௨༻UI对৅......(ෆ应该኷େ)

    ʵ ௨༻JS: 页໘Ճ载தґ赖తutils...... (ෆ应该኷େ) ʵ “಺༻֎؅” ʢ಺联୅码౰၏֎෦จ݅维护ɼಉ时ڗड֎෦จ݅త֤䝅预处ཧʣ <%def name="bottom_script()"> <script> ${istatic('/js/sns/tribe/manage_sites_groups.js', manage_type=manage_type)|n} </script> </%def> 䇖发环ڥ 线্环ڥ Sunday, March 25, 2012 㑌࿽໛块૾Ұ࿽খ页໘ɼ业务૬䎔తCSS/JS౎ूதࡏ໛块಺෦؅ཧɻ௨༻จ݅୞อཹ࠷௨༻࠷֩৺త෦ ෼ɻ಺༻֎؅࠷େతា఺ੋՄҎ೚ҙ组߹这ࠣจ݅໛块ɻ
  30. 21.3% 20.3% 4.2% 4.1% IE6 chrome14+ firefox8+ safari4+ 2012- Q1

    Sunday, March 25, 2012 ະདྷલ୺୅码త组织࿨؅ཧ໘临త௅战ӽདྷӽେɻ
  31. Everything Should Be Made as Simple as Possible, But Not

    Simpler. - Albert Einstein Sunday, March 25, 2012 ࠷޳զ૝෼ڗҰ࿽޻۩䇖发త৺ಘɼဓݪ࢝धٻग़发ɼ೺޻۩၏తਚՄೳ简单ɼ扩లੑ㖘ɼ删আॴ༗ෆ ඞཁత环节ɻ㠥֎ཁਚշ༻ىདྷɼෆඞ౳౸Ұ࿽㖘େ׬ඒత޻۩၏޷ྃ࠶༻ሏɻ