常見Web技術之間的關係,你瞭解多少?
如果你是一個Web開發初學者,那麼你難免會在網上搜尋HTML, CSS, XML, JS(Javascript), DOM, XSL等等這些詞的意思,然而,隨著學習的深入。當你把他們攪在一起,你又糊塗了,你會不停的問,HTML是什麼?CSS是什麼?XML是什麼?JS是什麼?它們到底有什麼用?無論是網路百科,還是一些IT專題網站,又或者一些牛人部落格,他們都會告訴你,某個單一的東西是什麼,這類文章很多,但很少有涉及,它們組合起來是什麼,有什麼用。我想,我寫這篇文章,就是為了說明一下這個他們很少涉及的問題。
歸納、總結、提煉能力是我們進步的發動機,這種能力是可以有意識地培養的,拉卡拉電子支付公司董事長兼總裁孫陶然提到:在拉卡拉我們要求用三條說清楚任何問題就是一種能力訓練,任何問題如果不能用三條說清楚說明你還沒想透。
在這裡,我爭取用最根本的語言向大家分別說明HTML, CSS, XML, JS到底是什麼,有什麼用。然後我們再來看把他們組合起來是什麼,有什麼用。當然如果你對HTML, CSS, XML, JS有足夠了解,可以直接跳過,看文章的後半部分,那裡才是本文核心所在。
第一部分
1. HTML超文字標記語言 (Hyper Text Markup Language) ,是用來描述網頁的一種標記語言。
<html> <head> <title>HTML</title> </head> <body> <p id="num1">Hello World! I'm HTML</p> </body> </html>
網頁檔案本身是一種文字檔案,通過在文字檔案中新增標記,可以告訴瀏覽器如何顯示其中的內容(如:文字如何處理,畫面如何安排,圖片如何顯示等)。
HTML之所以稱為超文字標記語言,是因為文字中包含了所謂“超連結”點。超文字(Hypertext)是用超連結的方法,將各種不同空間的文字資訊組織在一起的網狀文字。
概括,HTML就是整合網頁結構和內容顯示的一種語言。
Hello World! I'm HTML
瀏覽器按順序閱讀網頁檔案,然後根據標記符解釋和顯示其標記的內容。
這段內容在瀏覽器上顯示的結果是:Hello World! I'm HTML
我們看<p>標籤上有一個id,這是<p>這個標籤的唯一標識,方便別人找到它,對它進行操作。
2. CSS 層疊樣式表單(Cascading StyleSheet)。是將樣式資訊與網頁內容分離的一種標記性語言 。作為網站開發者,你能夠為每個HTML元素定義樣式,並將之應用於你希望的任意多的頁面中。如需進行全域性的更新,只需簡單地改變樣式,然後網站中的所有元素均會自動地更新。這樣,即設計人員能夠將更多的時間用在設計方面,而不是費力克服HTML的限制。說白了,CSS就是設定網頁上HTML元素屬性的語言。
CSS程式碼:
#hello{ color:blue; }
當把這段CSS程式碼應用於HTML中,它會找到id為“hello”的HTML標籤,將其中的內容以藍色顯示出來;具體的插入HTML的方法這裡不再贅述(說一句,只說明是什麼,有什麼用的問題,不關注技術細節,技術細節網上很好找)。
3. Javascript,首先說明JavaScript和Java無關,JavaScript 是屬於網路的指令碼語言!那麼為什麼名字如此相似?這是典型的市場營銷方面的成功,它的推廣成功,也是借了Java的東風。當微軟開始意識到Javascript在Web開發人員中流行起來時,微軟還是一貫風格,建立了自己的指令碼語言,JScript。
Javascript是一種基於物件(Object)和事件驅動(Event Driven)並具有安全效能的指令碼語言。使用它的目的是與HTML超文字標記語言、Java指令碼語言(Java小程式)一起實現在一個Web頁面中連結多個物件,與Web客戶互動作用。例如可以設定滑鼠懸停效果,在客戶端驗證表單,建立定製的HTML頁面,顯示警告框,設定cookie等等。
網頁中所有的對資料進行判斷、操作以及向瀏覽者反饋資訊的原生程式碼實現部分均是Javascript(當然也有其他的),這樣既可以使網頁更具互動性,給使用者提供更令人興奮的體驗,同時減輕了伺服器負擔。
JS的程式碼如下:
function jsHello() { alert('Hello World!'); }
當把以上程式碼應用於HTML程式碼,它會在你的HTML載入時,彈出一個內容為“Hello World!”的對話方塊。同樣,它是通過嵌入或調入在標準的HTML語言中實現的,至於如何嵌入或調入不再贅述,理由上面提到了。
4. Xml可擴充套件標記語言 (Extensible MarkupLanguage),是一套定義語義標記的規則,這些標記將文件分成許多部件並對這些部件加以標識。它也是元標記語言,即定義了用於定義其他與特定領域有關的、語義的、結構化的標記語言的句法語言。你可以把XML理解為一種資料庫,例如rss就是xml的一種變體。
XML程式碼如下:
<Hello> <bcd>China</bcd> <bcd>USA</bcd> <bcd>UK</bcd> </Hello>
XML的起因是,使用者受到SGML(後面再說)複雜性的挫傷和HTML的不充分。相對HTML來說,XML更追求嚴謹性,如果說你在HTML程式碼中標籤比較混亂,如未關閉等,或許瀏覽器會忽略這些錯誤;但同樣的事情發生在XML中會給你帶來大麻煩。
鋪墊終於完了,在進入正題之前,建議大家對比著圖來理解後邊的內容,廢話不多說,開始進入正題。
第二部分
這裡的DOM指的是HTML DOM。HTML DOM是W3C的標準,同時它也是HTML的文件物件模型的縮寫(the Document Object Model for HTML)。HTML DOM定義了用於HTML的一系列標準的物件,以及訪問和處理HTML文件的標準方法。通過DOM,可以訪問所有的HTML元素,連同它們所包含的文字和屬性。其中的內容可以修改和刪除,同時也可以建立新的元素。HTML DOM獨立於平臺和程式語言。它可被任何程式語言諸如Java、Javascript和VBScript所使用。HTML DOM就是HTML語言對外界開通的介面,以便其他語言能夠訪問或修改HTML內部的元素。
當js需要對html元素進行操作時,DOM是一個很必要的物件。
你便可以通過利用DOM物件構造如下程式碼並插入到HTML程式碼中的任何位置來實現。
<script> window.onload=function hello() { document.getElementById("hello").innerHTML="Hello China!"; } </script>
當用CSS去修飾HTML中的元素,這一過程可以稱為宣告HTML元素樣式的過程。
SGML標準通用標記語言(standardgeneralized markup language)。由於SGML的複雜,導致難以普及。SGML有非常強大的適應性,也正是因為同樣的原因,導致在小型的應用中難以普及。HTML 和 XML同樣衍生於SGML:XML可以被認為是SGML的一個子集,而HTML是SGML的一個應用。XML的產生就是為了簡化SGML,以便用於更加通用的目的。比如語義Web,它已經應用於大量的場合,比較著名的有XHTML、RSS 、XML-RPC 和SOAP 。
XHTML是可擴充套件超文字標識語言(TheExtensible HyperText MarkupLanguage)。HTML是一種基本的Web網頁設計語言,XHTML是一個基於XML的置標語言,看起來與HTML有些相象,只有一些小的但重要的區別,XHTML就是一個扮演著類似HTML的角色的XML,所以,本質上說,XHTML是一個過渡技術,結合了部分XML的強大功能及大多數HTML的簡單特性。
簡單的說,XHTML比HTML要嚴謹些,但又沒像XML那麼嚴重——譬如所有的XHTML標籤以及屬性必須要小寫,屬性性必須要加雙引號(當然如今的瀏覽器不管是IE還是FF,對HTML和XHTML採取相容措施,這也是XSS產生的根本原因),而且也可以像XML一樣自定義部分標籤,因此有了極大的靈活性。
而且進入了XHTML時代,大家倡導的是CSS+DIV,這也是web2.0的基礎。
DHTML只是一種製作網頁的概念,實際上沒有一個組織或機構推出過所謂的DHTML標準或技術規範之類的。DHTML不是一種技術、標準或規範,DHTML只是一種將目前已有的網頁技術、語言標準整和運用,製作出能在下載後仍然能實時變換頁面元素效果的網頁的設計概念。DHTML就是動態的html,Dynamic HTML。傳統的html頁面是靜態的,Dhtml就是在html頁面上加入了javascript指令碼,使其能根據使用者的動作作出一定的響應,如滑鼠移動到圖片上,圖片改變顏色,移動到導航欄,彈出一個動態選單等等。
一般如:<img src="pic" onmouseover="it is a picture !">
Expression是微軟為了使樣式表能夠在修飾HTML樣式的同時執行javascript指令碼而在IE瀏覽器中增加的一個功能,這樣你可以做譬如:圖片的自適應寬度,表格的隔行換色等等。
如:img{max-width:500px;width:expression(document.body.clientWidth> 200 ? "200px": "auto");}
XMLHTTP最通用的定義為:XmlHttp是一套可以在Javascript、VbScript、Jscript等指令碼語言中通過http協議傳送或從接收XML及其他資料的一套API。XmlHttp最大的用處是可以更新網頁的部分內容而不需要重新整理整個頁面。
來自MSDN的解釋:XmlHttp提供客戶端同http伺服器通訊的協議。客戶端可以通過XmlHttp物件向http伺服器傳送請求並使用微軟XML文件物件模型Microsoft® XML Document Object Model (DOM)處理迴應。
現在的絕對多數瀏覽器都增加了對XmlHttp的支援,IE中使用ActiveXObject方式建立XmlHttp物件,其他瀏覽器如:Firefox、Opera等通過window.XMLHttpRequest來建立XmlHttp物件。
一個簡單的定義IE的XmlHttp的物件及應用的例項如下:
var XmlHttp=new ActiveXObject("Microsoft.XMLhttp"); XmlHttp.Open("get","url",true); XmlHttp.send(null); XmlHttp.onreadystatechange=function ServerProcess(){ if (XmlHttp.readystate==4 || XmlHttp.readystate=='complete') { alert(XmlHttp.responseText); } }
XSLT(eXtensibleStylesheet LanguageTransformation)最早設計XSLT的用意是幫助XML文件(document)轉換為其它文件。但是隨著發展,XSLT已不僅僅用於將XML轉換為HTML或其它文字格式,更全面的定義應該是:XSLT是一種用來轉換XML文件結構的語言。
XSL-FO:XSL在轉換XML文件時分為明顯的兩個過程,第一轉換文件結構;其次將文件格式化輸出。這兩步可以分離開來並單獨處理,因此XSL在發展過程中逐漸分裂為XSLT(結構轉換)和XSL-FO(formattingobjects)(格式化輸出)兩種分支語言,其中XSL-FO的作用就類似CSS在HTML中的作用。
AJAX:非同步JavaScript和XML(AsynchronousJavaScript and XML)。
最後一個東東,它算得上是web2.0思想的心。AJAX=CSS+HTML+JS+XML+DOM+XSLT+XMLHTTP。是指一種建立互動式網頁應用的網頁開發技術。AJAX不是一種單一的新技術,而是有機地利用了一系列相關的技術。
在 2005年,Google 通過其 Google Suggest 使 AJAX 變得流行起來。
Google Suggest 使用 AJAX 創造出動態性極強的 web 介面:當您在谷歌的搜尋框輸入關鍵字時,Javascript會把這些字元傳送到伺服器,然後伺服器會返回一個搜尋建議的列表。
在AJAX中,XmlHttp用來在不改變頁面的情況下傳輸資料,其中傳輸的資料即是XML,然後通過XSLT將其格式化,利用js通過dom物件將其顯示到HTML中,同時利用CSS確定資料的顯示及位置。
這項技術在網路上的應用無處不在,如你的微博,你的郵箱,你的QQ空間,再如搜尋引擎,電子商務平臺,網路地圖等等。
總結
終於完了,本文主要探討了Web開發技術之間的關係,以及他們組合起來到底有什麼用的問題。這篇文章總結得挺不容易的,期間參考了不少別人的東西,包括:W3CSchool線上教程,《BeginningXML With DOM and Ajax》,《Javascript基礎教程》,《CSS 2.0中文手冊》,還有一些大牛的部落格,這裡就不一一羅列了。希望對掙扎在Web開發學習前線的朋友有所幫助。如果有什麼不夠準確的地方,請大家斧正。
相關文章
- java異常你瞭解多少Java
- 關於MongoDB複製,你瞭解多少(附副本集常見任務教程)MongoDB
- 關於Synchronized你瞭解多少?synchronized
- 深入瞭解Looper、Handler、Message之間關係OOP
- 關於繼承,你瞭解多少?繼承
- HTTP專業術語,你瞭解多少?HTTP
- 關於區塊鏈你瞭解多少區塊鏈
- 大資料技術與Hadoop之間的關係大資料Hadoop
- Python常用的web開發工具,你瞭解多少?PythonWeb
- 面試-關於Http協議你瞭解多少,有多少說多少面試HTTP協議
- 面試必問之 CopyOnWriteArrayList,你瞭解多少?面試
- 解密網路通訊的關鍵技術(上):DNS、ARP、DHCP和NAT,你瞭解多少?解密DNS
- 解密網路通訊的關鍵技術(下):DNS、ARP、DHCP和NAT,你瞭解多少?解密DNS
- 常見的Web安全攻防知識點總結,你知道多少?Web
- 能窺見未來的大資料+AI,你瞭解多少?大資料AI
- 【ERP體系】專業技術層面的評估,你瞭解多少?
- 關於Linux知識你瞭解多少呢?Linux
- 關於Mysql資料儲存,你瞭解多少?MySql
- .NET中的字串你瞭解多少?字串
- 你對position的瞭解有多少?
- 前端技術分享:錐形漸變conic-gradient你瞭解多少?前端
- 關於輪播圖的技術理解你知道多少
- 這些深度學習術語,你瞭解多少?(上)深度學習
- 這些深度學習術語,你瞭解多少?(下)深度學習
- Web3和元宇宙之間的關係Web元宇宙
- 「人臉識別」人工智慧應用最廣泛的技術,你瞭解多少?人工智慧
- FAILGROUP和REDUNDANCY之間的關係關係!AI
- 當紅“Serverless”,你瞭解多少?Server
- 關於Linux你瞭解多少?Linux由來!Linux
- 關於Linux你瞭解多少?Linux由來Linux
- 都知道RFID技術,可你瞭解RFID的關鍵技術是哪些嗎?
- 類之間的6種關係詳解
- 類之間的關係
- 關於Apache Flink的那些子專案,你瞭解多少?Apache
- 直流負載的案例,你瞭解多少?負載
- Linux常見面試題,你會多少?Linux面試題
- Jazz 你瞭解是什麼技術
- 常見的heimao技術及解決辦法