欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 深度剖析HTML的語意和與其相關的前端框架

深度剖析HTML的語意和與其相關的前端框架

熱門標簽:巫山縣地圖標注app 騰訊植物園地圖標注 華為收費站地圖標注 電話機器人宣傳片 鄒城智能外呼系統 浦東新區(qū)百度地圖標注圖片 經綸電銷機器人 個貸電銷機器人 外呼智能系統報價

關于語義

語義研究的是標志與符號之間的關系,以及它們所代表的意義。在語言學中,它主要是研究這些標志(如單詞,短語,或者聲音)在語言中的意義。而在前端開發(fā)領域,語義主要涉及的是HTML元素、屬性和屬性值(包括像Microdata這樣的擴展)所約定的意義。這些在規(guī)范中常用的正式約定語義,可以幫助程序(以及后來參與開發(fā)的人)更好地理解一個網站各方面的信息。然而,即使這些元素、屬性和屬性值的語義是正式化的,它們依然得服從于開發(fā)者的適應程度以及共同選擇的結果。這使得正式的約定語義也可能會在今后被修改(而這正是HTML設計原則之一)。
區(qū)分不同類型的HTML語義

遵守編寫“語義化的HTML”這個原則,是現代專業(yè)前端開發(fā)的基礎之一。絕大多數的語義都與當前或預期的內容性質有關(如:h1元素,lang屬性,type屬性的email值,Microdata)。

然而,并非所有的語義都需要以內容為導向。類名不能“無語義”。不管是用什么名字命名,它們都必須要有意義與目的。類名的語義可以和那些HTML元素不同。我們可以借助HTML元素、某些HTML屬性、Microdata等所具有的“全局性”語義,然后利用網站或應用的“局部性”特定語義加以區(qū)分,這些特定語義通常包含在屬性值中,比如class屬性。

盡管在HTML5規(guī)范的class屬性這一章節(jié)中重申了這個假定的“最佳實踐”…

    …鼓勵開發(fā)者使用class屬性值描述實際內容,而不是描述期望展現的內容。

…并沒有什么內在的原因非這樣做不可。事實上,當這種方法在大型網站或者應用中運用時,它往往會成為一種障礙。

    HTML元素和其它屬性已經提供了內容層的語義
    對于機器或訪問者來說,類名所能透露的有用的語義信息非常少,甚至沒有。除非它是已經約定的那一小部分名稱(機器同樣可讀) —— Mircoformats
    類名的主要用途是成為CSS和JavaScript的鉤子。如果你不需要為你的頁面添加表現和行為,那么你或許不必在你的HTML里添加類名
    類名應該為開發(fā)者傳達有用的信息。當你閱讀一個DOM片段時,它將有助于理解某個類名的具體作用。尤其是在多人協作的開發(fā)團隊里,與HTML組件打交道的可不光只有前端開發(fā)者。

舉一個非常簡單的例子:

XML/HTML Code復制內容到剪貼板
  1. <div class="news">  
  2.     <h2>News</h2>  
  3.     [news content]   
  4. </div>  

當內容還不明顯的時候,這個類名news不能告訴你任何事情。它沒有向你提供關于這個組件整體結構的信息,而且一旦內容不再是“新聞”時,使用這個類名就顯得非常不妥。類名的語義過分貼近內容,架構既不容易擴展,也不容易為其他開發(fā)人員所用。
與內容無關的類名

從某個設計模式的結構與功能中提取類名的語義是一種更好的方法。那些類名與內容無關的組件可重用性更高。

我們不應該害怕讓各層之間的關系變得清晰而明確(這里應該是指結構層、內容層等,譯者注),而不是用類名嚴格地反應明確的內容。這樣做不會使類名“無語義”,這只是表明它們的語義并不取決于內容。我們也不應該害怕使用額外的HTML元素,只要它們能幫助你創(chuàng)建更強壯、更靈活且更具重用性的組件。這樣做不會使HTML變得“無語義”,這僅僅意味著你標記內容所使用的元素數量超過了最小值而已。
前端架構

組件、模板、面向對象的體系結構的目的是能夠開發(fā)出一種數量有限的可重復使用的組件,它可以在一定范圍內包含不同的內容類型。在大型的應用程序中,對類名語義來說最重要的事情是,能夠用實用主義服務于它們的主要目的 —— 提供有意義的、靈活的、可重復使用的表現或行為的鉤子供開發(fā)者使用。
可重用且可組合的組件

總的來說,可擴展的HTML/CSS必須依賴HTML中的class,以便創(chuàng)建可重用的組件。一個靈活的、可重用的組件,既不依賴DOM樹中的某一部分,也不需要使用特定類型的元素。它應該能適應不同的容器,并且可以很容易地更換主題。如果有必要,額外的HTML元素(超出標記內容所必須的元素之外的元素)可以讓組件更加強壯。Nicole Sullivan所說的media object就是一個很好的例子。

