使用 HTML5 Boilerplate 開始您的 web 開發


web 開發團隊的一個常見實踐是創建一組標准文件,團隊成員基於它們開始 web 開發流程,包括一個公共文件結構、基本命名慣例和標准庫。這樣做能夠更容易啟動並運行一個項目。它還能將開發人員引向內部編碼標准並實施標准文件組織。 HTML5 Boilerplate 就是這種處於 web 開發最前沿的完美理念的實現。

結合了使用 HTML5 需要的幾個增強和許多其他最佳實踐,只需最少的前期投資,HTML5 Boilerplate 就能為您的項目提供一個堅如磐石的基礎。本文簡述了使用 HTML5 Boilerplate 來開始一個項目的方法,展示了一些能夠對其進行調優,使其適應一個已有框架和編碼風格的方法。

HTML5 組件

HTML5 Boilerplate 的核心是用於幫助開發 HTML5 站點和應用程序的組件,包括:

  • Modernizr,一個小型實用程序庫,支持在 Windows® Internet Explorer® 中設置新的 HTML5 元素樣式,並協助在所有瀏覽器中進行 HTML5/CSS3 特性檢測。如果您正在使用 HTML5 進行開發且需要支持 Internet Explorer 版本 9 之前的瀏覽器版本 ,那么這個庫(或者我稍后將解釋的一個替代選項)將是您的項目必不可少的一個組件。
  • 構建於 HTML5 Doctor Reset 之上的一個 CSS 起始文件,包含幾個智能默認值和增強。
  • 內置 HTML5 語法,以及一些新的語義元素,用於構成您文檔的骨架。

除了這些核心的 HTML5 相關特性,該項目還實現了幾個優秀的最佳實踐。下面列出了部分最佳實踐:

  • 在整個項目過程中非常關注前端性能,采用適當的結構(CSS 位於頂部,JavaScript 代碼位於底部),一個 Google Analytics 異步實現,以及項目的 Apache ANT 構建腳本中提供的幾個基於性能的增強。
  • 幾個跨瀏覽器助手,包括 HTML 元素上的特定於 Internet Explorer 版本的類和一個針對 Internet Explorer 版本 6 的自動 PNG 補丁。
  • 樣例 .htaccess 和 web.config 文件,幫助您設置您的服務器來利用 HTML5 特性和 web 字體並通過一個智能緩存策略加速您的站點。
  • 遠遠超出典型重置范圍的 CSS 增強。這個樣式表使用精心挑選和偶爾聰明的默認值重構元素。它還添加了幾個方便的助手類。常見的 .clearfix 類是您需要熟悉的類,.hidden.visuallyhidden 等類也包含在內且非常有用。骨架打印樣式(Skeleton print styles)、分頁媒體樣式和用於快速響應 web 設計的媒體查詢也被包含進來。

盡管看起來已經不少了,但上面的列表只是這個項目附帶的最佳實踐的一個樣本。即使對於持續關注這些事情的人來說,這也是一個令人印象深刻的集 合。事實上,這個集合是如此令人印象深刻,以至於該項目承認這樣一個事實:這個集合是 “刪除鍵友好的”。這句話的意思是:它是一個健壯的集合,並不是每個人都需要在每個項目中默認包含每個特性。

所有這一切都指向一個使用 HTML5 Boilerplate 的核心教訓:由於 HTML5 Boilerplate 意味着被用作一個基礎,因此在項目啟動時啟用這些文件不是可選項,而且是 必須執行的操作。認識到這一點之后,我們現在可以開始逐步演示一個 HTML5 Boilerplate 項目並使用那個刪除鍵來定制它了。

回頁首

使用 Boilerplate

當您閱讀下面的小節時,請記住,這個逐步演示的目的並不是規定您應該如何設置您的項目,而是演示您如何能夠和應該如何解決這個問題,以便這個基礎平台適應您的特定項目和開發風格。

獲取代碼

要獲得代碼,最簡單的方法就是從項目網站下載(見 參考資料)。鑒於本文的目的,我假定您已經下載代碼,獲得了 stripped 版本。

