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