成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從Jquery到Vue 一次編程思維的轉換

開發 前端
已經很多年沒有寫前端代碼了,我的前端水平還停留在Jquery一統天下的年代。最近想趁著假期,惡補一下前端的知識,于是就看了一下最近特別流行的Vue.js。

[[411080]]

已經很多年沒有寫前端代碼了,我的前端水平還停留在Jquery一統天下的年代。最近想趁著假期,惡補一下前端的知識,于是就看了一下最近特別流行的Vue.js。這一看不要緊,發現自己已經落后了整整一個時代。

前端編程思想已經由Jquery 時代的事件驅動編程 模型過渡到了以Vue.js 為代表的數據驅動編程 時代。

前端編程思想由事件驅動 到 數據驅動 的轉變我覺得意義重大,跟后端的MVC的思想一樣,都具有劃時代的意義。

可以說所有新的技術及編程思想的出現都是時代發展的必然產物。后端的MVC 思想出現,是因為當時后端邏輯變得越來越復雜,代碼維護起來難度越來越大。為了讓項目結構更清晰,維護起來更容易,人們提出了代碼分層的概念; 所以出現了Model 層,View 層,以及Controller層。

現在前端頁面也變得越來越復雜,特別是隨著移動互聯網時代的到來,為了能夠更好地維護越來越復雜的前端代碼,前端也提出了分層的概念,將代碼也分為三層,分別是Model 層,VIew 層,以及ViewModel層。這就是VUE 框架的指導思想,簡稱MVVC。

前端的 MVVC跟后端的 MVC本質是一樣的,這也印證了很多樸素的真理其實都是通用的這句話。

跟很多后端程序員都聊過,他們表示前端很難學,甚至無意中還會流露出某種羨慕嫉妒恨的表情。有個知名技術大咖曾經開玩笑說,你連JavaScript都學得會,還學不會C++。

其實后端程序員覺得前端難學的原因,大概有兩點,其一是因為JavaScript語法本身的特性,靈活多變,并且JavaScript走的是原型繼承的路線,跟其他面向對象語言截然不同;第二點原因就是編程思維方式不一樣,大部分前端程序員都是事件驅動的編程思維,而很多后端程序員都是數據驅動的編程思維。

數據驅動VS事件驅動

數據驅動編程:

所謂的數據驅動編程,就是一切從數據的角度出發,把所有的東西都抽象成數據模型,然后進行數據建模。后端程序員大部分都是這種數據驅動的編程思維。 舉個簡單的例子。如果要實現一個博客系統,那么后端程序員,特別是Java程序員,首先考慮的是先創建一個Blog 對象模型,該模型包含了,標題,作者,內容,發布時間等屬性。然后才會考慮針對 Blog 有哪些操作,比如新增 Blog,查詢 Blog,刪除以及修改 Blog。這就是典型的數據驅動編程,編程之前思考得更多的是數據模型,以及數據模型之間的關系和變化。

事件驅動編程:

所謂的事件驅動編程,就是一切從事件的角度出發,以事件為思考點。因為前端更多的是處理頁面與用戶的互動關系,比如點擊某個元素呈現不同的頁面內容,點擊某個按鈕進行表單提交等,這些都是由事件觸發的,所以前端程序員大部分都是事件驅動編程的思維方式。

VUE的出現

Jquery 是事件編程的代表,而VUE 則是數據驅動編程的代表,也是前端MVVC思想的具體體現。

下面我們通過“監聽頁面表單元素變化”這個小功能,來體會一下兩種編程方式的區別。

事件驅動編程Demo

1. 實現靜態頁面表單

  1. <!-- 實現靜態頁面 --> 
  2. <form> 
  3.   Name
  4.   <p id="name-value"></p> 
  5.   <input type="text" name="name" id="name-input" /> 
  6.   Email: 
  7.   <p id="email-value"></p> 
  8.   <input type="email" name="email" id="email-input" /> 
  9.   <input type="submit" /> 
  10. </form> 

 

 

2. 事件綁定

  1. var nameInputEl = document.getElementById("name-input"); 
  2. var emailInputEl = document.getElementById("email-input"); 
  3. // 監聽輸入事件,此時 updateValue 函數未定義 
  4. nameInputEl.addEventListener("input", updateNameValue); 
  5. emailInputEl.addEventListener("input", updateEmailValue); 

