MVVM模式的理解
MVVM是Model-View-ModelView的縮寫
模型-視圖-視圖模型。
【模型】指的是后端傳遞的數據。
【視圖】指的是所看到的頁面。
【視圖模型】mvvm模式的核心,它是連接view和model的橋梁。
它有兩個方向:
一是將【模型】轉化成【視圖】,即將后端傳遞的數據轉化成所看到的頁面。實現的方式是:數據綁定。
二是將【視圖】轉化成【模型】,即將所看到的頁面轉化成后端的數據。
實現的方式是:DOM 事件監聽。這兩個方向都實現的,我們稱之為數據的雙向綁定
總結:在MVVM的框架下視圖和模型是不能直接通信的。它們通過ViewModel來通信,ViewModel通常要實現一個observer觀察者,當數據發生變化,ViewModel能夠監聽到數據的這種變化,然后通知到對應的視圖做自動更新,而當用戶操作視圖,ViewModel也能監聽到視圖的變化,然后通知數據做改動,這實際上就實現了數據的雙向綁定。並且MVVM中的View 和 ViewModel可以互相通信。
為什么會有MVVM框架
數據和視圖更密切的關聯
組件 父傳子 子傳父的數據傳遞
例子 當我們切換頁面時 每個頁面的數據不同 需要進行分類 ,這時候可以加提煉公共的方法,寫成一個子組件
通過父組件把數據傳遞給子組件 子組件獲取之后可以進行調用數據 進行分類 把符合自己定義的條件的數據分好類在從子組件傳輸給父組件
路由實現原理
通過 改變URL,在不重新請求頁面的情況下
路由:hash和history
hash:地址欄中的從#開始到的到結尾的值
hash的特點:雖然會出現在URL地址中,但是不會被包括在Http請求中,對后端完全沒有影響,因此改變hash不會重新加載頁面
例子:http://160.238.86.82:8003/ #/index
history :history 中新增的pushState()和replaceState()
pushState()方法用於歷史中添加一條記錄
replaceState()方法用來修改history對象的當前記錄
history 模式,去除了#,這種模式充分利用 history.pushState
API 來完成 URL 跳轉而無須重新加載頁面。
vue與react和angular的區別
vue.js更輕量,壓縮后大小20kb
vue吸收兩家之長,借用了angular的指令和react的組件化
keep-alive 是Vue內置的一個組件,用來緩存組件,避免多次加載相應的組件,減少性能消耗
使用場景需要頻繁切換路由,這個時候可以考慮keep-alive
vue.cli項目中src目錄每個文件夾和文件的用法?
答:assets文件夾是放靜態資源;components是放組件;router是定義路由相關的配置; app.vue是一個應用主組件;main.js是入口文件。