為什麼不見HTML有競爭對手?HTML真的那麼完美嗎?

這裡的HTML是指HTML+CSS+JS


這就是遺留代碼的力量,你想甩也甩不掉。如果大銀行今天就能放棄Cobol的話並馬上找到替代品的話,IBM早就死了。

想想HTML都30年了都拿不出一個靠譜的所見即所得的IDE,宇宙第一VS他爹都做不出來,結果程序員為了適應它的糟糕把他玩成了彙編,用來做代碼生成的目標,可見其糟糕程度。

本來只要當年IE5的Html Component能夠被大家放下成見接受的話,這編輯器的千秋大業早就完成了,能跟Blend一樣好用。我自己也思考過無數種玩法,最終發現都是因為沒有Html Component[二哈]。想想20年過去了,政治氛圍一點沒變。


HTML本身槽點很多哦,特別是HTML5之前。
光不統一標準就很煩人了。
但是,目前看來大家都認為這是個最好的「標準」,各家瀏覽器也只是自行整出了一些細節的變動。
總結:NO BETTER CHOICE。


先定義html是什麼,這裡就設為html只表達UI層結構(不包括css)。html所表達的就是一棵樹,所以只要是可以表達樹的數據結構都可以替代html

比如clojure的hiccp

當然人家不只表達了結構還在裡面加入了具備語言能力的元素

