eb前端開(kāi)發(fā)小白學(xué)習(xí)筆記
· 1 · 開(kāi)發(fā)網(wǎng)頁(yè)的三種技術(shù)
Html——-超文本標(biāo)記語(yǔ)言–>負(fù)責(zé)網(wǎng)頁(yè)的結(jié)構(gòu)
Css——–層疊樣式表–>站在美學(xué)的角度進(jìn)行美化
JavaScript——JavaScript一種直譯式腳本語(yǔ)言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語(yǔ)言,內(nèi)置支持類型。–>站在用戶體驗(yàn)的角度設(shè)計(jì)網(wǎng)頁(yè)的交互效果
· 2 · Html
2.1 什么是Html?
超文本標(biāo)記語(yǔ)言(HyperTextMarkup Lanuage,簡(jiǎn)稱:HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。
文本: 就是.txt文本。
超文本: 是一種可支持文本 、圖片、鏈接、音樂(lè)、程序的文本。
html當(dāng)中,不存在編程語(yǔ)言的語(yǔ)法,而是充斥著各式各樣的標(biāo)簽。
標(biāo)簽分為單標(biāo)簽和雙標(biāo)簽。例:
<meta>-->是單標(biāo)簽
<html></html>-->是雙標(biāo)簽。雙標(biāo)簽結(jié)尾總是以"/"開(kāi)始,表示這個(gè)標(biāo)簽的結(jié)尾。
html運(yùn)行環(huán)境:瀏覽器 。瀏覽器是用來(lái)打開(kāi)網(wǎng)頁(yè)的。
在瀏覽器中我們見(jiàn)到的所有的網(wǎng)頁(yè)本質(zhì)上都是一個(gè)文本,而這文本又稱之為 html。
2.2 開(kāi)發(fā)環(huán)境
只要你有一臺(tái)電腦,能夠正常運(yùn)行就可以了。
一般開(kāi)發(fā)少量的網(wǎng)頁(yè),用輕量級(jí)的文本編輯器就完全足夠了。例如:sublime text3 ,notepad++ 等。
下載鏈接:Sublime text3官網(wǎng)下載
Notepad++官網(wǎng)下載
如果是開(kāi)發(fā)比較大的項(xiàng)目,就用webstorm這個(gè)軟件就行了。
如果你安裝了Emmet插件,開(kāi)發(fā)的效率會(huì)提高很多。不會(huì)安裝插件的,自己去百度一下。
<一個(gè)前端程序猿的Sublime Text3的自我修養(yǎng)>
這是關(guān)于sublimet text3安裝一些前端開(kāi)發(fā)的插件的博客,里面有好多的對(duì)前端開(kāi)發(fā)有用的插件。如果你有需要,可以去看一看。
2.3 html5文檔結(jié)構(gòu)的說(shuō)明
html5文檔聲明頭 ,想要完整的使用html5語(yǔ)法,必須使用文檔聲明頭,聲明當(dāng)前文件是html5文件。
<html></html>
雙標(biāo)簽–定義html文檔內(nèi)容的結(jié)構(gòu) 所有的html文檔的內(nèi)容都需要寫在這對(duì)標(biāo)簽內(nèi)部。
<head></head>
頭部–通常情況下,里面寫的內(nèi)容是對(duì)于當(dāng)前網(wǎng)頁(yè)的一些預(yù)定義信息設(shè)置。
<body></body>
身體–網(wǎng)頁(yè)里面要顯示給用戶看的內(nèi)容,全部寫在body里面
2.4 網(wǎng)頁(yè)預(yù)定義信息
<meta charset="UTF-8">
<meta name="author" content="李白">
<meta name="keywords" content="key">
設(shè)定當(dāng)前網(wǎng)頁(yè)的編碼格式。
meta標(biāo)簽是一個(gè)單標(biāo)簽,通過(guò)charset 屬性,將其屬性值設(shè)置為需要
的編碼,即可為當(dāng)前的網(wǎng)頁(yè)設(shè)置編碼格式。
seo優(yōu)化–百度會(huì)對(duì)收錄的所有的網(wǎng)站有一個(gè)評(píng)分系統(tǒng)
評(píng)分越高,越靠前。
<title>網(wǎng)頁(yè)標(biāo)題</title>
通常情況下, tilte要放在meta字符集設(shè)置的下面,防止出現(xiàn)亂碼。
<link rel="stylesheet" href="style.css"> 引入外部的css文件
<style>
/*css代碼*/
</style>
<script src="01.js"></script>
<script>
// js代碼
</script>
引入外部的js腳本文件,需要注意的是,兩個(gè)script標(biāo)簽中間不能存在任何內(nèi)容換行都不可以。
2.5 常用的標(biāo)簽
<hr>換行分割線
<br>換行
<h1>-<h6>多級(jí)標(biāo)題
<!---->注釋
html的標(biāo)簽還有很多,想要了解更多的自己去百度。
在html中,一些語(yǔ)義不是太明顯的標(biāo)簽我們可以用來(lái)做掛件。
文資料來(lái)源于
https://github.com/qiu-deqing/FE-interview
目前已在github獲得4700個(gè)star,在前端知識(shí)項(xiàng)目中名列第一。
本文主要分享該項(xiàng)目中的HTML, HTTP,web綜合問(wèn)題的知識(shí)點(diǎn)及面試題部分,后續(xù)分享剩余5個(gè)章節(jié)。
目錄
- 前端需要注意哪些SEO
- web開(kāi)發(fā)中會(huì)話跟蹤的方法有哪些
- <img>的title和alt有什么區(qū)別
- doctype是什么,舉例常見(jiàn)doctype及特點(diǎn)
- HTML全局屬性(global attribute)有哪些
- 什么是web語(yǔ)義化,有什么好處
- HTTP method
- 從瀏覽器地址欄輸入url到顯示頁(yè)面的步驟(以HTTP為例)
- HTTP request報(bào)文結(jié)構(gòu)是怎樣的
- HTTP response報(bào)文結(jié)構(gòu)是怎樣的
- 如何進(jìn)行網(wǎng)站性能優(yōu)化
- 什么是漸進(jìn)增強(qiáng)
- HTTP狀態(tài)碼及其含義
歡迎關(guān)注筆者,優(yōu)質(zhì)文章都在這里等你。
常見(jiàn)排序算法的時(shí)間復(fù)雜度,空間復(fù)雜度
前端需要注意哪些SEO
- 合理的title、description、keywords:搜索對(duì)著三項(xiàng)的權(quán)重逐個(gè)減小,title值強(qiáng)調(diào)重點(diǎn)即可,重要關(guān)鍵詞出現(xiàn)不要超過(guò)2次,而且要靠前,不同頁(yè)面title要有所不同;description把頁(yè)面內(nèi)容高度概括,長(zhǎng)度合適,不可過(guò)分堆砌關(guān)鍵詞,不同頁(yè)面description有所不同;keywords列舉出重要關(guān)鍵詞即可
- 語(yǔ)義化的HTML代碼,符合W3C規(guī)范:語(yǔ)義化代碼讓搜索引擎容易理解網(wǎng)頁(yè)
- 重要內(nèi)容HTML代碼放在最前:搜索引擎抓取HTML順序是從上到下,有的搜索引擎對(duì)抓取長(zhǎng)度有限制,保證重要內(nèi)容一定會(huì)被抓取
- 重要內(nèi)容不要用js輸出:爬蟲(chóng)不會(huì)執(zhí)行js獲取內(nèi)容
- 少用iframe:搜索引擎不會(huì)抓取iframe中的內(nèi)容
- 非裝飾性圖片必須加alt
- 提高網(wǎng)站速度:網(wǎng)站速度是搜索引擎排序的一個(gè)重要指標(biāo)
web開(kāi)發(fā)中會(huì)話跟蹤的方法有哪些
- cookie
- session
- url重寫
- 隱藏input
- ip地址
<img>的title和alt有什么區(qū)別
- title是global attributes之一,用于為元素提供附加的advisory information。通常當(dāng)鼠標(biāo)滑動(dòng)到元素上的時(shí)候顯示。
- alt是<img>的特有屬性,是圖片內(nèi)容的等價(jià)描述,用于圖片無(wú)法加載時(shí)顯示、讀屏器閱讀圖片。可提圖片高可訪問(wèn)性,除了純裝飾圖片外都必須設(shè)置有意義的值,搜索引擎會(huì)重點(diǎn)分析。
doctype是什么,舉例常見(jiàn)doctype及特點(diǎn)
- <!doctype>聲明必須處于HTML文檔的頭部,在<html>標(biāo)簽之前,HTML5中不區(qū)分大小寫
- <!doctype>聲明不是一個(gè)HTML標(biāo)簽,是一個(gè)用于告訴瀏覽器當(dāng)前HTMl版本的指令
- 現(xiàn)代瀏覽器的html布局引擎通過(guò)檢查doctype決定使用兼容模式還是標(biāo)準(zhǔn)模式對(duì)文檔進(jìn)行渲染,一些瀏覽器有一個(gè)接近標(biāo)準(zhǔn)模型。
- 在HTML4.01中<!doctype>聲明指向一個(gè)DTD,由于HTML4.01基于SGML,所以DTD指定了標(biāo)記規(guī)則以保證瀏覽器正確渲染內(nèi)容
- HTML5不基于SGML,所以不用指定DTD
HTML全局屬性(global attribute)有哪些
參考資料:MDN: html global attribute或者W3C HTML global-attributes
- accesskey:設(shè)置快捷鍵,提供快速訪問(wèn)元素如aaa在windows下的firefox中按alt + shift + a可激活元素
- class:為元素設(shè)置類標(biāo)識(shí),多個(gè)類名用空格分開(kāi),CSS和javascript可通過(guò)class屬性獲取元素
- contenteditable: 指定元素內(nèi)容是否可編輯
- contextmenu: 自定義鼠標(biāo)右鍵彈出菜單內(nèi)容
- data-*: 為元素增加自定義屬性
- dir: 設(shè)置元素文本方向
- draggable: 設(shè)置元素是否可拖拽
- dropzone: 設(shè)置元素拖放類型: copy, move, link
- hidden: 表示一個(gè)元素是否與文檔。樣式上會(huì)導(dǎo)致元素不顯示,但是不能用這個(gè)屬性實(shí)現(xiàn)樣式效果
- id: 元素id,文檔內(nèi)唯一
- lang: 元素內(nèi)容的的語(yǔ)言
- spellcheck: 是否啟動(dòng)拼寫和語(yǔ)法檢查
- style: 行內(nèi)css樣式
- tabindex: 設(shè)置元素可以獲得焦點(diǎn),通過(guò)tab可以導(dǎo)航
- title: 元素相關(guān)的建議信息
- translate: 元素和子孫節(jié)點(diǎn)內(nèi)容是否需要本地化
什么是web語(yǔ)義化,有什么好處
web語(yǔ)義化是指通過(guò)HTML標(biāo)記表示頁(yè)面包含的信息,包含了HTML標(biāo)簽的語(yǔ)義化和css命名的語(yǔ)義化。 HTML標(biāo)簽的語(yǔ)義化是指:通過(guò)使用包含語(yǔ)義的標(biāo)簽(如h1-h6)恰當(dāng)?shù)乇硎疚臋n結(jié)構(gòu) css命名的語(yǔ)義化是指:為html標(biāo)簽添加有意義的class,id補(bǔ)充未表達(dá)的語(yǔ)義,如Microformat通過(guò)添加符合規(guī)則的class描述信息 為什么需要語(yǔ)義化:
- 去掉樣式后頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu)
- 盲人使用讀屏器更好地閱讀
- 搜索引擎更好地理解頁(yè)面,有利于收錄
- 便團(tuán)隊(duì)項(xiàng)目的可持續(xù)運(yùn)作及維護(hù)
HTTP method
- 一臺(tái)服務(wù)器要與HTTP1.1兼容,只要為資源實(shí)現(xiàn)GET和HEAD方法即可
- GET是最常用的方法,通常用于請(qǐng)求服務(wù)器發(fā)送某個(gè)資源。
- HEAD與GET類似,但服務(wù)器在響應(yīng)中值返回首部,不返回實(shí)體的主體部分
- PUT讓服務(wù)器用請(qǐng)求的主體部分來(lái)創(chuàng)建一個(gè)由所請(qǐng)求的URL命名的新文檔,或者,如果那個(gè)URL已經(jīng)存在的話,就用干這個(gè)主體替代它
- POST起初是用來(lái)向服務(wù)器輸入數(shù)據(jù)的。實(shí)際上,通常會(huì)用它來(lái)支持HTML的表單。表單中填好的數(shù)據(jù)通常會(huì)被送給服務(wù)器,然后由服務(wù)器將其發(fā)送到要去的地方。
- TRACE會(huì)在目的服務(wù)器端發(fā)起一個(gè)環(huán)回診斷,最后一站的服務(wù)器會(huì)彈回一個(gè)TRACE響應(yīng)并在響應(yīng)主體中攜帶它收到的原始請(qǐng)求報(bào)文。TRACE方法主要用于診斷,用于驗(yàn)證請(qǐng)求是否如愿穿過(guò)了請(qǐng)求/響應(yīng)鏈。
- OPTIONS方法請(qǐng)求web服務(wù)器告知其支持的各種功能。可以查詢服務(wù)器支持哪些方法或者對(duì)某些特殊資源支持哪些方法。
- DELETE請(qǐng)求服務(wù)器刪除請(qǐng)求URL指定的資源
從瀏覽器地址欄輸入url到顯示頁(yè)面的步驟(以HTTP為例)
- 在瀏覽器地址欄輸入U(xiǎn)RL
- 瀏覽器查看緩存,如果請(qǐng)求資源在緩存中并且新鮮,跳轉(zhuǎn)到轉(zhuǎn)碼步驟
- 如果資源未緩存,發(fā)起新請(qǐng)求
- 如果已緩存,檢驗(yàn)是否足夠新鮮,足夠新鮮直接提供給客戶端,否則與服務(wù)器進(jìn)行驗(yàn)證。
- 檢驗(yàn)新鮮通常有兩個(gè)HTTP頭進(jìn)行控制Expires和Cache-Control:
- HTTP1.0提供Expires,值為一個(gè)絕對(duì)時(shí)間表示緩存新鮮日期
- HTTP1.1增加了Cache-Control: max-age=,值為以秒為單位的最大新鮮時(shí)間
- 瀏覽器解析URL獲取協(xié)議,主機(jī),端口,path
- 瀏覽器組裝一個(gè)HTTP(GET)請(qǐng)求報(bào)文
- 瀏覽器獲取主機(jī)ip地址,過(guò)程如下:
- 瀏覽器緩存
- 本機(jī)緩存
- hosts文件
- 路由器緩存
- ISP DNS緩存
- DNS遞歸查詢(可能存在負(fù)載均衡導(dǎo)致每次IP不一樣)
- 打開(kāi)一個(gè)socket與目標(biāo)IP地址,端口建立TCP鏈接,三次握手如下:
- 客戶端發(fā)送一個(gè)TCP的SYN=1,Seq=X的包到服務(wù)器端口
- 服務(wù)器發(fā)回SYN=1, ACK=X+1, Seq=Y的響應(yīng)包
- 客戶端發(fā)送ACK=Y+1, Seq=Z
- TCP鏈接建立后發(fā)送HTTP請(qǐng)求
- 服務(wù)器接受請(qǐng)求并解析,將請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)程序,如虛擬主機(jī)使用HTTP Host頭部判斷請(qǐng)求的服務(wù)程序
- 服務(wù)器檢查HTTP請(qǐng)求頭是否包含緩存驗(yàn)證信息如果驗(yàn)證緩存新鮮,返回304等對(duì)應(yīng)狀態(tài)碼
- 處理程序讀取完整請(qǐng)求并準(zhǔn)備HTTP響應(yīng),可能需要查詢數(shù)據(jù)庫(kù)等操作
- 服務(wù)器將響應(yīng)報(bào)文通過(guò)TCP連接發(fā)送回瀏覽器
- 瀏覽器接收HTTP響應(yīng),然后根據(jù)情況選擇關(guān)閉TCP連接或者保留重用,關(guān)閉TCP連接的四次握手如下:
- 主動(dòng)方發(fā)送Fin=1, Ack=Z, Seq= X報(bào)文
- 被動(dòng)方發(fā)送ACK=X+1, Seq=Z報(bào)文
- 被動(dòng)方發(fā)送Fin=1, ACK=X, Seq=Y報(bào)文
- 主動(dòng)方發(fā)送ACK=Y, Seq=X報(bào)文
- 瀏覽器檢查響應(yīng)狀態(tài)嗎:是否為1XX,3XX, 4XX, 5XX,這些情況處理與2XX不同
- 如果資源可緩存,進(jìn)行緩存
- 對(duì)響應(yīng)進(jìn)行解碼(例如gzip壓縮)
- 根據(jù)資源類型決定如何處理(假設(shè)資源為HTML文檔)
- 解析HTML文檔,構(gòu)件DOM樹(shù),下載資源,構(gòu)造CSSOM樹(shù),執(zhí)行js腳本,這些操作沒(méi)有嚴(yán)格的先后順序,以下分別解釋
- 構(gòu)建DOM樹(shù):
- Tokenizing:根據(jù)HTML規(guī)范將字符流解析為標(biāo)記
- Lexing:詞法分析將標(biāo)記轉(zhuǎn)換為對(duì)象并定義屬性和規(guī)則
- DOM construction:根據(jù)HTML標(biāo)記關(guān)系將對(duì)象組成DOM樹(shù)
- 解析過(guò)程中遇到圖片、樣式表、js文件,啟動(dòng)下載
- 構(gòu)建CSSOM樹(shù):
- Tokenizing:字符流轉(zhuǎn)換為標(biāo)記流
- Node:根據(jù)標(biāo)記創(chuàng)建節(jié)點(diǎn)
- CSSOM:節(jié)點(diǎn)創(chuàng)建CSSOM樹(shù)
- 根據(jù)DOM樹(shù)和CSSOM樹(shù)構(gòu)建渲染樹(shù):
- 從DOM樹(shù)的根節(jié)點(diǎn)遍歷所有可見(jiàn)節(jié)點(diǎn),不可見(jiàn)節(jié)點(diǎn)包括:1)script,meta這樣本身不可見(jiàn)的標(biāo)簽。2)被css隱藏的節(jié)點(diǎn),如display: none
- 對(duì)每一個(gè)可見(jiàn)節(jié)點(diǎn),找到恰當(dāng)?shù)腃SSOM規(guī)則并應(yīng)用
- 發(fā)布可視節(jié)點(diǎn)的內(nèi)容和計(jì)算樣式
- js解析如下:
- 瀏覽器創(chuàng)建Document對(duì)象并解析HTML,將解析到的元素和文本節(jié)點(diǎn)添加到文檔中,此時(shí)document.readystate為loading
- HTML解析器遇到?jīng)]有async和defer的script時(shí),將他們添加到文檔中,然后執(zhí)行行內(nèi)或外部腳本。這些腳本會(huì)同步執(zhí)行,并且在腳本下載和執(zhí)行時(shí)解析器會(huì)暫停。這樣就可以用document.write()把文本插入到輸入流中。同步腳本經(jīng)常簡(jiǎn)單定義函數(shù)和注冊(cè)事件處理程序,他們可以遍歷和操作script和他們之前的文檔內(nèi)容
- 當(dāng)解析器遇到設(shè)置了async屬性的script時(shí),開(kāi)始下載腳本并繼續(xù)解析文檔。腳本會(huì)在它下載完成后盡快執(zhí)行,但是解析器不會(huì)停下來(lái)等它下載。異步腳本禁止使用document.write(),它們可以訪問(wèn)自己script和之前的文檔元素
- 當(dāng)文檔完成解析,document.readState變成interactive
- 所有defer腳本會(huì)按照在文檔出現(xiàn)的順序執(zhí)行,延遲腳本能訪問(wèn)完整文檔樹(shù),禁止使用document.write()
- 瀏覽器在Document對(duì)象上觸發(fā)DOMContentLoaded事件
- 此時(shí)文檔完全解析完成,瀏覽器可能還在等待如圖片等內(nèi)容加載,等這些內(nèi)容完成載入并且所有異步腳本完成載入和執(zhí)行,document.readState變?yōu)閏omplete,window觸發(fā)load事件
- 顯示頁(yè)面(HTML解析過(guò)程中會(huì)逐步顯示頁(yè)面)
HTTP request報(bào)文結(jié)構(gòu)是怎樣的
rfc2616中進(jìn)行了定義:
- 首行是Request-Line包括:請(qǐng)求方法,請(qǐng)求URI,協(xié)議版本,CRLF
- 首行之后是若干行請(qǐng)求頭,包括general-header,request-header或者entity-header,每個(gè)一行以CRLF結(jié)束
- 請(qǐng)求頭和消息實(shí)體之間有一個(gè)CRLF分隔
- 根據(jù)實(shí)際請(qǐng)求需要可能包含一個(gè)消息實(shí)體 一個(gè)請(qǐng)求報(bào)文例子如下:
GET /Protocols/rfc2616/rfc2616-sec5.html HTTP/1.1
Host: www.w3.org
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Referer: https://www.google.com.hk/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: authorstyle=yes
If-None-Match: "2cc8-3e3073913b100"
If-Modified-Since: Wed, 01 Sep 2004 13:24:52 GMT
name=qiu&age=25
HTTP response報(bào)文結(jié)構(gòu)是怎樣的
rfc2616中進(jìn)行了定義:
- 首行是狀態(tài)行包括:HTTP版本,狀態(tài)碼,狀態(tài)描述,后面跟一個(gè)CRLF
- 首行之后是若干行響應(yīng)頭,包括:通用頭部,響應(yīng)頭部,實(shí)體頭部
- 響應(yīng)頭部和響應(yīng)實(shí)體之間用一個(gè)CRLF空行分隔
- 最后是一個(gè)可能的消息實(shí)體 響應(yīng)報(bào)文例子如下:
HTTP/1.1 200 OK
Date: Tue, 08 Jul 2014 05:28:43 GMT
Server: Apache/2
Last-Modified: Wed, 01 Sep 2004 13:24:52 GMT
ETag: "40d7-3e3073913b100"
Accept-Ranges: bytes
Content-Length: 16599
Cache-Control: max-age=21600
Expires: Tue, 08 Jul 2014 11:28:43 GMT
P3P: policyref="http://www.w3.org/2001/05/P3P/p3p.xml"
Content-Type: text/html; charset=iso-8859-1
{"name": "qiu", "age": 25}
如何進(jìn)行網(wǎng)站性能優(yōu)化
雅虎Best Practices for Speeding Up Your Web Site:
- 減少HTTP請(qǐng)求:合并文件、CSS精靈、inline Image
- 減少DNS查詢:DNS查詢完成之前瀏覽器不能從這個(gè)主機(jī)下載任何任何文件。方法:DNS緩存、將資源分布到恰當(dāng)數(shù)量的主機(jī)名,平衡并行下載和DNS查詢
- 避免重定向:多余的中間訪問(wèn)
- 使Ajax可緩存
- 非必須組件延遲加載
- 未來(lái)所需組件預(yù)加載
- 減少DOM元素?cái)?shù)量
- 將資源放到不同的域下:瀏覽器同時(shí)從一個(gè)域下載資源的數(shù)目有限,增加域可以提高并行下載量
- 減少iframe數(shù)量
- 不要404
- 使用CDN
- 添加Expires或者Cache-Control響應(yīng)頭
- 對(duì)組件使用Gzip壓縮
- 配置ETag
- Flush Buffer Early
- Ajax使用GET進(jìn)行請(qǐng)求
- 避免空src的img標(biāo)簽
- 減小cookie大小
- 引入資源的域名不要包含cookie
- 將樣式表放到頁(yè)面頂部
- 不使用CSS表達(dá)式
- 使用不使用@import
- 不使用IE的Filter
- 將腳本放到頁(yè)面底部
- 將javascript和css從外部引入
- 壓縮javascript和css
- 刪除不需要的腳本
- 減少DOM訪問(wèn)
- 合理設(shè)計(jì)事件監(jiān)聽(tīng)器
- 優(yōu)化圖片:根據(jù)實(shí)際顏色需要選擇色深、壓縮
- 優(yōu)化css精靈
- 不要在HTML中拉伸圖片
- 保證favicon.ico小并且可緩存
- 保證組件小于25k
- Pack Components into a Multipart Document
什么是漸進(jìn)增強(qiáng)
漸進(jìn)增強(qiáng)是指在web設(shè)計(jì)時(shí)強(qiáng)調(diào)可訪問(wèn)性、語(yǔ)義化HTML標(biāo)簽、外部樣式表和腳本。保證所有人都能訪問(wèn)頁(yè)面的基本內(nèi)容和功能同時(shí)為高級(jí)瀏覽器和高帶寬用戶提供更好的用戶體驗(yàn)。核心原則如下:
- 所有瀏覽器都必須能訪問(wèn)基本內(nèi)容
- 所有瀏覽器都必須能使用基本功能
- 所有內(nèi)容都包含在語(yǔ)義化標(biāo)簽中
- 通過(guò)外部CSS提供增強(qiáng)的布局
- 通過(guò)非侵入式、外部javascript提供增強(qiáng)功能
- end-user web browser preferences are respected
HTTP狀態(tài)碼及其含義
參考RFC 2616
- 1XX:信息狀態(tài)碼
- 100 Continue:客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求。這個(gè)臨時(shí)相應(yīng)是用來(lái)通知客戶端它的部分請(qǐng)求已經(jīng)被服務(wù)器接收,且仍未被拒絕。客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求的剩余部分,或者如果請(qǐng)求已經(jīng)完成,忽略這個(gè)響應(yīng)。服務(wù)器必須在請(qǐng)求萬(wàn)仇向客戶端發(fā)送一個(gè)最終響應(yīng)
- 101 Switching Protocols:服務(wù)器已經(jīng)理解力客戶端的請(qǐng)求,并將通過(guò)Upgrade消息頭通知客戶端采用不同的協(xié)議來(lái)完成這個(gè)請(qǐng)求。在發(fā)送完這個(gè)響應(yīng)最后的空行后,服務(wù)器將會(huì)切換到Upgrade消息頭中定義的那些協(xié)議。
- 2XX:成功狀態(tài)碼
- 200 OK:請(qǐng)求成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回
- 201 Created:
- 202 Accepted:
- 203 Non-Authoritative Information:
- 204 No Content:
- 205 Reset Content:
- 206 Partial Content:
- 3XX:重定向
- 300 Multiple Choices:
- 301 Moved Permanently:
- 302 Found:
- 303 See Other:
- 304 Not Modified:
- 305 Use Proxy:
- 306 (unused):
- 307 Temporary Redirect:
- 4XX:客戶端錯(cuò)誤
- 400 Bad Request:
- 401 Unauthorized:
- 402 Payment Required:
- 403 Forbidden:
- 404 Not Found:
- 405 Method Not Allowed:
- 406 Not Acceptable:
- 407 Proxy Authentication Required:
- 408 Request Timeout:
- 409 Conflict:
- 410 Gone:
- 411 Length Required:
- 412 Precondition Failed:
- 413 Request Entity Too Large:
- 414 Request-URI Too Long:
- 415 Unsupported Media Type:
- 416 Requested Range Not Satisfiable:
- 417 Expectation Failed:
- 5XX: 服務(wù)器錯(cuò)誤
- 500 Internal Server Error:
- 501 Not Implemented:
- 502 Bad Gateway:
- 503 Service Unavailable:
- 504 Gateway Timeout:
- 505 HTTP Version Not Supported:
您的轉(zhuǎn)發(fā)+關(guān)注就是對(duì)筆者最大的支持,歡迎關(guān)注。
對(duì)大廠架構(gòu)設(shè)計(jì),BAT等廠家面試題解讀,編程語(yǔ)言理論或者互聯(lián)網(wǎng)圈逸聞趣事這些感興趣,歡迎關(guān)注筆者,沒(méi)有錯(cuò),干貨文章都在這里。
企業(yè)網(wǎng)站提起HTML5大家都不陌生,作為一個(gè)新興的前端開(kāi)發(fā)語(yǔ)言,HTML5已經(jīng)被大量應(yīng)用到各個(gè)領(lǐng)域,通過(guò)HTML5技術(shù)制作完成的網(wǎng)頁(yè),可以是單純針對(duì)PC端,也已單獨(dú)適配移動(dòng)端,更能做成時(shí)下最流行的響應(yīng)式網(wǎng)站,也就是可以根據(jù)訪問(wèn)設(shè)備的不同,自動(dòng)適應(yīng)屏幕的寬度來(lái)改變頁(yè)面中的元素樣式,鄭州建站網(wǎng)通過(guò)頁(yè)面中的必要元素標(biāo)簽,為大家講解HTML5網(wǎng)站建設(shè)的解決方案。
第一點(diǎn):網(wǎng)站頭部設(shè)計(jì)
網(wǎng)站頭部標(biāo)簽的作用是在頁(yè)面的開(kāi)端加入一個(gè)用以介紹整個(gè)頁(yè)面內(nèi)容的信息容器,一般網(wǎng)頁(yè)的名稱、簡(jiǎn)介內(nèi)容、關(guān)鍵詞、版權(quán)信息等元素均會(huì)出現(xiàn)了網(wǎng)頁(yè)頭部,技術(shù)層面上,在網(wǎng)頁(yè)頭部還要表示出該頁(yè)面采用的制作語(yǔ)言,例如是HTML5還是較為陳舊的HTML4,目的是讓訪問(wèn)端的瀏覽器使用與之對(duì)應(yīng)的頁(yè)面渲染方式。
第二點(diǎn):網(wǎng)站導(dǎo)航欄的設(shè)計(jì)
網(wǎng)站的導(dǎo)航元素作用就是承載了對(duì)于訪客的瀏覽指導(dǎo)作用,導(dǎo)航中的內(nèi)容是直接循環(huán)于網(wǎng)站的一級(jí)欄目,當(dāng)然也有特例,在導(dǎo)航中出現(xiàn)的鏈接內(nèi)容只是整個(gè)頁(yè)面中所有鏈接的一小部分,但在設(shè)計(jì)角度上,導(dǎo)航中出現(xiàn)的內(nèi)容應(yīng)是整個(gè)網(wǎng)站中權(quán)重最高的。
第三點(diǎn):網(wǎng)站的文章內(nèi)容設(shè)計(jì)
網(wǎng)站的文章標(biāo)簽承載了整個(gè)網(wǎng)頁(yè)中最重要的內(nèi)容傳遞作用,頁(yè)面中的主要信息均會(huì)在此展示,當(dāng)然內(nèi)容不僅限于文章,也有可能是圖集、圖文或視頻等,對(duì)于該部分的元素,HTML5也增加可用標(biāo)簽,意指讓頁(yè)面內(nèi)容更加合理,其中就包括下面內(nèi)容中會(huì)提到的部件和側(cè)邊兩個(gè)元素標(biāo)簽。
第四點(diǎn):網(wǎng)頁(yè)中小部件的使用
與我們更加熟悉的div標(biāo)簽相比,部件標(biāo)簽(section)對(duì)于瀏覽器和搜索引擎來(lái)說(shuō)是具有指導(dǎo)意義的,一般情況下會(huì)用于文章內(nèi)容中的標(biāo)題、編號(hào)等內(nèi)容,最大的好處就是,讓整個(gè)頁(yè)面中的內(nèi)容排列的更加有序,邏輯清晰。
第五點(diǎn):網(wǎng)頁(yè)布局的側(cè)邊設(shè)計(jì)
側(cè)邊標(biāo)簽中的內(nèi)容并不是整個(gè)頁(yè)面中的主題,而是對(duì)主體內(nèi)容起到補(bǔ)充或解釋說(shuō)明的作用,在HTML5語(yǔ)言廣泛應(yīng)用之前,對(duì)于頁(yè)面中此類元素,不同的前端工程師在標(biāo)簽的使用上有著不同的習(xí)慣,基于HTML5開(kāi)發(fā)的樣式中,此類情況得到了合理的統(tǒng)一。
第六點(diǎn):網(wǎng)站底部設(shè)計(jì)
此元素的內(nèi)容是包含更多關(guān)于他的父元素的內(nèi)容。footer置于body之后將可以提供有關(guān)該頁(yè)面的其他的信息內(nèi)容。例如網(wǎng)站建設(shè)著的一些信息,相關(guān)文章的鏈接或者版權(quán)信息等等。此元素也可以被被應(yīng)用于body之中不同的段中,可以給頁(yè)面中不同段一些特定的其他信息。底部元素作用是將那些不適合在body中出現(xiàn)的內(nèi)容展示在頁(yè)面上,例如文章內(nèi)容的版權(quán)信息、頁(yè)面底部的內(nèi)容導(dǎo)航、網(wǎng)站的ICP備案信息以及友情鏈接信息等,在HTML5版本之上,也增加了在底部?jī)?nèi)容中專用的標(biāo)簽,供開(kāi)發(fā)者使用。