3. 事件觸發,更新頁面內容

  1. var nameValueEl = document.getElementById("name-value"); 
  2. var emailValueEl = document.getElementById("email-value"); 
  3. // 定義 updateValue 函數,用來更新頁面內容 
  4. function updateNameValue(e) { 
  5.   nameValueEl.innerText = e.srcElement.value; 
  6. function updateEmailValue(e) { 
  7.   emailValueEl.innerText = e.srcElement.value; 

這就是事件驅動編程方式。整個編寫代碼的過程中,我們一直圍繞事件在思考,也就是觸發了什么事件,這個事件將帶來什么結果。

數據驅動編程Demo

1. 數據建模 表單中包含了兩個數據數據框,name及Email,所以我們定義一個數據模型。

  1. // 包括一個 name 和 一個 email 的值 
  2. export default { 
  3.   data: { 
  4.     return { 
  5.       name""
  6.       email: "" 
  7.     }; 
  8.   }}; 

2. 將數據與前端展示建立聯系,并為相應元素綁定事件

  1. <form> 
  2.   Name
  3.   <p>{{ name }}</p> 
  4.   <input 
  5.     type="text" 
  6.     name="name" 
  7.     v-bind:value="name" 
  8.     v-on:input="updateNameValue" 
  9.   /> 
  10.   Email: 
  11.   <p>{{ email }}</p> 
  12.   <input 
  13.     type="email" 
  14.     name="email" 
  15.     v-bind:value="email" 
  16.     v-on:input="updateEmailValue" 
  17.   /> 
  18.  <input type="submit" /> 
  19.  </form> 

 

 

3. 給數據模型添加相應的處理邏輯

  1. export default { 
  2.   data: { 
  3.     return { 
  4.       name""
  5.       email: "" 
  6.     }; 
  7.   }, 
  8.   methods: { 
  9.     // 綁定 input 事件,獲取到輸入值,設置到對應的數據中 
  10.     updateNameValue(event) { 
  11.       this.name = event.target.value; 
  12.     }, 
  13.     updateEmailValue(event) { 
  14.       this.email = event.target.value; 
  15.     } 
  16.   }}; 

這就是VUE 的數據驅動編程思想的體現。一直以數據為思考中心,考慮的是數據的變化,并不是事件的變化。如果你是個后端程序員,特別是Java程序員,應該很容易接受這種編程方式。

 

以上就是我學習Vue的一些體會,事件驅動編程跟數據驅動編程 可以混合使用,畢竟我們的世界不是非黑即白,主要看我們真實項目的使用場景。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-07-16 22:29:29

代碼迭代質量

2011-02-22 09:29:23

jQueryJavaScript

2017-07-07 16:07:41

2023-11-29 08:10:52

類型sql語句

2011-06-28 10:41:50

DBA

2017-05-27 14:16:36

技術管理者

2021-05-07 05:54:43

數據庫數據湖數據

2014-03-06 09:35:40

Git提交

2018-07-11 10:24:33

數據恢復數據刪除

2021-12-27 10:08:16

Python編程語言

2020-10-24 13:50:59

Python編程語言

2014-03-14 10:07:09

極限編程敏捷開發

2024-11-28 12:38:39

gcc開源編譯器

2023-04-06 09:42:00

LispHTMLQwit

2017-03-13 09:19:38

CAP編程語言

2011-04-07 11:20:21

SQLServer

2012-08-28 09:21:59

Ajax查錯經歷Web

2021-11-01 17:29:02

Windows系統Fork

2022-09-21 08:39:52

堆外內存泄露內存分布

2021-03-01 10:43:56

大數據人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品第三页 | 国产精品日韩在线观看 | 狠狠亚洲 | 日韩成人在线看 | 在线观看视频一区 | 国产精品久久久久久久7777 | 日日摸夜夜添夜夜添精品视频 | 日韩精品免费在线观看 | 一区二区三区精品视频 | 国产精品视频999 | 日韩三区 | 日韩视频1 | 色婷婷国产精品 | 中文在线播放 | 亚洲永久精品国产 | 国产日韩一区二区 | 久久黄视频| 精品久久一区二区三区 | 91短视频网址 | 日韩一区二区三区视频 | 欧洲亚洲精品久久久久 | 欧美一级免费看 | 欧美激情一区二区三区 | 狠狠婷婷综合久久久久久妖精 | 日韩av免费在线观看 | 日韩免费在线观看视频 | 精品91久久久 | 亚洲一区二区不卡在线观看 | www.色.com| 精品一区二区三区四区五区 | 国产精品18久久久 | 国产不卡一| 一区二区三区在线 | 日本精品一区二区三区在线观看视频 | 亚洲精品黄色 | 欧美video| 日日夜夜免费精品视频 | 国产日韩精品一区二区三区 | 国产精品久久久久久吹潮 | 伊人婷婷 | 亚洲一区二区精品视频 |