(html5 [:tr [:td {:colspan "7"} "jhyghjghj"]]))
(for [col (:all_cols (session/get :setting_doc))]
(let
[
dest_station (keyword (session/get :dest_station))
;col_nm (:col_nm (nth col 1))
field_nm (nth col 0)
sp_col_nm (:col_nm (field_nm (dest_station sp_settings)))
wp_col_nm (:col_nm (field_nm (dest_station wp_settings)))
sp_editable (:editable (field_nm (dest_station sp_settings)))
wp_editable (:editable (field_nm (dest_station wp_settings)))

]
(do (html5 [:tr[:td "sfsdfgfds"]]
[:tr
[:th { :align "right" :class "input-small" } field_nm ]
[:td {:title sp_editable }[:input {:type "text" :class "input-large" :name (str "page_sp[" dest_station "][" field_nm "][col_nm]") :value sp_col_nm } ] ]
[:td [:input {:type "checkbox" :name (str "page_sp[" dest_station "][" field_nm "][col_nm]") :value field_nm}]]
[:td [:input {:type "checkbox" :name (str "page_sp[" dest_station "][" field_nm "][editable]") :value field_nm}]]
[:td {:title wp_editable }[:input {:type "text" :class "input-large" :name (str "page_wp[" dest_station "][" field_nm "][col_nm]") :value wp_col_nm} ] ]
[:td [:input {:type "checkbox" :name (str "page_wp[" dest_station "][" field_nm "][col_nm]") :value field_nm}]]
[:td [:input {:type "checkbox" :name (str "page_wp[" dest_station "][" field_nm "][editable]") :value field_nm}]]
]))

xml的方式表達樹並沒有什麼好的只是我們已經習慣了而已,既然是這樣 js依然可以做的很好

[".layout-component",
[".header","這裡是標題"]
isA?["p.msg","這裡是內容1"]
:isB?["p.msg","2222222"]
:["p.msg","33333"]]

同時還具備了js的全部能力,不需要構建工具去轉義一樣描述的很清晰。


這是因為現在大家上網用的瀏覽器,它是解析HTML的

如果重新定義一種類似HTML的語言,需要新的瀏覽器……否則就是紙上談兵

其實這就和鍵盤布局的道理差不多,qwerty鍵盤不是最完美的,但大家都熟悉了習慣了,就算有一個更完美的鍵盤布局,也不會再換了。


HTML+CSS+JavaScript絕對算不上完美,但是卻是適應力最強,達爾文說的是「適者生存」,不是「完美者生存」或者「強者生存」。

如果論強,恐龍算不算強,如果論完美,異形總被說成「完美」,最後不都是被滅,就是這個道理,適者生存。

HTML+CSS+JavaScript那一套適應力強在於:

第一,開放,沒有私密的玩意,微軟曾經想用Sliverlight取代,但是這種一個公司鼓吹的東西怎麼可能被廣為接受,失敗。

第二,簡單,純文本描述,今日門檻很低。

第三,群眾基礎好,進入最早,達到壟斷地位之後,歷史遺留代碼就甩不掉了。

第四,持續進化,沒有固步自封,雖然很多磕磕絆絆,但是一直在改進。

現在,業界的努力也多是改進HTML+CSS+JavaScript,而不是替換它們。


了解更多前端知識請關注@程墨Morgan


大概10年前,蘋果宣布打倒Flash之前,HTML最大的競爭對手就是Flash,當時有一定數量的網站都是基於Flash構建的,那時候Flash也幾乎霸佔了整個頁游市場

Flash的控制項庫 - Jingle Guo - 博客園


連HTML的制定者都有兩個陣營對看著。。。W3C和WHATWG


標準的重要性 強於技術本身的好壞。

html優勢在於好學啊,門檻多少低。
不然為啥現在前端那麼多?


有競爭對手呀,只不過干不過唄

比如當年的 Flash,現在都快死絕了

HTML 不完美,但是可以不斷改良。所以才有現代前端一堆工具鏈


因為它出生的早,最早的互聯網的標準就是基於HTML,全世界數以億計的網站都是基於HTML標準的,使用的人數最多。

如果你強硬替換掉HTML標準,全世界基於HTML標準數億系統都會癱瘓。

如果你又自己訂一套基於XML的完美標籤語言,但是沒有納入HTML標準,那麼用戶的瀏覽器渲染不出來,那有什麼用。

還有HTML標準都是分散在全球的不同組織來定製的,需要一致同意才能定為標準。

當年Flash的裝機量可是佔據了全球90%的PC平台,但是沒有被納為標準,還不是死了。


技術的核心不在於新,而是"解決問題",如果引入的新技術反而帶來一大堆其他問題,比如兼容遺留代碼,那麼沒人會用它。


我覺得,這玩意最糟糕的一點,就是:語法有錯也能運行,導致很多莫名其妙的東西出現還不懂什麼原因。


最大的優點在門檻低,像我這種編程菜雞都能迅速入門。此外,這一套框架有其合理性:文檔結構,樣式與功能分離。這已經不僅僅是一個框架了,更是一種比較重要的編程理念。

html和css的語義化使得代碼的可讀性更強,也更方便人們去設計和實現這個網站或者app的樣式和功能。此外,js因為其鬆散的語法和許多強大的內置函數,還是給開發者提供了不少便利(當然,麻煩也不少)。

不過值得吐槽的是,在實現這套理念的時候,這套語言的實現者思路可能不盡完美,html是標籤語言,css是描述性語言,他們都不是編程語言,都沒有考慮到使用這套語言的開發者將會面臨到的諸多不便,比如沒有循環使得html無法具有更好的可維護性,變數的缺失使得css不能更加靈活地處理樣式等。

儘管我們已經能看到現代css對變數問題提出的最新解決方案,但是糟糕的瀏覽器兼容性又使得開發者們不敢大膽去用。有的人可能認為我們用less或者sass等類css語言去compile不就好了嗎。誠然,這不失為一種可行的解決方案,但是對框架的引入只會使得你的工程顯得越來越重,而且前端框架更新換代這麼快,人們如果要保持工程的活力,則不得不耗費大量的精力去更新技術棧,這樣使得前端項目作為一個工程來說,其質量實際上是不高的。

但無論如何,我們已經看到無論是css還是html亦或是js,都還是在不斷地進步,其中js在node的推動下更是真正地壯大了起來,而js原生也在不斷地補之前的爛賬,比如糟糕的變數作用域和class的缺失,css也在變得更加方便,更加強大,比如grid system的引入,html也在朝著完全語義化的目標前進。前端生態圈的龐大更是提供給了這套框架源源不斷的活力。

最後一句就是題主如果想真正明白這套框架能活到現在的原因,還是推薦自己去試試,深入了解一下它的優良或粗糙的地方,前端這整個編程模式雖然在各種框架的炮轟下顯得臃腫不堪,但它畢竟還是有它的魅力的。


雖然很爛,但是它出生早啊。

HTML有各種模板引擎大家用著也不是那麼噁心,

js有了google這個乾爹,也迎來了它的春天。

前端越來越被重視的今天,工業界硬是把這兩個噁心的東西玩的越來越溜。


原答案寫於2014年3月, 括弧後是2017年的我的修訂.

---

HTML負責結構
CSS負責效果
這是客戶端程序GUI化後20年都沒做到的偉大改進. (這個不正確, 有XAML, 那時候不知道)
單憑這一點, 就沒有對手了.

我在使用PyQT和wxPython經歷過各種各樣的迷惘, 彷徨.. (現在也還是)
用包含邏輯的語言, 寫GUI, 真是耍流氓. (這個我還是很同意的)
最後怒了..直接使用Bottle框架, 開始寫本地程序
對著W3C School開始慢慢入門.
DIV+CSS的排版, 真是太舒服了. (兼容性一點都不舒服)
你寫個GUI, 不是在做藝術品.
要一個像素一個像素扣.
隨手在紙張上,畫個大概的分布
設置一下display, float. 分分鐘有個大概.
用div把內容框好, 自適應也非常舒服. (現在應該用flex)

我個人的體會是, 用HTML+CSS
出來的東西和你的完美預期一般有點差.
因為你不可能把所有元素設置成absolute.
但我可以說99%的情況, 那一點差異就會成為, 好像這樣也不錯耶. 或者 這樣做也沒什麼不好耶. (產品和美術可不這麼認為)

所以什麼WebOS就認準, HTML5+CSS3+JS的程序了
可惜還沒成功就給跪了.
我上面說的是HTML和CSS

JS的成功更多是因為歷史的選擇.
但這跟我前面說的分離也是有關係.
將邏輯與展示分開.

最後說下, PHP那樣的嵌入式語言, 肯定會慢慢改進的. (但在2014年嘴炮之後根本沒用過PHP)

---

2017年一句話總結, 剛接觸到的新技術總是完美的. 我居然也有稱讚前端技術的時候, 震驚了...


題主你這是唯恐天下不亂么?

全世界程序員,達成HTML這麼個基本共識,容易么?

大家一起討論討論怎麼改進不好嗎?非得搞出個東西來非此即彼?你電腦里的軟體還不嫌多麼?


HTML+CSS+JS不是最好的,但至今找不到替代者……只是谷歌,微軟,蘋果還在不斷制定著各種標準,根本沒有摒棄的意思!


https://zh.wikipedia.org/wiki/JavaScript

https://zh.wikipedia.org/wiki/JScript

不說HTML有沒有競爭對手。

二十世紀九十年代至二十世紀末這段時間,JavaScript誕生之後,微軟看到這貨的潛力,出於自身利益的考慮推出了JScript,光這玩意,整得當時的前端開發人員(當時還沒有前端開發這種叫法)痛苦不已,甚至有根據不同的瀏覽器載入不同規範JS文件的方式。

你現在跟我說要整一個HTML的競爭對手…………

嗯,我也不知道為什麼沒有……


那瀏覽器內核都得重寫吧~還得各大廠商重新談判,不然就得各玩各的!最後所有程序員特別是前端的都因過度加班而暴斃!


殺雞不用牛刀


推薦閱讀:

現在的頁游,一般用到什麼樣的技術,請系統的說明一下?

TAG:網頁設計 | 前端開發 | HTML | JavaScript | HTML5 |