避免用類型選擇器支持class,可以讓組件更容易合并。下面這個例子中,btn組件與uilist組件不易于合并。問題在于.btn的權重比.uilist a要小(這將覆蓋任何共享屬性)。而且ulist組件需要錨點作為子節(jié)點。

XML/HTML Code復制內容到剪貼板
  1. .btn { /* styles */ }   
  2. .uilist { /* styles */ }   
  3. .uilist a { /* styles */ }   
  4.   
  5. <nav class="uilist">  
  6.     <a href="#">Home</a>  
  7.     <a href="#">About</a>  
  8.     <a class="btn" href="#">Login</a>  
  9. </nav>  

一種讓uilist組件與其它組件輕松組合的方法是,uilist的子級DOM元素用class來添加樣式。盡管這會降低權重,但是它的主要好處在于,它為你提供了處理子節(jié)點的任何結構樣式的選擇權。

XML/HTML Code復制內容到剪貼板
  1. .btn { /* styles */ }   
  2. .uilist { /* styles */ }   
  3. .uilist-item { /* styles */ }   
  4.   
  5. <nav class="uilist">  
  6.     <a class="uilist-item" href="#">Home</a>  
  7.     <a class="uilist-item" href="#">About</a>  
  8.     <span class="uilist-item">  
  9.         <a class="btn" href="#">Login</a>  
  10.     </span>  
  11. </nav>  

JavaScript專用類

使用某種形式的JavaScript專用類,可以降低因組件樣式或結構的改變導致JavaScript失效的風險。我已經找到了一種非常有效的方法,那就是專為JavaScript的鉤子使用一種特定的類——js-*——不要在這個類名上添加任何描述。

XML/HTML Code復制內容到剪貼板
  1. <a href="/login" class="btn btn-primary js-login"></a>  

在你修改組件的結構或樣式的時候,可能會不經意間對那些必要的JavaScript行為和復雜的功能造成影響,用這種方法的話,可以降低這種可能性。
組件修改器

組件常常會有一些變體,它們與基本組件只有細微的差別。比如,不同的背景色或者邊框。主要有兩種創(chuàng)建這些組件變體的模式。我將它們稱為“單類名”模式和“多類名”模式。

單類名模式

XML/HTML Code復制內容到剪貼板
  1. .btn, .btn-primary { /* 按鈕模板樣式 */ }   
  2. .btn-primary { /* 主按鈕的特殊樣式 */ }   
  3.   
  4. <button class="btn">Default</button>  
  5. <button class="btn-primary">Login</button>  

多類名模式

XML/HTML Code復制內容到剪貼板
  1. .btn { /* 按鈕模板樣式 */ }   
  2. .btn-primary { /* 主按鈕的特殊樣式 */ }   
  3.   
  4. <button class="btn">Default</button>  
  5. <button class="btn btn-primary">Login</button>  

如果你使用預處理程序,你可以用Sass的@extend功能,以減少一些在使用“單類名”模式時所涉及的維護工作。然而,即使有預處理程序的幫忙,我依然傾向于使用“多類名”模式,并在HTML中修改類名。

我發(fā)現這是一種更具擴展性的模式。比如,要實現一個基本的btn組件,并增加5種類型的按鈕與3種額外的尺寸。用“多類名”模式的話只要9個class就可以搞定,用“單類名”模式則需要24個class。

如果需要的話,它也更容易讓上下文環(huán)境適應組件。你可能想對出現在其它組件中的任一btn做一些細節(jié)調整。

XML/HTML Code復制內容到剪貼板
  1. /* “多類名”樣式調整 */   
  2. .thing .btn { /* 相應的樣式調整 */ }   
  3.   
  4. /* “單類名”樣式調整 */   
  5. .thing .btn,   
  6. .thing .btn-primary,   
  7. .thing .btn-danger,   
  8. .thing .btn-etc { /* 相應的樣式調整 */ }  

“多類名”模式意味著,你只需要用一個單獨的組件內部選擇器,便可以改變所有類型的btn元素的樣式。“單類名”模式意味著,你必須顧及所有可能的按鈕類型,并在創(chuàng)造一個新的按鈕變體時調整這個選擇器。
結構化的類名

當創(chuàng)建一個組件時——并為之添加了“主題”——其中一些class被用來區(qū)分各個組件,一些class被當做組件的修改器,其它的class則被用來關聯DOM節(jié)點,它們一起被包含在一個較大的抽象組件中。

很難去判斷btn(組件)、btn-primary(修改器)、brn-group(組件)和btn-group-item(組件子對象)之間的關系,這是因為這些名字不能清晰地表現class的目的。沒有一致的模式。

在過去的一年中,我一直在嘗試命名模式,目的是能幫助我快速理解在一個DOM片段中節(jié)點的表象之間的關系,而不用為此來回切換HTML、CSS與JS文件拼湊網站的架構。這種模式主要受到BEM系統的命名方法的影響,但被改編成一種我認為更容易瀏覽的形式。


復制代碼
代碼如下:
t-template-name
t-template-name--modifier-name
t-template-name__sub-object
t-template-name__sub-object--modifier-name</p> <p>component-name
component-name--modifier-name
component-name__sub-object
component-name__sub-object--modifier-name</p> <p>is-state-type</p> <p>js-action-name
js-component-type

我將一些結構當做抽象的“模板”來處理,其它的則視為更清晰的組件(通常建立在“模板”上)。但是這種區(qū)分并非總是必要的。

這僅僅是我目前發(fā)現的一種有用的命名模式。命名模式可以采用任何形式。但這種命名模式的好處在于消除了模糊的類名,只依賴(單)連接符,或者下劃線,或者是駝峰格式。
原始文件大小和HTTP壓縮的注意事項

任何關于模塊化與可擴展的CSS的討論都會談及對文件大小與“膨脹”的擔心。Nicole Sullivan的言論中經常會提到文件大小的存儲(以及維護改進),并提到了像Facebook這樣的公司采用這種方法的經歷。進一步的,我想我會分享我在預處理輸出時的HTTP壓縮效果,以及大量使用HTML類的一些事情。

當Twitter Bootstrap剛剛問世的時候,我重寫了已編譯的CSS,以便更好地與手動操作的文件比較大小。在最小化所有的文件之后,手動操作的CSS文件比預處理程序輸出的小10%。但是當所有的文件都通過gzip壓縮后,預處理程序輸出的CSS文件比手動操作的小了5%。

這強調了比較HTTP壓縮后文件大小的重要性,因為減少的文件大小并不能說明全部問題。它暗示了有經驗的CSS開發(fā)者在用預處理程序時不必太過關注編譯后的CSS中一定程度的重復,因為它將在HTTP壓縮后變得更小。通過預處理程序處理更易于維護的CSS代碼所帶來的好處,要勝過關注原始CSS和壓縮后輸出的CSS的美觀或文件大小。

在另一個實驗中,我從線上扒了一個60KB的HTML文件(由很多可重用的組件組成),并刪除了它的每一個class屬性。這樣處理之后,文件大小減小到25KB。當原始文件與扒下來的文件都通過gzip壓縮后,它們的大小分別變?yōu)?.6KB和6KB——只相差1.6KB。自由使用class所導致的實際文件大小的結果已經不值得再去強調了。

標簽:廣西 南平 滁州 唐山 日喀則 楊凌 三沙 那曲

巨人網絡通訊聲明:本文標題《深度剖析HTML的語意和與其相關的前端框架》,本文關鍵詞  深度,剖析,HTML,的,語意,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深度剖析HTML的語意和與其相關的前端框架》相關的同類信息!
  • 本頁收集關于深度剖析HTML的語意和與其相關的前端框架的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久se精品一区精品二区| 欧美爱爱免费视频| 欧美久久久影院| 亚洲一区影音先锋| 日批视频免费看| 欧美日韩一区二区在线观看视频| 一区二区三区在线看| 91色|porny| 欧美丝袜丝交足nylons图片| 一区二区日韩电影| 中国xxxx性xxxx产国| 欧美肥胖老妇做爰| 日韩黄色免费电影| 受虐m奴xxx在线观看| 久久久久久久久免费| 久久99国产精品久久| 久久午夜精品视频| 国产精品视频线看| 97国产精品videossex| 欧美性色综合网| 午夜精品福利一区二区三区av| 国产乱淫av麻豆国产免费| 911精品国产一区二区在线| 日韩一区精品字幕| 免费污网站在线观看| 久久精品人人做| 国产精品香蕉一区二区三区| av成人免费网站| 一区二区三区免费看视频| 蜜臀视频在线观看| 精品国产免费久久| 高清视频一区二区| 欧美日韩亚洲丝袜制服| 日本视频在线一区| 亚洲色图27p| 亚洲人成伊人成综合网小说| av电影中文字幕| 精品国产91久久久久久久妲己| 国产精品资源网| 欧美综合久久久| 免费久久99精品国产| 三上悠亚在线观看视频| 一区二区三区欧美视频| 一区二区视频观看| 成人91在线观看| 久久精品人人爽人人爽| 成人的网站免费观看| 欧美色男人天堂| 美洲天堂一区二卡三卡四卡视频| 亚洲国产精品一区二区久久hs| 亚洲精品美国一| 一级性生活毛片| 国产精品成人一区二区三区夜夜夜| 秋霞午夜鲁丝一区二区| 精品噜噜噜噜久久久久久久久试看| 高潮精品一区videoshd| 欧美日本高清视频在线观看| 精品影院一区二区久久久| 色94色欧美sute亚洲13| 麻豆91精品视频| 91精品福利视频| 精品一区二区三区av| 日本韩国欧美在线| 老色鬼精品视频在线观看播放| 欧美人禽zoz0强交| 日本aⅴ精品一区二区三区 | 成人高清视频在线观看| 在线综合亚洲欧美在线视频| 国产精品小仙女| 欧美一二三四在线| 99视频热这里只有精品免费| 精品国产精品网麻豆系列| 91污片在线观看| 久久九九久久九九| 蜜臀av粉嫩av懂色av| 国产精品人人做人人爽人人添| 中文字幕天堂网| 最新欧美精品一区二区三区| 精品欧美一区二区久久久| 一区二区三区在线视频观看| 开心激情五月网| 蜜桃精品在线观看| 欧美日韩专区在线| 成人午夜激情影院| 久久精品夜色噜噜亚洲a∨| 亚洲av人人澡人人爽人人夜夜| 中文字幕欧美一区| 91精品国自产在线| 男女男精品视频网| 欧美日韩国产片| 99久久久久免费精品国产 | 精品欧美一区二区三区精品久久 | 免费在线观看一级片| 激情文学综合插| 欧美乱妇一区二区三区不卡视频| 成人97人人超碰人人99| 国产欧美日韩麻豆91| 色欲av无码一区二区三区| 香港成人在线视频| 欧美亚洲综合另类| 波多野洁衣一区| 国产精品理伦片| 999福利视频| 精品一区二区三区不卡| 欧美大胆一级视频| 9.1成人看片| 日韩av在线播放中文字幕| 欧美日韩一级视频| av影片在线播放| 一区二区三区四区蜜桃| 色婷婷综合五月| 99久久久久久| 亚洲人成在线播放网站岛国| 欧美亚洲日本在线| 成人激情免费视频| 国产精品白丝在线| 永久久久久久久| 国产91精品露脸国语对白| 日本一区二区三区久久久久久久久不| 老熟妇一区二区| 国产综合成人久久大片91| 久久久久9999亚洲精品| 能直接看的av| 国产大陆亚洲精品国产| 国产精品视频yy9299一区| 午夜激情福利电影| 风间由美一区二区av101| 国产精品三级av| 日韩在线中文字幕视频| 不卡视频在线看| 一区二区三区欧美在线观看| 欧美日韩激情一区二区三区| 日本少妇一级片| 五月天亚洲精品| 日韩免费电影网站| 亚洲色图第四色| 国产成人福利片| 亚洲天天做日日做天天谢日日欢 | 国产精品18久久久久久久久| 欧美国产97人人爽人人喊| 中文字幕av播放| 91蜜桃免费观看视频| 亚洲二区在线视频| 日韩一区二区三区视频在线| 亚洲av无码一区二区三区人| 国产在线视频一区二区| 国产精品久久看| 欧美伊人久久久久久午夜久久久久| 色欲欲www成人网站| 亚洲国产成人av好男人在线观看| 欧美一区二区三区免费大片| 亚洲av无码一区二区三区人| 国产成人超碰人人澡人人澡| 亚洲欧美日韩在线| 欧美一区午夜精品| 欧美性猛交xxxx乱大交少妇| 不卡的电影网站| 婷婷成人激情在线网| 久久网站最新地址| 国产精品老熟女一区二区| 日本黄色大片在线观看| 蜜桃在线一区二区三区| 国产精品入口麻豆九色| 欧美日韩一区三区| 久久亚洲无码视频| 不卡高清视频专区| 日韩专区一卡二卡| 欧美极品另类videosde| 精品视频资源站| 国产人妻大战黑人20p| gogogo免费视频观看亚洲一| 视频一区二区中文字幕| 国产欧美日韩综合| 欧美人与禽zozo性伦| 国产农村妇女精品一区| 日本少妇一区二区三区| 另类小说综合欧美亚洲| 亚洲婷婷在线视频| 欧美成人r级一区二区三区| 五月婷婷一区二区| 三级黄色片网站| www.色综合.com| 免费精品视频在线| 亚洲另类春色国产| 欧美精品一区男女天堂| 欧美性色黄大片| 午夜国产福利视频| 日韩精品视频一区二区| 国产成人免费av在线| 日韩中文字幕区一区有砖一区| 国产精品理论在线观看| 欧美一卡二卡在线| 色婷婷激情久久| 蜜桃av乱码一区二区三区| 亚洲AV无码久久精品国产一区| 国内精品伊人久久久久av一坑| 亚洲午夜电影在线观看| 国产精品激情偷乱一区二区∴| 日韩免费电影一区| 欧美日韩国产综合一区二区|