為什麼基於vue的框架都不使用原生HTML標籤?

如elementUI,bootstrap4,想定製不知道怎麼改了。有固定的class在刪

不掉


直接改寫class的內容覆蓋就好了。。不需要刪。

而且element和bootstrap都提供less/sass文件,可以統一改


全部都讓你定製化那他就不需要出這種現成的組件庫了


回答這個問題前需要說明的是html的語義化。html的出現最開始就是為了展示文本,html的各種標籤都是為此服務,p標籤表示一個段落、h1~h5表示各種標題。每一個元素標籤都具有網頁意義上的語義。語義即是給開發人員看的,也是給機器看的。瀏覽器基於各種標的語義就能明確的控制頁面的展示,所以也可以理解為,原生的標籤樣式就是html標籤的語義

解釋了語義化,再來說這個問題。首先機器不需要知道一個網頁有什麼業務意義,不需要知道哪裡是菜單,哪裡是圖標,這是人類的語義不是機器的語義,所以出現了各種ui框架使用獨特的標籤,而不使用原生標籤,框架賦予了menu具有菜單的語義,具有獨特的樣式和獨特的行為。

目前的主流前端框架vue、ng、react都是在自己定義一套標籤解析方案。瀏覽器也有自己的標籤解析方案,將html解析成DOM tree,而框架也在這個基礎上將自定義的標籤解析成html標籤。這種行為是目前的前端組件化開發界面的主流,包括原生的DOM Shdow也都是在做這個事情,未來很長一段時間前端開發都不會超出這個模式。

希望我的回答解決了你的疑惑


你自己在外麵包個div寫上自己的class就是了,為什麼老想著要刪別人的class,老要破壞別人寫的控制項定下的樣式規則。


1. html的標籤不能完全表現一些複雜功能

2. 自定義標籤比較靈活, 能夠解析成各種html標籤。

3. html本身不帶動態標籤及數據解析功能。

4. 當然,也有直接使用HTML標籤來做框架的, 這就需要把他們之間的轉換或者對應關係封裝起來維護。


不使用原生的html標籤,一個是為了有意義,一個是為了區別於原生的html標籤。

你引入組建是為了什麼?

為了快速實現一些功能。所以需要預設許多功能和樣式,但class名已知,樣式也是可以修改的。建議修改的時候不要全局修改。


不僅僅是vue,react和angular大部分是自定義的標籤和classname,現在都什麼年代了,為什麼還不知道自定義標籤怎麼改?


因為是人家自定義的標籤。

建議學習一下vue的自定義組件,這樣就能明白為什麼vue的組件不能更改了。

你不能給類名,本質上是自定義組件並沒有留給你類名的介面欄位。

如果你自己寫自定義組件的話可以考慮一下,是否留這樣的介面,以及為什麼


推薦閱讀:

[譯]為什麼說Suspense是一種巨大的突破?
2018 ngChina —— 「跨平台」版塊簡介
程序猿進階不能錯過的最全前端性能優化秘籍(一)!
[譯]React Hooks官方文檔翻譯之六——打造你自己的Hooks
Angular-3種創建動態內容的方式

TAG:HTML | 前端框架 | Vuejs |