前端(英語:front-end)和後端(英語:back-end)是描述進程開始和結束的通用詞彙。前端做用於採集輸入信息,後端進行處理。計算機程序的界面樣式,視覺呈現屬於前端。javascript
互聯網發展的早期,先後端開發是一體的,前端代碼是後端代碼的一部分。php
那時的網站開發,採用的是後端 MVC 模式。MVC模式(Model–view–controller)是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。css
前端只是後端 MVC 的 V。
經過JavaScript
所實現的基於 MVC 模型,須要注意的是:MVC 不是一種技術,而是一種理念:html
/** 模擬 Model, View, Controller */
var M = {}, V = {}, C = {};
/** Model 負責存放資料 */
M.data = "hello world";
/** View 負責將資料輸出到螢幕上 */
V.render = (M) => { alert(M.data); }
/** Controller 做為一個 M 和 V 的橋樑 */
C.handleOnload = () => { V.render(M); }
/** 在網頁讀取的時候呼叫 Controller */
window.onload = C.handleOnload;
以 PHP 框架 Laravel 爲例。前端
那時的前端工程師,其實是模板工程師,負責編寫頁面模板。後端代碼讀取模板,替換變量,渲染出頁面。vue
典型的 PHP 模板:html5
<html> <head><title>Car {{ $car->id }}</title></head> <body> <h1>Car {{ $car->id }}</h1> <ul> <li>Make: {{ $car->make }}</li> <li>Model: {{ $car->model }}</li> <li>Produced on: {{ $car->produced_on }}</li> </ul> </body> </html>
1991年10月HTML標籤,一個非正式CERN文件首次公開18個HTML標籤,2014年10月28日,HTML 5做爲W3C推薦標準發佈java
Cookie(複數形態Cookies),又稱爲「小甜餅」。類型爲「小型文本文件」,指某些網站爲了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數據(一般通過加密)。由網景公司的前僱員盧·蒙特利在1993年3月發明。node
1994年,哈肯·維姆·萊和伯特·波斯合做設計CSS。層疊樣式表(英語:Cascading Style Sheets,縮寫:CSS;又稱串樣式列表、級聯樣式表、串接樣式表、階層式樣式表)是一種用來爲結構化文檔(如HTML文檔或XML應用)添加樣式(字體、間距和顏色等)的計算機語言,由W3C定義和維護。當前最新版本是CSS2.1,爲W3C的推薦標準。CSS3如今已被大部分現代瀏覽器支持,而下一版的CSS4仍在開發中。css3
JavaScript(一般縮寫爲JS)是一種高級的、解釋型的編程語言。JavaScript是一門基於原型、函數先行的語言,是一門多範式的語言,它支持面向對象編程,命令式編程,以及函數式編程。它提供語法來操控文本、數組、日期以及正則表達式等,不支持I/O,好比網絡、存儲和圖形等,但這些均可以由它的宿主環境提供支持。它已經由ECMA(歐洲電腦製造商協會)經過ECMAScript實現語言的標準化。JavaScript最初開發於1996年,被使用於Netscape Navigator網頁瀏覽器。
AJAX即「Asynchronous JavaScript and XML」(異步的JavaScript與XML技術),指的是一套綜合了多項技術的瀏覽器端網頁開發技術。Ajax的概念由傑西·詹姆士·賈瑞特所提出。
1995年,JAVA語言的初版發佈,隨之發佈的的Java applets(JAVA小程序)首次實現了異步加載。瀏覽器經過運行嵌入網頁中的Java applets與服務器交換數據,沒必要刷新網頁。1996年,Internet Explorer將iframe元素加入到HTML,支持局部刷新網頁。1998年先後,Outlook Web Access小組寫成了容許客戶端腳本發送HTTP請求(XMLHTTP)的第一個組件。2004年:Gmail;2005年:Google 地圖。
前端再也不是後端的模板,能夠獨立獲得各類數據。
Web 1.0 最先的概念包括常更新的靜態HTML頁面。而.com時代的成功則是依靠一個更加動態的Web(指代「Web 1.5」),其中CMS(內容管理系統)能夠從不斷變化的內容數據庫中即時生成動態HTML頁面。
Web 2.0是一種新的互聯網方式,經過網絡應用(Web Applications)促進網絡上人與人間的信息交換和協同合做,其模式更加以用戶爲中心。典型的Web 2.0站點有:網絡社區、網絡應用程序、社交網站、博客、Wiki等等。動態網頁,富交互,前端數據處理。
Ajax 技術促成了 Web 2.0 的誕生。
從那時起,前端變得複雜了,對前端工程師的要求愈來愈高。
前端經過 Ajax 獲得數據,所以也有了處理數據的需求。前端代碼變得也須要保存數據、處理數據、生成視圖,這致使了前端 MVC 框架的誕生。
2010年,Backbone.js。Backbone.js是一套JavaScript框架與RESTful JSON的應用程序接口。也是一套大體上符合MVC架構的編程範型。常被用來開發單頁的互聯網應用程序,以及用來維護網絡應用程序的各類部分(例如多用戶與服務端)的同步。Backbone.js是由Jeremy Ashkenas所開發,他同時也是CoffeeScript的開發者。
Backbone 將前端代碼分紅兩個基本部分。
Backbone 只有 M 和 V,沒有 C。由於,前端 Controller 與後端不一樣。
因此,前端 Controller 相對比較簡單。Backbone 沒有 C,只用事件來處理 UI 邏輯。
var AppView = Backbone.View.extend({
// ...
events: {
"keypress #new-todo": "createOnEnter",
"click #clear-completed": "clearCompleted",
"click #toggle-all": "toggleAllComplete"
},
});
前端還有一種自然的方法,能夠切換視圖,那就是 URL。經過 URL 切換視圖,這就是 Router(路由)的做用。以 Backbone 爲例。
App.Router = Backbone.Router.extend({
routes: {
'': 'index',
'show': 'show'
},
index: function () {
$(document.body).append("調用了 Index 路由");
},
show: function () {
$(document.body).append("調用了 Show 路由");
},
});
另外一些框架提出 MVVM 模式,用 View Model 代替 Controller。
MVVM(Model–view–viewmodel)是一種軟件架構模式。MVVM有助於將圖形用戶界面的開發與業務邏輯或後端邏輯(數據模型)的開發分離開來,這是經過標記語言或GUI代碼實現的。
本質:view 綁定 view-model,視圖與數據模型強耦合。數據的變化實時反映在 view 上,不須要手動處理。
前端能夠作到:
這意味着,網頁實際上是一個應用程序。SPA = Single-page application
2010年後,前端工程師從開發頁面,變成了開發「前端應用」(跑在瀏覽器裏面的應用程序)。
傳統的架構:
單頁應用的架構(多了一個前端 MVC 層):
Google 公司推出的 Angular 是最流行的 MVVM 前端框架。它的風格屬於 HTML 語言的加強,核心概念是雙向綁定。
<div ng-app="">
<p>
姓名 :
<input type="text" ng-model="name" placeholder="在這裏輸入您的大名" >
</p>
<h1>你好,{{name}}</h1>
</div>
Vue.js 是如今很熱門的一種前端 MVVM 框架。它的基本思想與 Angular 相似,可是用法更簡單,並且引入了響應式編程的概念。
<div id="journal">
<input type="text" v-model="message">
<div>{{message}}</div>
</div>
<script> var journal = new Vue({ el: '#journal', data: { message: 'Your first entry' } }); </script>
這兩個緣由,致使前端開發方式發生根本的變化。前端再也不是後端 MVC 中的 V,而是單獨的一層。
表現層狀態轉換(英語:Representational State Transfer,縮寫:REST)是Roy Thomas Fielding博士於2000年在他的博士論文中提出來的一種萬維網軟件架構風格,目的是便於不一樣軟件/程序在網絡(例如互聯網)中互相傳遞信息。
先後端分離之後,它們之間經過接口通訊。
後端暴露出接口,前端消費後端提供的數據。
後端接口通常是 REST 形式,先後端的通訊協議通常是 HTTP。
GET http://www.store.com/products // 列舉全部商品 GET http://www.store.com/products/12345 // 呈現某一件商品 POST http://www.store.com/orders // 下單購買 <purchase-order> <item> ... </item> </purchase-order>
2009年,Node 項目誕生,它是服務器上的 JavaScript 運行環境。Node = JavaScript + 操做系統 API
Node 的意義:
前端開發模式的根本改變:
前端工程師正在轉變爲全棧工程師
歷史演變:先後端不分 -> 先後端分離 -> 全棧工程師
動力:更加產業化、大規模地生產軟件
通用性好、可以快速產出的技術最終會贏,單個程序員的生產力要求愈來愈高。
爲何 H5 技術會贏得移動端?
Hybrid App,Hybrid技術指的是利用Web開發技術,調用Native相關的API,實現移動與Web兩者的有機結合。
1991 年 HTML 誕生了
1993 年 cookie 的誕生
1998 年 ajax 的誕生
2005 年 「web工程師」 的誕生
2006 年 jQuery 的誕生
2009 年 Node 的誕生
2012 年 MVVM 的時代拉開序幕
2014年 html5 css3 的誕生
2015年6月,ECMAScript 6.0發佈
參考資料: