<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 前端開發的歷史和趨勢 [TOC=2,2] ## 什么是前端 * 前端:針對瀏覽器的開發,代碼在瀏覽器運行 * 后端:針對服務器的開發,代碼在服務器運行 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/frontend.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/frontend.png) ## 前后端不分的時代 互聯網發展的早期,前后端開發是一體的,前端代碼是后端代碼的一部分。 1. 后端收到瀏覽器的請求 2. 生成靜態頁面 3. 發送到瀏覽器 ## 后端 MVC 的開發模式 那時的網站開發,采用的是后端 MVC 模式。 * Model(模型層):提供/保存數據 * Controller(控制層):數據處理,實現業務邏輯 * View(視圖層):展示數據,提供用戶界面 前端只是后端 MVC 的 V。 以 PHP 框架 Laravel 為例。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/laravel-mvc.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/laravel-mvc.png) ## 前端工程師的角色 那時的前端工程師,實際上是模板工程師,負責編寫頁面模板。 后端代碼讀取模板,替換變量,渲染出頁面。 ## 典型的 PHP 模板 ~~~ <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> ~~~ ## Ajax Ajax 技術誕生,改變了一切。 * 2004年:Gmail * 2005年:Google 地圖 前端不再是后端的模板,可以獨立得到各種數據。 ## Web 2.0 Ajax 技術促成了 Web 2.0 的誕生。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/web20.gif)](https://github.com/ruanyf/jstraining/blob/master/docs/images/web20.gif) * Web 1.0:靜態網頁,純內容展示 * Web 2.0:動態網頁,富交互,前端數據處理 從那時起,前端變得復雜了,對前端工程師的要求越來越高。 ## 前端 MVC 框架 前端通過 Ajax 得到數據,因此也有了處理數據的需求。 前端代碼變得也需要保存數據、處理數據、生成視圖,這導致了前端 MVC 框架的誕生。 * 2010年,Backbone.js [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/backbone.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/backbone.png) ## Backbone.js Backbone 將前端代碼分成兩個基本部分。 * Model:管理數據 * View:數據的展現 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/backbone-model-view.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/backbone-model-view.png) ## 前端 Controller Backbone 只有 M 和 V,沒有 C。因為,前端 Controller 與后端不同。 * 不需要,也不應該處理業務邏輯 * 只需要處理 UI 邏輯,響應用戶的一舉一動 所以,前端 Controller 相對比較簡單。Backbone 沒有 C,只用事件來處理 UI 邏輯。 ~~~ var AppView = Backbone.View.extend({ // ... events: { "keypress #new-todo": "createOnEnter", "click #clear-completed": "clearCompleted", "click #toggle-all": "toggleAllComplete" }, } ~~~ ## MVVM 模式 另一些框架提出 MVVM 模式,用 View Model 代替 Controller。 * Model * View * View-Model:簡化的 Controller,唯一作用就是為 View 提供處理好的數據,不含其他邏輯。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/mvvm.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/mvvm.png) ## Router 前端還有一種天然的方法,可以切換視圖,那就是 URL。 通過 URL 切換視圖,這就是 Router(路由)的作用。以 Backbone 為例。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/backbone-routing.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/backbone-routing.png) ~~~ App.Router = Backbone.Router.extend({ routes: { '': 'index', 'show': 'show' }, index: function () { $(document.body).append("調用了 Index 路由"); }, show: function () { $(document.body).append("調用了 Show 路由"); }, }); ~~~ ## 示例:Backbone Router 打開`demos/backbone-demo/index.html`,按照[《操作說明》](https://github.com/ruanyf/jstraining/blob/master/demos/README.md#backbone),查看示例。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/backbone-demo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/backbone-demo.png) ## SPA 前端可以做到: > * 讀寫數據 > * 切換視圖 > * 用戶交互 這意味著,網頁其實是一個應用程序。 > SPA = Single-page application 2010年后,前端工程師從開發頁面,變成了開發”前端應用“(跑在瀏覽器里面的應用程序)。 ## Angular Google 公司推出的 Angular 是最流行的 MVC 前端框架。 它的風格屬于 HTML 語言的增強,核心概念是雙向綁定。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/angular.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/angular.png) ## 示例:Angular 的雙向綁定 瀏覽器打開`demos/angular-demo/index.html`,可以看到一個輸入框。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/angular-demo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/angular-demo.png) ~~~ <div ng-app=""> <p> 姓名 : <input type="text" ng-model="name" placeholder="在這里輸入您的大名" > </p> <h1>你好,{{name}}</h1> </div> ~~~ ## Vue Vue.js 是現在很熱門的一種前端 MVC 框架。 它的基本思想與 Angular 類似,但是用法更簡單,而且引入了響應式編程的概念。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/vue-logo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/vue-logo.png) ## 示例:Vue 的雙向綁定 Vue 的模板與數據,是雙向綁定的。 打開`demos/vue-demo/index1.html`,按照[《操作說明》](https://github.com/ruanyf/jstraining/blob/master/demos/README.md#vue),查看示例。 [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/vue-demo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/vue-demo.png) HTML 代碼 ~~~ <div id="journal"> <input type="text" v-model="message"> <div>{{message}}</div> </div> ~~~ JS 代碼 ~~~ var journal = new Vue({ el: '#journal', data: { message: 'Your first entry' } }); ~~~ ## 前后端分離 * Ajax -> 前端應用興起 * 智能手機 -> 多終端支持 這兩個原因,導致前端開發方式發生根本的變化。 前端不再是后端 MVC 中的 V,而是單獨的一層。 ## REST 接口 前后端分離以后,它們之間通過接口通信。 后端暴露出接口,前端消費后端提供的數據。 后端接口一般是 REST 形式,前后端的通信協議一般是 HTTP。 ## Node 2009年,Node 項目誕生,它是服務器上的 JavaScript 運行環境。 Node = JavaScript + 操作系統 API [![](https://github.com/ruanyf/jstraining/raw/master/docs/images/node-logo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/node-logo.png) ## Node 的意義 * JavaScript 成為服務器腳本語言,與 Python 和 Ruby 一樣 * JavaScript 成為唯一的瀏覽器和服務器都支持的語言 * 前端工程師可以編寫后端程序了 ## 前端開發模式的根本改變 * Node 環境下開發 * 大量使用服務器端工具 * 引入持續集成等軟件工程的標準流程 * 開發完成后,編譯成瀏覽器可以運行的腳本,放上 CDN ## 全棧工程師 前端工程師正在轉變為全棧工程師 * 一個人負責開發前端和后端 * 從數據庫到 UI 的所有開發 ## 全棧技能 怎樣才能稱為全棧工程師? * 傳統前端技能:HTML、JavaScript、CSS * 一門后端語言 * 移動端開發:iOS / Android / HTML5 * 其他技能:數據庫、HTTP 等等 ## 軟件行業的發展動力 歷史演變:前后端不分 -> 前后端分離 -> 全棧工程師 動力:更加產業化、大規模地生產軟件 * 效率更高 * 成本更低 通用性好、能夠快速產出的技術最終會贏,單個程序員的生產力要求越來越高。 ## 未來軟件的特點 * 聯網 * 高并發 * 分布式 * 跨終端 現在基于 Web 的前端技術,將演變為未來所有軟件的通用的 GUI 解決方案。 ## 未來只有兩種軟件工程師 * 端工程師 * 手機端 * PC 端 * TV 端 * VR 端 * …… * 云工程師
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看