1 概要
對於前端的學習內容,應該從如下幾個方面進行從而對整體的業務以及技術的定義、作用、相互之間的關系,以及在各個階段使用什么樣的技術有一個簡單的了解以及認知。
2 知識列表
2.1 什么是程序?
2.2 網絡交互的基本原理
2.3 網絡交互含模塊內容
2.4 網站訪問的過程
3 詳細介紹
3.1 什么是程序
通常情況下,根據開發者的認識,程序是什么?代碼!其實不對。程序的目的在於復用性、高效性、可維護性從而能夠保證程序的可持續的利用以及維護。那么如何能夠保證程序具備如上的優點呢?首先需要知道什么是程序。
根據《軟件工程(第四版)》的主要內容的認知,程序的內容可以划分為:源碼、文檔以及數據【1】。
①源碼:能夠進行進行輸入操作,在一定的業務邏輯輔助的條件下進行合理數據輸出的代碼的集合稱為源碼。
②文檔:根據軟件開發的生命周期過程(包括:可行性研究、需求分析、概要設計、詳細設計、程序實現、程序測試以及調試)中具有引導以及說明的文字性文件。
③數據:數據結構,在程序的設計過程中需要相應的設計,其中就包括數據結構。
3.2 網絡交互的基本原理
3.2.1 URL的概念
①URL:統一資源定位符
②可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標准資源的地址。
③互聯網上的每個文件都有一個唯一的URL,包含:文件的位置、處理邏輯處理它【2】。
3.2.2 地址的基本樣式
http://ip-adress:port/project-name/program-name?parameter=value
其中,http指的是http協議,ip-address指的是IP地址,port服務器相應的端口號project-name指的是在服務器上運行的程序項目編號,program-name指的是在項目中運行的程序名稱,問號是通配符,后邊緊接參數名稱以及參數值。
開發者可以在服務器的配置文件中進行相應的域名匹配,從而隱藏掉相應的ip地址以及相應的端口號,對進行網絡交互的信息進行第一重的保護。
諸如:http://www.zhihu.com/question/22689579
其中,用域名“www.zhizhu.com”將相應的IP地址以及端口號進行匹配以及隱藏。
根據軟件工程的主要特點包括:①模塊化②抽象③自頂向下④逐步求精⑤信息隱藏。其中,信息隱藏就是將不想展開給用戶的信息進行信息隱藏【1】。
3.2.3 網絡訪問的基本思想
網絡訪問,可以簡單划分為兩部分:
①瀏覽器與服務器之間的交互。
②服務器與數據庫之間的交互。
圖3-1 網絡數據訪問的基本業務流程圖
如圖3-1所示,使用者通過客戶端的PC瀏覽器中,對地址欄中輸入相應的Url(統一資源定位符),http請求中,會具有兩種方式進行相應的數據請求(Get方法、Post方法)【3】,將相應的數據請求發送給服務器,服務器中程序(war包)具有過濾器,將會根據映射的內容,將相應的數據進入到相應的程序中,並且進行相應的數據查詢操作,這一請求將會對服務器端的數據庫信息進行交互(使用到SQL語句)如果數據庫中具有相應的數據信息,則反饋成功,否則,反饋失敗。將查詢的結果信息反饋給服務器,通過Http協議進行相應的數據信息相應,根據原路徑傳遞回客戶端的瀏覽器【4】。
3.2.4 網絡訪問反饋信息的內容
如上一項的內容表達,網絡訪問反饋的是什么東西?網絡中反饋回來的實際上HTML頁面,即:http中響應的body中方法體的內容,並且在瀏覽器中進行重新渲染。Html是一種標記語言,常見的內容包括:
①[img]圖片地址[/img]:網頁中進行圖片數據的加載
②[url]鏈接地址[/url]:網頁中進行鏈接的數據的加載
③[del]需要刪除內容[/del]:標簽中應該被刪除的文本內容
當瀏覽器接收到相應的body文件,重新進行組合,進行相應的頁面渲染,如果不用相應的CSS的話,效果就是簡單的html樣式的堆疊。因此,我們常常需要進行自定義的樣式操作,一般將樣式寫在CSS文件當中,當要進行動態相應的話,則將相應的代碼寫在JavaScript文件當中。
3.3 網絡交互含模塊內容
網絡交互的模塊只要根據作用的位置不同主要可以划分為:①前端②后端,其中前端主要指PC機上瀏覽器所呈現出來的樣式內容,后端通常指的是服務器的內容效果。
在此處還要提到兩個概念即:軟件開發過程中將會提及的B/S結構以及C/S結構,其中B/S結構就是Browser/Server結構(瀏覽器/服務器)結構以及C/S結構就是Client/Server(客戶端/服務器)結構。兩種網絡交互的開發結構需要根據實際問題進行選擇。
3.3.1 前端所含技術
就客戶端而言,前端技術目前可以包括的內容,主要有:①HTML/HTML5、②CSS、③JavaScript腳本、④Ajax
其中,HTML包含了很多的標簽內容,這對於頁面進行解析具有比重要的意義,而HTML5則是在HTML的基礎上,對象標簽的內容進行了完善(適當增加、減少、修改),HTML頁面和CSS組成了靜態的網頁,但是靜態的網頁不能滿足目前人們對於視覺上的感官需要,於是JavaScript(JS)技術可以為靜態頁面提供一些動態效果。
瀏覽器中具備一些JS中使用的工具(函數、對象),將代碼保存在js文件中,html中通過<script>及進行頁面的關聯,效果就開始能夠進行使用和再現。例如使用的AJAX,在不用刷新頁面就能夠與服務器進行相應的交互,從而更新頁面中的一小部分。
瀏覽器可以使用多種語言進行相應的頁面內容的解析,但是目前瀏覽器默認使用JavaScript進行相應的瀏覽器的解析。
3.3.2 后端所含的技術
服務端常會用到的知識包括:①Web Server ②Web Services,瀏覽器向服務器發送請求時,首先請求需要和相應有一個通用的寫法,即:HTTP協議。當服務器被進行請求時,如何能夠使得頁面獲得服務端的反饋,並且知道相應的請求結果呢?
① HTTP協議
服務器通常的相應都會標記相應的狀態碼:其中,200 OK表示成功,即:服務其中具有請求的東西;404 Not Found 表示沒有請求東西。諸如此類的狀態碼需要進行相應知識的總結和歸納。
除此之外,HTTP協議除了反饋相應的標識符以外,還會返回的內容有:Content-Type:表示服務器發送過來的文件類型是什么。由於網絡服務器器的相應不可能進行時文字類的字符串,其包含的內容種類也是多樣的,包括(文本、動畫、圖片、音頻),通過這個相應的標志,將文件發送給使用者瀏覽器知道如何向用戶進行展示。
圖3-2 HTTP協議的結構
如圖3-2所示,HTTP協議主要可以包括兩部分,分別是Header以及Body部分,兩個部分各有自己的作用,其中Header中主要用來存放服務器對於請求以后的返回結果,其中包括相應的①狀態②Content-Type③Content-Encoding等等。
其中,狀態用來判斷服務器的反饋結果類別,Content-Type用來表明反饋值為哪種類型,從來幫助瀏覽器知道如何進行相應的數據處理。Content-Encoding表示的內容的編碼集內容。
② 服務器的使用情況,作為服務器而言,作為目的性的設備而言,其並沒有明顯的分類,其可以是大型機也可以是個人PC,只要是能夠幫助將程序進行實際運行的硬件設備都可以看作是服務器。同樣客戶端也可以是各種軟件。其運行平台主要可以是:A.個人設備B.移動設備C.App
③ 網絡數據的傳輸,需要對數據進行傳遞,但是通常情況下,在網絡進行數據交互的過程中,不僅僅傳遞HTML頁面,還會將相應的數據信息以字符串以及封裝對象的數據形式進行數據傳遞。
對數據信息進行相應的交互時,需要協議(HTTP/HTTPS)以及封裝格式(HTML/XML),作為網絡服務器Web Server提供相應的Web Service,指協議加上相應的格式交流體系。
但是,由於Web Service的生態系統和HTML的標准不同,用戶可以選擇不同通訊協議以及數據封裝格式。其中HTTP+HTML是其中一種方式。某些封閉系統內的交流還可以是用自定義端的協議、格式運行。
Web Service將數據傳輸到本地客戶端(例如瀏覽器)上,對其進行相應的分析、渲染,從而將數據以普通人能夠理解的形式進行展示,其中Web Service的對象為開發者
④ 服務器端,根據相應的業務流程代碼內容稱為腳本。Web Service傳輸的數據,由服務器腳本生成並且交給Web Server,按照協議裝備好相應的格式,並且可以將相應的數據信息返回給客戶端。
3.4 網站訪問的過程
通常情況下的網站訪問的操作,分別為:
①用戶操作瀏覽器,進行訪問,瀏覽器向服務器發送HTTP請求。
②服務器接收到HTTP請求,Web Server進行初步處理,使用服務器腳本生成頁面。
③服務器腳本(利用Web Framework)調用本地和客戶端傳送來的數據,生成頁面。
④Web Server將生成的頁面作為HTTP響應的body,根據不同的處理結果生成HTTP Header,並且將相應的結果發送給客戶端。
⑤客戶端(瀏覽器)接收HTTP響應的結果,將其根據HTTP Header,HTTP Body兩部分進行數據的解析。
⑥解析過程中,需要對服務器上的資源(CSS、JS、圖片、視頻、音頻以及附件等),再向Web Server發送請求,Web Server找到對應的文件,發送回來。
⑦瀏覽器解析HTML包含的內容,用得到的CSS代碼對外觀進行進一步的渲染,JS代碼會對外觀進行遞進式的數據處理(其中,處理包括對於數據的特效處理)。
⑧在進行數據的交互過程中,可能需要向服務器索契或者提交額外的數據(局部刷新),常用方法:A.直接跳轉B.重定向C.JS代碼(響應某個動作)向Web Server發送請求,Web Server再用服務器腳本進行處理(生成資源或者寫入數據之類),將資源發送給客戶端,客戶端根據資源實現響應的動態效果或者頁面變化。
參考目錄
[1] 張海藩,呂雲翔 編著 《軟件工程(第四版)》 人民郵電出版社
[2] Elizabeth Castro.HTML XHTML CSS基礎教程.北京:人民郵電出版社,2007.8:35-37
[3] 耿祥義 編著 《JSP使用教程(第三版)》 清華大學出版社 2015.01.01
[4] 林信良 編著 《JSP Servlet 學習筆記(第2版)》 清華大學出版社 2012.05.01