一、標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)
1.HTML
即超文本標(biāo)記語(yǔ)言(HyperText Markup Language),超文本指頁(yè)面內(nèi)可以包含圖片、音樂、鏈接甚至程序等非文字元素,如果只用HTML 則只能做靜態(tài)網(wǎng)頁(yè)。
靜態(tài)網(wǎng)頁(yè):指不含數(shù)據(jù)庫(kù)、不含程序和不可交互的網(wǎng)頁(yè),適用于更新較少的展示型網(wǎng)頁(yè),運(yùn)行于客戶端,通常以 .html 或 .htm 或 .xml 或 .shtml 為后綴。無需經(jīng)過服務(wù)器編譯便可直接加載到客戶瀏覽器上顯示出來,占用一定的服務(wù)器空間??稍陟o態(tài)網(wǎng)頁(yè)中加入 flash、 java 小程序、ActiveX 控件以及客戶端腳本,這些都由程序員事先編寫好放到服務(wù)器上。
動(dòng)態(tài)網(wǎng)頁(yè):動(dòng)態(tài)網(wǎng)頁(yè)在服務(wù)器端運(yùn)行,在不同時(shí)間會(huì)根據(jù)不同用戶返回不同的網(wǎng)頁(yè),與服務(wù)器發(fā)生交互行為。以數(shù)據(jù)庫(kù)為基礎(chǔ),可實(shí)現(xiàn)用戶的注冊(cè)、登錄、用戶管理等操作。動(dòng)態(tài)網(wǎng)頁(yè)并不是獨(dú)立存在于服務(wù)器上的網(wǎng)頁(yè)文件,只有在客戶端發(fā)出請(qǐng)求后才返回一個(gè)完整的網(wǎng)頁(yè)。后綴可以為.jsp或.php或.asp或.cgi。
ActiveX控件:在靜態(tài)頁(yè)面中加入可以運(yùn)行在瀏覽器上的程序,是靜態(tài)的,現(xiàn)在的瀏覽器基本以不支持。
applet:“l(fā)et”詞綴表示“小”,applet 表示用 Java 編寫的小應(yīng)用程序(JavaApplet),即靜態(tài)的,該程序可以包含在 HTML 頁(yè)面中,與在頁(yè)面中包含圖像的方式大致相同,即<applet></appltet>一對(duì)標(biāo)記。當(dāng)支持 Java 的瀏覽器遇到這對(duì)標(biāo)記時(shí),便下載相應(yīng)的小程序代碼在本地運(yùn)行,已經(jīng)淘汰,取而代之 JavaFX。
servlet:即 server applet,applet 擴(kuò)充了網(wǎng)絡(luò)瀏覽器的能力,而 servlet 擴(kuò)充了網(wǎng)絡(luò)服務(wù)器的能力。servlet 的功能在于交互地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài) web 內(nèi)容,其過程為:客戶端發(fā)送請(qǐng)求到服務(wù)器,服務(wù)器將請(qǐng)求信息發(fā)送到 servlet,servlet 生成相應(yīng)內(nèi)容被發(fā)送到服務(wù)器,服務(wù)器將響應(yīng)發(fā)送至客戶端。applet 與servlet 均沒有 main 函數(shù)。(比喻:JSP是服務(wù)員,servlet 是看完菜單告知哪個(gè)廚師來做飯的前臺(tái)。)JSP 顯示頁(yè)面和接收用戶的信息,而 servlet 主要負(fù)責(zé)頁(yè)面和業(yè)務(wù)層的信息交互。
CGI程序:是運(yùn)行在網(wǎng)絡(luò)服務(wù)器上的一個(gè)程序,作用與 servlet 相似。但已被 servlet 替代,因?yàn)?CGI 程序每當(dāng)客戶端發(fā)出一個(gè)新的請(qǐng)求,便要建立一個(gè)新的 CGI 實(shí)例,占用了大量的內(nèi)存資源,用于實(shí)際開發(fā)很困難。而 servlet 被用戶發(fā)送的第一個(gè)請(qǐng)求激活后,繼續(xù)運(yùn)行于后臺(tái)等待以后的請(qǐng)求,每個(gè)請(qǐng)求將生成一個(gè)新的線程而不是一個(gè)完整的進(jìn)程,多個(gè)客戶可以在同一個(gè)進(jìn)程中同時(shí)得到服務(wù)。
css:即層疊樣式表(cascading style sheets)是用于網(wǎng)頁(yè)排版的標(biāo)記性語(yǔ)言,能對(duì)網(wǎng)頁(yè)中的排版進(jìn)行像素級(jí)控制,主要用于對(duì)網(wǎng)頁(yè)中的字體、顏色、圖像、背景等其他元素進(jìn)行控制,是對(duì) HTML 的補(bǔ)充?!癏TML+CSS”可以實(shí)現(xiàn)靜態(tài)網(wǎng)頁(yè)。
div+css:div 是 HTML 中的一個(gè)標(biāo)簽元素,為布局元素。div 可以理解成一個(gè)矩形框,css 控制這個(gè)矩形框在什么地方。CSS3 是 CSS 的一個(gè)標(biāo)準(zhǔn),HTML5 是 HTML 的一個(gè)標(biāo)準(zhǔn)。
單頁(yè)面:整個(gè)頁(yè)面就是一個(gè)靜態(tài)的不刷新的 HTML 頁(yè)面,例如QQ空間中從日志到相冊(cè),整個(gè)頁(yè)面并沒有刷新,而是中間的主體內(nèi)容進(jìn)行局部替換。
圖靈機(jī):圖靈機(jī)可以理解成對(duì)人們使用紙筆進(jìn)行運(yùn)算的抽象,分為兩個(gè)步驟,在紙上寫或擦出某個(gè)符號(hào),下一步動(dòng)作取決于當(dāng)前所關(guān)注的符號(hào)和此時(shí)的思維邏輯。
圖靈完備:即 Turing Completeness,判斷圖靈完備的方法就是看該語(yǔ)言能否模擬出圖靈機(jī)。
2.XML
即可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language),和 html 相比,xml 允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義。
3.XHTML
即可擴(kuò)展超文本標(biāo)記語(yǔ)言,比 HTML 語(yǔ)法更嚴(yán)格
二、前端
1.腳本語(yǔ)言(scripting language)
腳本語(yǔ)言又被稱為擴(kuò)建的語(yǔ)言或者動(dòng)態(tài)語(yǔ)言,通常以文本保存,只有在被調(diào)用時(shí)才進(jìn)行解釋或編譯。
2.JavaScript(js)
是一種腳本語(yǔ)言, 動(dòng)態(tài)類型、弱類型、基于原型的語(yǔ)言,內(nèi)置支持類型。用于 嵌入 HTML 網(wǎng)頁(yè)增加動(dòng)態(tài)功能,向 HTML 頁(yè)面提供交互功能, 亦可寫成單獨(dú)的 js 文件便于結(jié)構(gòu)和行為的分離。最早由 Netscape 公司實(shí)現(xiàn),因與 Sun 公司合作,便取名 JavaScript。微軟推出了 JScript,都可以統(tǒng)稱兼容 ECMASript。后綴名為.js的文件就是 JavaScript 文件。可用于多平臺(tái)多操作系統(tǒng)。被大多數(shù)瀏覽器支持。
動(dòng)態(tài)類型:運(yùn)行期才做類型檢查靜態(tài)類型:編譯期進(jìn)行數(shù)據(jù)類型檢查弱類型:語(yǔ)言運(yùn)行時(shí)會(huì)隱式的做數(shù)據(jù)類型轉(zhuǎn)換強(qiáng)類型:語(yǔ)言運(yùn)行時(shí)確保不會(huì)做未授意的類型轉(zhuǎn)換基于原型的語(yǔ)言:如 JavaScript,只有對(duì)象沒有類,是對(duì)象繼承對(duì)象,而不是類繼承類?;陬愋偷恼Z(yǔ)言:如 Java
特性(動(dòng)態(tài)性):是一種采用事件驅(qū)動(dòng)的腳本語(yǔ)言,不需要服務(wù)器的支持,便可直接響應(yīng)用戶的輸入。在訪問一個(gè)頁(yè)面時(shí),用鼠標(biāo)上移下移點(diǎn)擊都可以通過 JavaScript 對(duì)其進(jìn)行響應(yīng)。因此早期程序員喜歡通過 JavaScript 減輕服務(wù)器的負(fù)擔(dān),然而不安全,隨著服務(wù)器的強(qiáng)壯,現(xiàn)在程序員喜歡使用在服務(wù)端的腳本來保證安全。有些特殊功能如 ajax 比如依賴 JavaScript 在客戶端進(jìn)行支持?,F(xiàn)在 JavaScript 逐漸被用來編寫服務(wù)器端程序。
3.VBSript(VBS)
basic 語(yǔ)言起初是非結(jié)構(gòu)化語(yǔ)言,后來經(jīng)過完善成為結(jié)構(gòu)化語(yǔ)言(Visual Basic,即VB),同時(shí)VB也是開發(fā)環(huán)境。
Microsoft Visual C++(簡(jiǎn)稱Visual C++、MSVC、VC++或VC)為微軟公司的 C++開發(fā)工具。
VBS是微軟環(huán)境下的輕量級(jí)的解釋性腳本語(yǔ)言。
4.Ajax
即異步 JavaScript 和 XML(Asynchronous Javascript And XML),是一種能夠不刷新整個(gè)網(wǎng)頁(yè)的前提下還能更新部分網(wǎng)頁(yè)的技術(shù)。通過后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。
5.JSON
即 JS 對(duì)象標(biāo)記(JavaScript Object Notation),是一種輕量級(jí)數(shù)據(jù)交換格式,能夠代替 XML 的工作,即可以處理前端(JavaScript)和后臺(tái)(web 服務(wù)器端)之間的數(shù)據(jù)交互。特點(diǎn)是易于人們的讀寫習(xí)慣,易于機(jī)器的分析和運(yùn)行,形式為一個(gè)以鍵值對(duì)形式表示的字符串。JSON 跨語(yǔ)言,在移動(dòng)端(Android、IOS)數(shù)據(jù)都可以由 JSON 來傳輸。
6.boostrap
Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript的,它在jQuery的基礎(chǔ)上進(jìn)行了更為個(gè)性化和人性化的完善,形成一套自己獨(dú)有的網(wǎng)站風(fēng)格,并兼容大部分jQuery插件。
7.angular.js和JQuery
AngularJS是為了克服HTML在構(gòu)建應(yīng)用上的不足而設(shè)計(jì)的。AngularJS有著諸多特性,最為核心的是:MVC、模塊化、自動(dòng)化雙向數(shù)據(jù)綁定、語(yǔ)義化標(biāo)簽、依賴注入等等。HTML是一門很好的為靜態(tài)文本展示設(shè)計(jì)的聲明式語(yǔ)言。
jQuery 使用戶可以更加方便地處理 HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)、events、實(shí)現(xiàn)動(dòng)畫效果,而且方便地為網(wǎng)站提供AJAX交互。
8.前端編輯器
Webstorm:重量級(jí)編輯器,當(dāng)前段項(xiàng)目配置了各種的 grunt,bower,angular 后你會(huì)發(fā)現(xiàn)你很需要它。Brackets:適合寫 CSS。Dreamweaver:“所見即所得”HBuilder:適合寫 H5,相對(duì)厚重。Sublime:相當(dāng)于一個(gè)升級(jí)版的記事本,有著強(qiáng)大的插件,建議安裝兩個(gè)(packagecontrol和emmet),輕量級(jí)編輯器,小巧智能。notepad++:插件多
三、后臺(tái)
1.JSP(J2EE)
即 Java 服務(wù)器頁(yè)面(JAVA Server Pages),是一種動(dòng)態(tài)網(wǎng)站開發(fā)語(yǔ)言,有點(diǎn)類似于 ASP 技術(shù),在傳統(tǒng)的 HTML 頁(yè)面文件(后綴名為*.htm或*.html)中插入 Java 程序段(Scriptlet)和 JSP 標(biāo)記(tag),從而形成 JSP 文件,后綴名*.jsp。JSP 開發(fā)的 web 應(yīng)用是跨平臺(tái)的,可以運(yùn)行在 Linux 或者其他操作系統(tǒng)下。它實(shí)現(xiàn)了 HTML 中的 Java 擴(kuò)展(以<%,%>形式),jsp 與 servlet 一樣運(yùn)行在服務(wù)器端,將一個(gè) HTML 文件返回給客戶端,因此客戶端有瀏覽器就可以瀏覽。servlet 是 JSP 的基礎(chǔ),大型的 web 應(yīng)用開發(fā)眾需要 servlet 和 JSP 同時(shí)配合。JSP 與 servlet 的關(guān)系:JSP 是 servlet 的擴(kuò)展,在 JSP 之前就有 servlet 了。有客戶端, web服務(wù)器(web server)和應(yīng)用服務(wù)器(application server),客戶端發(fā)出請(qǐng)求,web 服務(wù)器接受 http 請(qǐng)求,如果是 HTML、css 等靜態(tài)資源則 web 服務(wù)器可以自行處理 ,如果遇到動(dòng)態(tài)資源比如 jsp 時(shí)便將請(qǐng)求轉(zhuǎn)至應(yīng)用服務(wù)器中,由應(yīng)用服務(wù)器處理。應(yīng)用服務(wù)器也具有處理http 請(qǐng)求的能力,可能沒有 web 服務(wù)器那么專業(yè), 應(yīng)用服務(wù)器同時(shí)也包含 web 容器。在應(yīng)用服務(wù)器中,jsp 轉(zhuǎn)換成 servlet,在 servlet 容器中檢索是否已經(jīng)存在匹配的 servlet 實(shí)例,若沒有則由 servlet 容器加載并實(shí)例化這個(gè) servlet 類的一個(gè)實(shí)例對(duì)象,再有servlet 容器初始化并運(yùn)行;若 servlet 容器中已存在,則直接運(yùn)行。
web服務(wù)器:代表Nginx、IIS、Apache。 “相當(dāng)于前臺(tái)接待”。
應(yīng)用服務(wù)器:代表Bea WebLogic、IBM WebSphere、JBoss、Tomcat。Tomcat是Apache的擴(kuò)展可以獨(dú)立于Apache運(yùn)行?!跋喈?dāng)于真正的價(jià)值服務(wù)者”。
servlet容器:管理 servlet 的生命周期,存在于應(yīng)用服務(wù)器中。Tomcat 既可以看成是 servlet 容器又可以看成是 web 容器,既可以處理靜態(tài)資源又可以處理動(dòng)態(tài)的 servlet。 故可以使用兩個(gè)獨(dú)立的服務(wù)器比如 Nginx 和 WebLogic,也可以只用一個(gè) Tomcat。
2.PHP和ruby
php:超文本預(yù)處理器(hypertext preprocessor),是一種 基于對(duì)象的開源腳本語(yǔ)言,用于 web 后臺(tái)開發(fā)。
ruby: 面向?qū)ο蟮暮笈_(tái)腳本語(yǔ)言。基于對(duì)象:不提供抽象、重載和繼承面向?qū)ο螅禾峁┏橄?、重載和繼承
3.NetBeans
一款 用Java 編寫的主要用于后臺(tái)開發(fā)的 IDE。
4.Node.js
是一種 JavaScript 的運(yùn)行環(huán)境(runtime),是目前速度最快的 JavaScript 引擎,使 JavaScript 能脫離瀏覽器運(yùn)行。對(duì) Chrome V8 引擎進(jìn)行了封裝。使用事件驅(qū)動(dòng),非阻塞 I/O 模型而得以輕量而高效。
用處:是 JavaScript 運(yùn)行環(huán)境,也就是說能在服務(wù)器上跑 JavaScript 代碼,讓 JavaScript 實(shí)現(xiàn)服務(wù)器上的開發(fā)。一般是 js 程序員在用,屬于后端技術(shù)。
JavaScript 引擎:是一種專門處理 JavaScript 腳本的虛擬機(jī),一般會(huì)符帶在瀏覽器中。
四、ASP、ASP.NET與.NET
ASP:類似于JSP和PHP,是一種后臺(tái)開發(fā)技術(shù)。
.NET:是一個(gè) 平臺(tái),不是語(yǔ)言,包括運(yùn)行時(shí)的環(huán)境和開發(fā)的環(huán)境。可以在 .NET 平臺(tái)上用不同的語(yǔ)言開發(fā),例如 C#,VB.NET,HTML,F(xiàn)#,VC++.NET。有點(diǎn)類似于 java。JAVA 語(yǔ)言也是 java 平臺(tái)中的一個(gè)語(yǔ)言的名字,C# 同樣是 .NET 平臺(tái)中一個(gè)語(yǔ)言的名字, 即 java 跨平臺(tái),.NET 跨語(yǔ)言。java 開源,.NET 由微軟開發(fā)不開源。java 編寫完一次后可以再 Linux 上或其它操作系統(tǒng)上運(yùn)行,.NET 只適用于微軟,所以 java 跨平臺(tái),.NET 不跨平臺(tái)。
ASP.NET(又稱ASP+):是基于 .NET Framework 的 web 開發(fā) 平臺(tái)。一般前端用 HTML+css,后端用 C#。.NET Framework:是 .NET 開發(fā)的軟件運(yùn)行所必需的框架(framework)、運(yùn)行環(huán)境。