mvvm 源自於經典的 mvc(model-view-controller)模式。mvvm 的核心是 viewmodel 層,負責轉換 model 中的資料物件來讓資料變得更容易管理和使用,其作用如下:
mvvm 已經相當成熟了,主要運用但不僅僅在網路應用程式開發中。當下流行的 mvvm 框架有 vue.js,angularjs 等。
mvvm 模式和 mvc 模式一樣,主要目的是分離檢視(view)和模型(model),有幾大好處
view 是檢視層,也就是使用者介面。前端主要由 html和 css來構建,為了更方便地展現 viewmodel或者 model層的資料,已經產生了各種各樣的前後端模板語言,比如 freemarker、thymeleaf 等等,各大 mvvm 框架如 vue.js,angularjs,ejs 等也都有自己用來構建使用者介面的內建模板語言。
3.2)model
model 是指資料模型,泛指後端進行的各種業務邏輯處理和資料操控,主要圍繞資料庫系統展開。這裡的難點主要在於需要和前端約定統一的 介面規則
3.3)viewmodel
viewmodel 是由前端開發人員組織生成和維護的檢視資料層。在這一層,前端開發者對從後端獲取的 model 資料進行轉換處理,做二次封裝,以生成符合 view 層使用預期的檢視資料模型。
需要注意的是 viewmodel 所封裝出來的資料模型包括檢視的狀態和行為兩部分,而 model 層的資料模型是只包含狀態的
檢視狀態和行為都封裝在了 viewmodel 裡。這樣的封裝使得 viewmodel 可以完整地去描述 view 層`。由於實現了雙向繫結,viewmodel 的內容會實時展現在 view 層,這是激動人心的,因為前端開發者再也不必低效又麻煩地通過操縱 dom 去更新檢視。
mvvm 框架已經把最髒最累的一塊做好了,我們開發者只需要處理和維護 viewmodel,更新資料檢視就會自動得到相應更新,真正實現 事件驅動程式設計。
view 層展現的不是 model層的資料,而是 viewmodel的資料,由 viewmodel負責與 model層互動,這就完全解耦了 view層和 model層,這個解耦是至關重要的,它是前後端分離方案實施的重要一環。
vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架,發布於 2014 年 2 月。與其它大型框架不同的是,vue 被設計為可以自底向上逐層應用。vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫(如:vue-router,vue-resource,vuex)或既有專案整合。
在 mvvm 架構中,是不允許 資料 和 檢視 直接通訊的,只能通過 viewmodel 來通訊,而 viewmodel 就是定義了乙個 observer 觀察者
至此,我們就明白了,vue.js 就是乙個 mvvm 的實現者,他的核心就是實現了 dom 監聽 與 資料繫結
【說明】idea 可以安裝 vue 的外掛程式!
注意:vue 不支援 ie8 及以下版本,因為 vue 使用了 ie8 無法模擬的 ecmascript 5 特性。但它支援所有相容 ecmascript 5 的瀏覽器。
- 開發版本
- cdn
vue.js 的核心是實現了 mvvm 模式,她扮演的角色就是 viewmodel 層,那麼所謂的第乙個應用程式就是展示她的 資料繫結 功能,操作流程如下:
1. 建立乙個 html 檔案
2. 引入 vue.js
<3. 建立乙個 vue 例項script
src=""
>
script
>
<4. 將資料繫結到頁面元素script
>
varvm
=new
vue(
});script
>
<說明:只需要在繫結的元素中使用 雙花括號 將 vue 建立的名為 message 屬性包裹起來,即可實現資料繫結功能,也就實現了 viewmodel 層所需的效果,是不是和 el 表示式非常像?div
id>
hello } !!!
div>
/*建立乙個 vue 例項
*/var
vm =
newvue(
});script
>
html
>
為了能夠更直觀的體驗 vue 帶來的資料繫結功能,我們需要在瀏覽器測試一番,操作流程如下:
在瀏覽器上執行第乙個 vue 應用程式,進入 開發者工具
在控制台輸入 vm.message = 『hello world』 ,然後 回車,你會發現瀏覽器中顯示的內容會直接變成 hello world
此時就可以在控制台直接輸入 vm.message 來修改值,中間是可以省略 data 的,在這個操作中,我並沒有主動操作 dom,就讓頁面的內容發生了變化,這就是借助了 vue 的 資料繫結 功能實現的;mvvm 模式中要求 viewmodel 層就是使用 觀察者模式 來實現資料的監聽與繫結,以做到資料與檢視的快速響應。
————————————————
Vue學習筆記2 MvVM模式和第乙個Vue程式
vue官方文件 為什麼要使用mvvm mvvm模式和mvc模式一樣,主要目的是分離檢視 view 和模型 model 有幾大好處 view view是檢視層,也就是使用者介面。前端主要由html和css來構建,為了更方便地展現viewmode 或者model層的資料,已經產生了各種各樣的前後端模板語...
python第乙個程式設計 第乙個 Python 程式
簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...
第乙個 爬蟲和測試
1.爬蟲 如下 import requests def gerhtmltext url try r requests.get url,timeout 1 r.raise for status r.encoding utf 8 return r.text except return 訪問錯誤 url ...