Stories

Detail Return Return

AI輔助學習:給一個 mvvm 模式使用的小例子 - Stories Detail

MVVM在面試時問得很多,下面讓Ai教我們怎麼用這個模式:

以下是一個簡單的 MVVM(Model-View-ViewModel)模式在 JavaScript(使用 Vue.js 框架來實現)中的小例子,展示瞭如何實現數據綁定和交互邏輯的分離。

1. 項目搭建

首先,確保你已經安裝了 Vue.js。如果沒有,可以通過以下方式在項目中引入:
在 HTML 文件的頭部添加如下 CDN 鏈接:

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>

2. 創建 Model

Model 代表應用程序的數據模型,它通常包含數據的結構和獲取數據的方法(在這個簡單例子中,我們先簡單定義一些數據)。

// Model.js
const model = {
    data: {
        message: 'Hello, MVVM World!',
        count: 0
    }
};

export default model;

這裏定義了一個簡單的對象 model,其中包含了 message 和 count 兩個數據屬性。

3. 創建 ViewModel

ViewModel 是連接 Model 和 View 的橋樑,它負責從 Model 獲取數據並將其提供給 View 進行展示,同時也處理來自 View 的用户交互事件並更新 Model 中的數據。

// ViewModel.js
import model from './Model.js';

const viewModel = {
    data: Vue.util.extend({}, model.data),
    incrementCount() {
        this.data.count++;
    }
};

export default viewModel;

在 ViewModel.js 中,首先引入了 Model,然後通過 Vue.util.extend 方法創建了一個新的對象,其數據來源於 Model 的數據,這樣可以保證數據的獨立性,避免直接修改 Model 的數據。同時定義了一個方法 incrementCount,用於增加 count 的值。

4. 創建 View

View 負責展示數據和接收用户的交互操作,它通過數據綁定與 ViewModel 進行交互。


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>MVVM Example</title>
</head>

<body>
    <div id="app">
        <p>{{ message }}</p>
        <p>Count: {{ count }}</p>
        <button v-on:click="incrementCount">Increment Count</button>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <script src="ViewModel.js"></script>
    <script>
        const app = new Vue({
            el: 'app',
            data: viewModel.data,
            methods: {
                incrementCount: viewModel.incrementCount
            }
        });
    </script>
</body>

</html>

在這個 HTML 文件中:

通過雙大括號 {{ }} 語法實現了數據綁定,將 ViewModel 中的 message 和 count 數據展示在頁面上。

使用 v-on:click 指令綁定了按鈕的點擊事件,當用户點擊按鈕時,會調用 ViewModel 中的 incrementCount 方法,從而實現對 count 數據的更新。

在整個例子中:

  • Model 負責提供數據的基礎結構和初始值。
  • ViewModel 在 Model 和 View 之間起到了承上啓下的作用,它獲取並處理 Model 的數據,同時響應 View 的交互請求並更新 Model 的數據。
  • View 則專注於數據的展示和用户交互操作的接收,通過數據綁定和指令與 ViewModel 緊密配合,實現了數據展示和交互邏輯的分離,符合 MVVM 模式的特點。

請注意,這個例子只是一個非常簡單的演示,在實際應用中,Model 可能會涉及到更復雜的數據獲取和處理,比如從 API 獲取數據等,ViewModel 也會有更復雜的邏輯來處理數據轉換和事件響應,View 可能會有更多的頁面元素和交互設計。

總結一下

View + ViewModel 是純js 代碼,減少了View裏的代碼量,純代碼便於測試與重用。

Add a new Comments

Some HTML is okay.