[前端] 現代化網站技術分享日重點整理含hackpad

課程分為
hackPad : https://hackpad.com/ZWVGk6BFDfn

  • 現代化網頁開發技術三要素
  • SASS & RWD 前端版型架構規劃
  • Modern FrontEnd Devops - 104兒童美術館 (cicisasa.com)自動部署上線分享
  • 前端網頁資料視覺化
  • 網頁設計效能優化
  • 現代網頁設計趨勢觀察

現代化網頁開發技術三要素

  • 可以用 http://caniuse.com/ 先查詢CSS是否有在哪個瀏覽器有支援
  • 盡量用最新版的jQuery
    • 因為現代瀏覽器支援比較多,如果用舊版本的jQuery,會造成很多原本瀏覽器可以幫我們做的,變成用jQuery硬幹

  • CSS盡量不要用vendor-prefix like : -webkit,moz-,o-,etc
    • 有些像border-radius大部份新版的瀏覽器已經支援,但網路上許多範例仍然是會有webkit-border-radius這種
  • 可以使用微軟的工具 來對網站做掃描與建議修正
  • 因為現在裝置大部份都是高解析度螢幕,都盡量改成用向量圖形,不要用圖片
    • fontawesome

  • 現在行動裝置比例越來越高,網站設計也要針對行動裝置
    • RWD
    • input type="email"

SASS & RWD 前端版型架構規劃























  • OOCSS Helper
  • 斷點隱藏
    • hidden-sm (Bootstrap)
    • mobile-none
  • BEM 狀態的變動
    • <div class="block--mobileShake">
    • 可以由classname就看出CSS的相依性
    • 別人寫的專案通常Utility.scss就很像OOCSS Helper

Modern FrontEnd Devops - 104兒童美術館 (cicisasa.com)自動部署上線分享

  • HotDeploy
    • 網站不需要關站
    • Zero downtime
    • 持續整合 (CI) 持續部署 (CD)
  • 用node.js開發->500 error是必需要處理的
  • Redis
    • key value db
    • fast
  • Grunt task manager
  • Gulp task manager
  • Browserfy Dependency manager
  • 何時要用到自動部署
    • 自己一個寫程式沒有影響也不需要
    • 多個人時,要用就要提早用

前端網頁資料視覺化

  • D3.js 可以直接render
    • SVG
    • KML..
  • Processing,js
  • p5.js
  • Pixi.js效能比較快

網頁設計效能優化

  • 減少request數
    • request本身就是http中成本最高的動作
  • 避免404
  • 視情況將多隻css merge成一個檔案
  • 根據Page Flow將css merge成一個
    • 例如同個購物流程中所有的CSS
  • CSS etag (根據css內容hash出檔名,來檢視說此隻CSS有無變動)
  • CSS Sprites
  • 使用icon font (向量檔)
  • Image lazyload
    • 用data-lazyload將img的src放在上面,等使用者viewport捲到時再來用ajax載入
  • 最小化cookie
  • 將圖片的domain切割成多個,就可以最大化最大連線數
    • static.fb1..
    • static.fb2..
  • 把沒有用到的DOM給瘦身掉
  • 用CSS時可以多利用pseudo DOM
  • 當有需要才動態產生DOM
  • SEO的部分可以改用JSON-LD
  • 避免網站載入時裸奔,先將CSS擺到最上面
  • CSS的規則是從右邊讀到左邊
    • 一般寫法 div > a > p
    • 實際讀法 p > a > div
  • 做特效時可以適當使用will-change把層級拉高,效能會比較好
  • CSS能處理的就別給JS處理 , 但僅限於簡單的特效或畫面呈現
  • JS在載入的時候是先下載完並解析
    • 所以可以改成跟臉書一樣用動態注入
    • (function(d, s, id){
           var js, fjs = d.getElementsByTagName(s)[0];
           if (d.getElementById(id)) {return;}
           js = d.createElement(s); js.id = id;
           js.src = "//connect.facebook.net/en_US/sdk.js";
           fjs.parentNode.insertBefore(js, fjs);
         }(document, 'script', 'facebook-jssdk'));
  • 適當使用cache,web sql storage,local storage
    • auto-complete
    • 動態取得li選項

現代網頁設計趨勢觀察

  • 視覺差
  • 講師是CSS可樂站長
  • 漸層扁平化
  • UX要問一般人這樣的流程順不順比較好
  • CSS3 flex排版

留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器