
1對1定制服務(wù),PC端+手機(jī)端+小程序多端應(yīng)用
前端規(guī)范化對網(wǎng)站制作的重要性
2021年02月14日瀏覽:
前端在日新月異的發(fā)展下,給開發(fā)人員帶來便捷與高效,也給開發(fā)人員帶來挑戰(zhàn)與思考;開發(fā)過程中一千個(gè)人之中有一千個(gè)哈姆雷特也出現(xiàn)了一千份截然不同的代碼,使得代碼的管理以及維護(hù)帶來困難,在此基礎(chǔ)下,不同的團(tuán)隊(duì)在自身的環(huán)境下具體問題具體分析后制定出自己的一套規(guī)范,由此,展開了規(guī)范化在于項(xiàng)目過程中的重要性討論。
項(xiàng)目開發(fā)過程中不是一蹴而就,而是由簡入繁的過程,這個(gè)過程受到不同因素影響,從未知的影響下轉(zhuǎn)化為已知的過程,往往帶來的結(jié)果就是對于項(xiàng)目的調(diào)整,這是一個(gè)不可避免的流程。在這個(gè)不可避免的流程下,提出自己的第一個(gè)觀點(diǎn),規(guī)范化對于項(xiàng)目的重要性之一則是利于對項(xiàng)目的維護(hù)。由此,可以提出另外一個(gè)開發(fā)疑問,什么樣的規(guī)范化利于項(xiàng)目的維護(hù);在我理解情況下,主要有一下幾點(diǎn)。
上面的兩段代碼在實(shí)現(xiàn)的過程中假設(shè)是A開發(fā)人員,在修改的過程中需要B來修改,在一個(gè)龐大的項(xiàng)目中B為了修改代碼需要讀懂A開發(fā)人員寫的代碼,在沒有注釋的情況,無疑會給B開發(fā)人員帶來難度,項(xiàng)目越復(fù)雜,需要理解的代碼就越多,在修改的過程中就會耗費(fèi)更多的時(shí)間。
為什么要開始模塊化開發(fā)?當(dāng)一個(gè)項(xiàng)目越來越復(fù)雜的時(shí)候,會出現(xiàn)比較多的問題,比如說全局變量污染問題,功能之間的可關(guān)聯(lián)性太小,不能很好的調(diào)用已完成的功能......
上面呈現(xiàn)代碼中,我們可以看到在eat和play兩個(gè)方法在模塊化和普通函數(shù)的調(diào)用的區(qū)別,通過person的類我們把子類封裝到自己的私有作用域中,減少了全局的方法,只留下一個(gè)接口來進(jìn)行調(diào)用。而普通的函數(shù)式直接暴露在window的作用域下,同時(shí)假設(shè)上面兩段代碼是A開發(fā)人員已經(jīng)寫好的,而B開發(fā)人員開始維護(hù),B開發(fā)人員這個(gè)時(shí)候也想實(shí)現(xiàn)一個(gè)eat和play的方法,這個(gè)時(shí)候所產(chǎn)生的問題就是,B人員所寫的方法名和A人員的方法沖突。或者在其他的情況下,B想修改A的方法,在關(guān)聯(lián)性不強(qiáng)的情況下,也使得B對于A的代碼產(chǎn)生難度,(注:這里所說的關(guān)聯(lián)性不是低耦合或者高耦合的概念),這里所指的面向?qū)ο蟮姆庋b概念。模塊化的實(shí)現(xiàn)不僅可以使得代碼的可讀性和復(fù)用性提高,還能大大的減少代碼沖突和無意義的報(bào)錯(cuò)。在這里所舉例的只是最為的簡單的一種封裝的模塊化,在整站的模塊化過程也可以調(diào)用框架,前端的模塊化框架request.js和服務(wù)器框架node.js。
規(guī)范化的重要性還遠(yuǎn)遠(yuǎn)不止于此,現(xiàn)在說說規(guī)范化另外一個(gè)重要功能SEO,SEO是搜索引擎的排名機(jī)制的基礎(chǔ)之上,對網(wǎng)站進(jìn)行內(nèi)部的調(diào)整及外部的調(diào)整優(yōu)化,好的SEO就像好的影視劇,能讓劇中之人露臉頻率與被人熟知的機(jī)會加大。那么為什么前端的規(guī)范化和SEO有關(guān)聯(lián)?SEO的工作過程中是一個(gè)網(wǎng)頁發(fā)現(xiàn)、收集網(wǎng)頁信息、之后針對收集的網(wǎng)頁信息建立索引庫,再由檢索器根據(jù)用戶輸入的關(guān)鍵詞返回結(jié)果。通過這個(gè)過程,我們拋出另外一個(gè)疑問,這個(gè)機(jī)制是如何搜集信息,而我們的規(guī)范化是如何讓我們的信息被搜索引擎機(jī)制所抓取。
所以url的設(shè)計(jì)過程中,一方面對于的功能的實(shí)現(xiàn),另外一方面也需要考慮到SEO 的優(yōu)化,具體的表現(xiàn)在于:
1.url盡量簡短,在簡短的url中使用規(guī)范的小寫英文關(guān)鍵詞。
2.減少域名的收錄,一個(gè)網(wǎng)站如果有幾個(gè)不同的域名,對于SEO來說,不能夠判斷 其中哪一個(gè)才是正確的,在網(wǎng)頁收錄的過程中爬蟲會收錄這幾個(gè)域名,在搜索過程 中顯示的網(wǎng)頁或許不是你想要的域名,同時(shí)一個(gè)規(guī)范性的域名為http://www.test.cn, 不規(guī)范的域名為http://test.cn,這些情況下會分散頁面權(quán)重,不利于搜素排名。雖 然在可以通過301重定向來轉(zhuǎn)向權(quán)重。但無疑來說,規(guī)范的url是對SEO無疑是較 好的。
當(dāng)搜索引擎抓取到了一個(gè)新的站點(diǎn),爬蟲將會對這個(gè)站點(diǎn)進(jìn)行收錄。為了使爬蟲的抓取更為高效,也需要開發(fā)人員在開發(fā)中不僅僅是實(shí)現(xiàn)功能,同時(shí)也需要考慮網(wǎng)頁的結(jié)構(gòu)上對SEO的考慮。
1.HTML5的語義化的標(biāo)簽出現(xiàn),對于SEO更加的友好,也促使我們需要合理的使用HTML5的標(biāo)簽進(jìn)行網(wǎng)頁結(jié)構(gòu)的布局
2.meta屬性content設(shè)置搜索引擎搜索到的關(guān)鍵字,content的內(nèi)容和title標(biāo)題設(shè)置的關(guān)鍵詞需要精簡。
3.頁面中不過多的設(shè)置h1標(biāo)簽,也不能不設(shè)置h1標(biāo)簽,h1變遷的重要性僅此與title的內(nèi)容,如果網(wǎng)頁中使用不到h1標(biāo)簽,可以設(shè)置h1的內(nèi)容為需要收錄的內(nèi)容,對h1的標(biāo)簽進(jìn)行z-index的隱藏,不建議使用display:none進(jìn)行隱藏,對于display:none的內(nèi)容,爬蟲會默認(rèn)跳過。同時(shí)對于重要的內(nèi)容渲染不使用js,js的內(nèi)容和iframer的內(nèi)容,爬蟲的收錄效果非常差或者說不收錄。
4.圖片需要設(shè)置alt屬性,網(wǎng)頁需要設(shè)置404頁面;之所以需要圖片設(shè)置alt屬性是因?yàn)榕老x不認(rèn)識圖片上的內(nèi)容,只能通過alt進(jìn)行抓取圖片的信息。網(wǎng)頁中設(shè)置404頁面,對于爬蟲來說,會不斷從當(dāng)前頁面上抽取新的URL放入隊(duì)列。如果抽取的過程中進(jìn)入404頁面,爬蟲會默認(rèn)回到之前的收錄的頁面。
規(guī)范化是每一個(gè)開發(fā)人員在不停的思考、經(jīng)驗(yàn)積累的過程總結(jié)出來的一套‘標(biāo)準(zhǔn)’。這套‘標(biāo)準(zhǔn)’也許沒有在開發(fā)過程中帶來驚喜,但是卻會在‘隱藏’的地帶帶來福利。以上所說的規(guī)范化,只是蜻蜓點(diǎn)水,還有著許許多多的優(yōu)勢沒有體現(xiàn)。(注:以上觀點(diǎn)僅為個(gè)人觀點(diǎn),如果觀點(diǎn)有誤。歡迎指正和補(bǔ)充)