假設(shè)大家在瀏覽器地址欄輸入這個問題的地址
https://www.cnnds.com
HTML 與 CSS
當(dāng)自己的電腦得到一個 html頁面 (圖中HTTP 響應(yīng)中 body 里的內(nèi)容)之后,就會對它進行解析。HTML 就是一種超文本標(biāo)記語言。給大家舉一些實例看看:
- [img]圖片[/img] 用來粘貼圖片
- [url]超鏈接[/url] 用來粘貼地址
服務(wù)器返回給你的html文件,寫的是一些代碼,大概是這樣的:
PHP 就是一種常見的用來寫服務(wù)器腳本的語言,其實只要是能拿來寫大家傳輸數(shù)據(jù)的通用接口(CGI)的語言都可以用來寫服務(wù)器腳本(也就是說幾乎所有編程語言都可以寫 = =b),只是因為現(xiàn)成工具的豐富程度和專攻程度不一樣,所以有一些語言在寫服務(wù)器端腳本的時候會比較熱門。
為了方便,我們在寫服務(wù)器腳本的時候,通常還會用個同語言寫的 Web Framework 來處理各種細(xì)節(jié),防御一些常見的攻擊,提供跨站認(rèn)證(比如用已有的微博賬號注冊其他網(wǎng)站)的接口,利用cookie處理登陸狀態(tài)和用戶設(shè)置,生成網(wǎng)頁模版之類的。如果你用 C# 或者 Visual Basic 寫服務(wù)器腳本,就可以用 http://ASP.NET 這個框架實現(xiàn)這些功能,幫你省點麻煩。不過現(xiàn)在不少人是反過來為了一個好用的 Web Framework 去選擇它對應(yīng)的服務(wù)器腳本語言的。
一個普通網(wǎng)站訪問的過程
簡單概括一下,對于我們普通的網(wǎng)站訪問,涉及到的技術(shù)就是:
- 用戶操作瀏覽器訪問,瀏覽器向服務(wù)器發(fā)出一個 HTTP 請求;
- 服務(wù)器接收到 HTTP 請求,Web Server 進行相應(yīng)的初步處理,使用服務(wù)器腳本生成頁面;
- 服務(wù)器腳本(利用Web Framework)調(diào)用本地和客戶端傳來的數(shù)據(jù),生成頁面;
- Web Server 將生成的頁面作為 HTTP 響應(yīng)的 body,根據(jù)不同的處理結(jié)果生成 HTTP header,發(fā)回給客戶端;
- 客戶端(瀏覽器)接收到 HTTP 響應(yīng),通常第一個請求得到的 HTTP 響應(yīng)的 body 里是 HTML 代碼,于是對 HTML 代碼開始解析;
- 解析過程中遇到引用的服務(wù)器上的資源(額外的 CSS、JS代碼,圖片、音視頻,附件等),再向 Web Server 發(fā)送請求,Web Server 找到對應(yīng)的文件,發(fā)送回來;
- 瀏覽器解析 HTML 包含的內(nèi)容,用得到的 CSS 代碼進行外觀上的進一步渲染,JS 代碼也可能會對外觀進行一定的處理;
- 用戶與頁面交互(點擊,懸停等等)時,JS 代碼對此作出一定的反應(yīng),添加特效與動畫;
- 交互的過程中可能需要向服務(wù)器索取或提交額外的數(shù)據(jù)(局部的刷新,類似微博的新消息通知),一般不是跳轉(zhuǎn)就是通過 JS 代碼(響應(yīng)某個動作或者定時)向 Web Server 發(fā)送請求,Web Server 再用服務(wù)器腳本進行處理(生成資源or寫入數(shù)據(jù)之類的),把資源返回給客戶端,客戶端用得到的資源來實現(xiàn)動態(tài)效果或其他改變。
注意這只是小網(wǎng)站里比較常見的模型,大網(wǎng)站為了解決規(guī)模問題還會有很多處理,每個環(huán)節(jié)都會有一些細(xì)微的差異,中間還會使用各種各樣的工具減輕服務(wù)器的壓力,提高效率,方便日常維護~
延伸閱讀 —— 那些看花眼的名詞
為了方便調(diào)試,很多 Web Framework 會自帶一個簡單的 Web Server,或者有些 Web Server 會自帶一個簡單的 Web Framework ,實際部署到服務(wù)器上開放使用的時候為了性能或者安全等多方面的考慮,可以把內(nèi)置的 Web Server 換成其他的,比如 Apache 或者 Nginx (舉個栗子,知乎用的是 Tornado 做 Framework,Server 換成了 Nginx,見知乎使用了哪些框架和開源庫?)。如果是開源的東西,還可以在遵守開源協(xié)議的前提下自己改一下再用~
因為后端不像前端已經(jīng)有 HTML + CSS + JS 這樣的既定事實標(biāo)準(zhǔn),服務(wù)器腳本與 Web Framework 的選擇很多,所以新手會聽到很多眼花繚亂的技術(shù)名詞的地方多在這里~ 舉一些栗子,早年常見的服務(wù)器端語言有:
- 開源的 PHP
- Sun 公司的 JSP 中使用的 Java
- 微軟的 ASP 中使用的 VBScript
現(xiàn)在在這方面的應(yīng)用熱起來的語言有
- Python,對應(yīng)常見的 Framework 包括知乎和Quora有用到的 Tornado(其實是自帶 Framework 的 Web Server),社區(qū)很成熟的 Django (用戶包括 Instagram、Pinterest)等
- Ruby,一般都用 Rails 這個 Framework,用戶包括 Github、早期的 Twitter 等
- 逆天的 JavaScript,有了 Node.js 這個平臺,Web Server、服務(wù)器腳本和瀏覽器腳本全都可以用 JavaScript 來寫……Node.js上最常用的 Framework是Express
- 微軟家的則跟著 http://ASP.NET 轉(zhuǎn)移到了C# 或者 Visual Basic
- Erlang,擅長大規(guī)模的并發(fā),不少游戲公司拿來寫服務(wù)器,靠幾十個工程師支撐幾億用戶的WhatsApp也是用的這個~
幾種常見的架構(gòu)包括:
- LAMP = Linux + Apache + MySQL + PHP(P還可能是Python或Perl。有時候L會改成W=Windows。),也就是服務(wù)器上的操作系統(tǒng)是 Linux,Web Server 用 Apache,數(shù)據(jù)庫用 MySQL,服務(wù)器腳本用 PHP,這些都是開源技術(shù),網(wǎng)站起步時用起來的成本會比較低,所以是普通網(wǎng)站里非常常見的架構(gòu)(雖然對于發(fā)展得很大的網(wǎng)站會遇到很多瓶頸),F(xiàn)acebook就是這種,淘寶也曾經(jīng)是。
- J2EE,Java 世界的架構(gòu),通常是企業(yè)用的(銀行、大型公司,.etc),比較常見地還會搭配一種 UNIX 做操作系統(tǒng),Apache 做 Web Server,Tomcat 轉(zhuǎn)換 JSP 到 Java 給服務(wù)器程序用(其實它也自帶 Web Server),Oracle 數(shù)據(jù)庫等等。不一定拿來建站,常常用來提供企業(yè)里的各種需要用到網(wǎng)絡(luò)的業(yè)務(wù)。我們學(xué)校教務(wù)系統(tǒng)就是用J2EE做的=。= 淘寶現(xiàn)在也是從LAMP轉(zhuǎn)型到了這個。關(guān)于tomcat等之前的文章也有提及環(huán)境的配置。
- http://ASP.NET,微軟家的架構(gòu),通常會搭配 Windows Server 操作系統(tǒng),SQL Server 數(shù)據(jù)庫,IIS 做 Web Server。StackOverflow和京東(曾經(jīng))就是這個架構(gòu)。
- 神奇的MEAN架構(gòu),MongoDB做數(shù)據(jù)庫,Express做 Web Framework,Angular 做前端的 JavaScript 框架,Node.js 用于編寫 Web Server。神奇之處在于這幾個東西的語言都是 JavaScript (MongoDB的實現(xiàn)不是,但與外界溝通用的語言是)。因為是比較新的架構(gòu),還有待時間的考驗,不過被很多人(尤其是靠 JavaScript 吃飯的前端程序猿們)熱切關(guān)注。
- 一般來說重點不在技術(shù)而且在乎成本的新網(wǎng)站比較喜歡用 LAMP,重視安全穩(wěn)定和速度的企業(yè)和機構(gòu)喜歡 J2EE,想省事的網(wǎng)站喜歡 http://ASP.NET,比較 Geek 的網(wǎng)站和創(chuàng)業(yè)公司喜歡折騰各種 Python、Ruby、Node.js世界的東西,Google 這樣現(xiàn)成的技術(shù)都解決不了需求的超大型網(wǎng)站就自己折騰解決方案。
本文標(biāo)題:你知道HTML、CSS、JS、Services、PHP、ASP.NET 是什么來頭么?
網(wǎng)頁URL:http://m.rwnh.cn/news5/97755.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、用戶體驗、商城網(wǎng)站、網(wǎng)站營銷、電子商務(wù)、關(guān)鍵詞優(yōu)化
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)