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