或者,如果您喜歡使用 git,則可以克隆這個項目,然后使用下面任一方法獲取一個干凈的項目副本來使用:

  • 如果您能夠訪問一個 UNIX® shell,那么可以導航到項目的構建目錄並運行其中的 createproject.sh 文件,這將在 HTML5 Boilerplate 根文件夾中生成一個干凈的目錄。
  • 如果您處於一台 Windows 機器上,或者在放置輸出文件方面想要更多靈活性,因而不能運行 shell 腳本,那么您可以檢查 stripped 的分支,然后下載一個存檔文件。通常,您使用 Smart Git 或 TortoiseGit 這樣的工具來執行這個操作,但也可以從命令行執行,如下所示:

    git checkout -b stripped origin/stripped git archive stripped --format=zip --output=/path/to/your/files.zip 

無論您采用哪種方法,都需要移動到您新創建的副本並進行定制。

回頁首

定制

通常,我進行的首次編輯取決於我計划使用高級 HTML5、CSS3 或其他新興技術的程度。如果您正在創建一個內容站點或博客,且只想使用新的語義標記對您的站點進行 “未來證明(future-proof)”,那么可以使用 html5shiv 這個小代碼段替換外部 Modernizr 腳本。html5shiv 代碼的用途是使 CSS 在 Internet Explorer 的較早版本中用於新的語義元素。Modernizr 比較快,但如果您不打算利用測試 Modernizr 發布,那么可以通過選擇簡化選項來為您的用戶節約幾毫秒時間。

我經常自動刪除的一個部分是位於底部的配置部分。如果不用它,最好立即刪除。根據您的當前項目的需求,您也可以刪除用於 Internet Explorer 6 的 PNGFix 解決方案。

在 HTML 文檔外部,您可以立即刪除項目根目錄中的一些文件和文件夾,原因是您不需要它們(test 文件夾、web.config、crossdomain.xml 和 nginx.conf),或者擁有自己的版本(robots.txt 和 .htaccess)。

一個額外的注意事項

如果您在一台運行 Windows 的機器上使用文件 protocol 開發模板並在 Internet Explorer 中測試它們,那么您肯定熟悉那些無窮無盡的安全對話框,只要您試圖運行任何內容 — 即使以遠程交互式方式運行 — 那些對話框就會彈出來。要消除這個現象,只需將 “Mark of the Web” 直接插入 doctype 聲明之后。這個簡單的代碼段將把 Internet Explorer 放入 Internet 區,並抑制令人討厭的安全對話框。

<!doctype html> <!-- saved from url=(0014)about:internet -->  

注意,這段代碼也被項目的構建腳本剝離出去,因此它不會進入生產環境。

文件夾結構

這不是一個典型定制,但它真的展示了這樣一個事實:HTML5 Boilerplate 是一個基礎 — 僅此而已。如果您不喜歡某個內容,盡管修改它。您才是那個推動項目前進的人。

每當我開始一個項目時,我都首先調整文件夾結構。現有結構沒有任何錯誤:我只是喜歡將所有靜態資產(腳本、flash 元素、圖像、樣式表)放置到一個名為 _assets 的頂級目錄中。這樣做將保持一個更整潔的根目錄,將那些經常被引用的元素推到文件窗口中的目錄樹的頂端。除此之外,我還在 CSS 文件夾中添加兩個子目錄,分別用於 Web 字體和 CSS 圖像。由於以前處理過許多將圖像用作內容的站點,我喜歡將內容圖像和界面圖像分離開來,這就需要新建兩個文件夾。

我還要簡化 js 文件夾的層級結構,方法是刪除 libs、mylibs 和 profiling 目錄,將它們的內容移動到一個扁平的 js 目錄中。完成后的結果如 圖 1 所示。


圖 1. 新文件夾結構
新文件夾結構圖示

此時,我只是確保 HTML 文檔中的路徑匹配新現實,我自己進行了一些調整。我還對構建腳本進行了一些調整,這將在下一節中介紹,但總的來說,我准備好開始我的新項目了。

