自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTML模塊化:使用HTML5 Boilerplate模板

移動開發(fā)
HTML5 Boilerplate 是一個由 Paul Irish(Google Chrome 開發(fā)人員、jQuery 項目成員、Modernizr 作者、yayQuery 播客主持人)主導的“前端開發(fā)模版”。HTML5 Boilerplate 是一套具有非常多先進特性的框架,可以讓開發(fā)者快速制作出面向未來的網(wǎng)站。

開始一個Web項目,HTML的書寫總是重中之重,一個好的HTML能從根源上規(guī)避大量潛在問題,所以Web App應該全部應用一個標準化的高質(zhì)量HTML模板,而不是將所有頁面交由開發(fā)人員自由發(fā)揮。

這里推薦使用HTML5 Boilerplate項目作為App的默認模板以及文件路徑規(guī)范,無論是網(wǎng)站或者富UI的App,都可以采用這個模板作為起步。

可以使用

git clone git://github.com/h5bp/html5-boilerplate.git

或者直接下載HTML5 Boilerplate項目代碼。HTML5 Boilerplate的文件結(jié)構如下:

從上往下看:

  • css 用于存放css文件,并內(nèi)置了Normalize.css作為默認CSS重置手段(其實Normalize.css不能算是CSS reset)。
  • doc 存放項目文檔
  • img 存放項目圖片
  • js 存放javascript文件,其中第三方類庫推薦放在vendor
  • .htaccess 內(nèi)置了很多對于靜態(tài)文件在Apache下的優(yōu)化策略,如果Web服務器不是Apache則可以參考其他Web服務器配置優(yōu)化。
  • 404.html 默認的404頁面,
  • index.html 項目模板
  • humans.txt 相對于面向機器人的robots.txt,humans.txt更像是小幽默,這在里可以寫關于項目/團隊的介紹,或者放置一些彩蛋給那些喜歡對你的應用刨根問底的用戶們。
  • robots.txt 用于告訴搜索引擎蜘蛛爬行規(guī)則
  • crossdomain.xml 用于配置Flash的跨域策略
  • favicon.ico apple-touch-icon.png等小圖標。

如果是一個主要面向移動設備,則主要將jQuery換成了Zepto.js,以適應移動設備。

HTML5 Boilerplate的模板核心部分不過30行,但是每一行都可謂千錘百煉,可以用最小的消耗解決一些前端的頑固問題:

 

使用條件注釋區(qū)分IE瀏覽器

  1. <!DOCTYPE html> 
  2. <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
  3. <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 
  4. <!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]--> 
  5. <!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 

之所以要這樣寫:

  1. 可以使用class作為全局條件區(qū)分低版本的IE瀏覽器并進行調(diào)整,這顯然要優(yōu)于使用CSS Hack。
  2. 可以避免IE6條件注釋引起的高版本IE文件阻塞問題,原文的解決方法是在前面加一個空白的條件注釋,但是這里顯然將原本無用空白的條件注釋變得有意義了。
  3. 仍然可以通過HTML驗證。
  4. 與Modernizr等特征檢測類庫使用相同的class,更具備通用性。

no-js標簽是需要與Modernizr等類庫配合使用的,如果你不想在項目中引入Modernizr,需要在Head部分加入一行使no-js標簽變?yōu)?code>js,代碼來自Avoiding the FOUC

  1. <script>(function(H){HH.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script> 

通過上面的條件注釋,就可以在CSS中針對不同情況分別處理:

  1. .lt-ie7 {} /* IE6等版本時 */ 
  2. .no-js {} /* JavaScript沒有啟用時 */ 

meta標簽的書寫順序

為了讓瀏覽器識別正確的編碼,meta charset標簽應該先于title標簽出現(xiàn)。

meta X-UA-Compatible標簽可以指定IE8以上版本瀏覽器以***級模式渲染文檔,同時如果已經(jīng)安裝Google Chrome Frame則直接使用Chrome Frame渲染。而指定渲染模式的meta X-UA-Compatible標簽同樣需要優(yōu)先出現(xiàn)

  1. <meta charset="utf-8"> 
  2. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
  3. <title></title> 

設置移動設備顯示窗口寬度

  1. <meta name="viewport" content="width=device-width"> 

這是移動設備專屬的標簽,具體設置需要根據(jù)項目實際情況調(diào)整。

 

使用Modernizr做瀏覽器差異檢測

Modernizr常做前端的應該都不陌生。引入Modernizr后,html標簽的no-js將會被自動替換為js,同時Modernizr會向html標簽添加代表版本檢測結(jié)果的class。

對于低版本瀏覽器的向上兼容需要根據(jù)項目實際需求處理,Modernizr也非常周到的給出的絕大多數(shù)HTML5功能的兼容方法。

腳本

一個完整的Boilerplate里還包含一個build目錄,里面config目錄里有針對ant的配置文件,default.properties自然是默認屬性定義,用戶可以修改project.properties來定義自己的屬性;tools目錄下有各種編譯工具。

編譯時,libs下的文件不會再改變,但mylibs中文件以及另兩個都會一起壓縮到一個js文件中,style.css也會被壓縮,同時 images目錄下會針對jpg和png優(yōu)化。js中consloe.log函數(shù)將被去除,html文件也可以壓縮,默認使用htmlbuildkit, 還可以用htmlclean或htmlcompress來壓縮。

再看看default.properties里定義哪些選項

  • build.concat.scripts = true – 腳本文件將被壓縮為一個文件
  • build.delete.unoptimized = true – 未優(yōu)化的文件將被刪除
  • file.exclude = nonexistentfile – 發(fā)布時排除的文件后綴

后面是文件目錄的定義,以及編譯工具的定義。

結(jié)語

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

責任編輯:徐川 來源: avnpc.com
相關推薦

2011-03-23 09:33:51

HTML 5

2012-02-14 13:50:21

ibmdw

2013-10-21 15:24:49

html5游戲

2013-01-18 10:59:44

IBMdW

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2011-05-13 17:36:05

HTML

2011-05-12 15:42:16

HTML5

2017-01-03 18:09:33

HTML5本地存儲Web

2011-05-13 17:41:40

2011-01-14 17:53:33

HTML5cssweb

2023-03-16 09:00:00

HTML5HTML語言

2013-04-16 09:20:57

NetflixHTML5Silverlight

2013-03-22 08:59:57

HTML5移動應用Web App

2014-03-20 10:50:44

HTML5 定位技術

2013-09-05 09:55:06

HTML5響應式

2014-12-30 17:13:51

HTML5

2011-06-15 09:38:56

HTML 5

2012-12-03 13:53:38

IBMdW

2011-12-15 01:01:16

ibmdw

2012-02-24 15:28:36

ibmdw
點贊
收藏

51CTO技術棧公眾號