回頁首

構建腳本

當您准備好打包您的站點時 — 要么作為一個靜態站點交付,要么作為一個將來用於與一個 CMS 或其他平台集成的構建工具,是時候訪問 /build 目錄了。就目前而言,HTML5 Boilerplate 擁有一個 ANT 構建腳本,該腳本包含幾個用於打包內容的有用任務。

注意:如果您想將其他構建系統集成到您的項目中並且您是一個 Rake、Apache Maven 或其他構建系統大師,那么您可以直接使用 github,分割項目,進行構建。

構建腳本的功能

使用 ANT — 一個基於 Java™ 的構建工具,這個構建腳本執行以下任務:

  • 使用 YUI 壓縮程序合並和縮小 JavaScript
  • 合並和縮小 CSS
  • 使用 jpegtranoptipng 優化 JPG 和 PNG 文件
  • 移除僅用於開發的代碼
  • 使用 htmlcompressor 配置 HTML 縮小
  • 修改文件名進行智能緩存(特別是緩存已更新的文件)

有 4 個任務您應該注意:

  • build 執行細小的 HTML 優化,縮小內聯腳本和樣式,連接和縮小外部 JavaScript 代碼和 CSS,處理圖像
  • buildkit 保留 HTML 空白以在今后的生產流程中保持可讀性,縮小內聯腳本和樣式,連接和縮小外部 JavaScript 代碼和 CSS,處理圖像
  • minify 執行完整的 HTML 縮小,縮小內聯腳本和樣式,連接和縮小外部 JavaScript 代碼和 CSS,處理圖像
  • text 執行完整的 HTML 縮小,JavaScript 代碼縮小,連接和 CSS 縮小,不執行圖像優化

如果您正在運行默認 boilerplate,那么只要您安裝了 Java 且您的路徑中有 ANT,上述任務就應該能夠完成。

如果您和我一樣,也對您的文件架結構進行了一些調整,那么您必須對構建腳本進行一些定制。您將在一個名為 build.properties 的文件中進行大部分更改,您可能必須調整構建腳本中的一到兩行。

build.properties 中的更改(如 清單 1 所示)都是基於目錄的。變量被更新為將構建腳本指向 JavaScript 代碼、CSS 和圖像的新位置。


清單 1. 示例 build.properties 文件
				 #build properties is where you override default configuration elements. #in my case I just need to set some new folder references. # Custom Build options --------------------------------- # Project structure ----------------------------- # Directory names dir.assets   = _assets dir.js  = ${dir.assets}/js # Main JS script folder (Will be concatenated and minified) dir.js.main  = ${dir.js} dir.css  = ${dir.assets}/css dir.images  = ${dir.build}/images dir.cssimages  =${dir.css}/images 

對於我的環境,我需要修改 build.xml 中的一行來引用我的第二個圖像目錄。清單 2 展示了這個簡單的更改。您將在這里看到操作系統級分支,因此下面的示例使用一個 Windows 環境。還有針對 Linux® 和 Mac OS X 的分支,那里也需要進行類似的更改。


清單 2. 編輯 build.xml
				 <target name="imagesjpg" depends="copy"> <echo message="Clean up those jpgs..."/> [snip...] <apply executable="tools/jpegtran.exe" osfamily="windows"> <fileset dir="./${dir.publish}/${dir.images}/" includes="*.jpg"/> <!-- Adding in my css/images directory --> <fileset dir="./${dir.publish}/${dir.cssimages}/" includes="*.jpg"/> [snip...] </target> 

進行這些更改之后,您就獲得了一個根據您的喜好進行調整的、功能齊全的項目,您已准備好構建優化代碼了。

回頁首

結束語

如您所見,進入 HTML5 Boilerplate 項目的門檻非常低,有充足的空間用於試驗。您可以將這個項目作為您的試驗項目,探索它帶來的好處,如果其中有任何缺失或您不需要的東西,盡管進行相應修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM