Vuex 4與狀態管理實戰指南

来源:https://www.cnblogs.com/Amd794/p/18236046
-Advertisement-
Play Games

title: Vuex 4與狀態管理實戰指南 date: 2024/6/6 updated: 2024/6/6 excerpt: 這篇文章介紹了使用Vuex進行Vue應用狀態管理的最佳實踐,包括為何需要狀態管理,Vuex的核心概念如store、actions、mutations和getters,以及 ...



title: Vuex 4與狀態管理實戰指南
date: 2024/6/6
updated: 2024/6/6

excerpt:
這篇文章介紹了使用Vuex進行Vue應用狀態管理的最佳實踐,包括為何需要狀態管理,Vuex的核心概念如store、actions、mutations和getters,以及如何處理非同步操作和模塊化組織狀態。通過例子展示瞭如何動態註冊模塊,以實現可復用和可擴展的狀態管理解決方案。

categories:

  • 前端開發

tags:

  • Vuex
  • 狀態管理
  • Vue.js
  • 模塊化
  • 非同步操作
  • 狀態變更
  • 動態註冊

image

第一部分 Vuex基礎

第1章 Vuex概述

1.1 Vue與Vuex的關係

Vue是一個漸進式JavaScript框架,它被設計為易於上手同時也能夠強大到驅動複雜的單頁應用(SPA)。Vue的核心庫只關註視圖層,不僅易於學習,而且容易與其他庫或現有項目整合。Vuex是一個專門為Vue.js應用程式開發的狀態管理模式和庫。它採用集中式存儲管理應用的所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。

Vuex與Vue的關係是互補的,Vue負責視圖層的渲染,而Vuex則負責管理應用的狀態。在沒有Vuex的情況下,Vue組件之間的狀態管理可能會變得複雜且難以維護,Vuex的出現解決了這一問題。

1.2 Vuex的核心概念

Vuex的核心概念包括以下幾個部分:

  • State:是存儲在Vuex中的狀態(數據),可以是任意類型的數據。
  • Getters:可以看作是store的計算屬性,用於派生出一些狀態。
  • Mutations:是更改Vuex中狀態的唯一方式,是同步操作。
  • Actions:類似於Mutations,但它包含任意非同步操作。
  • Modules:Vuex允許將store分割成模塊(module),每個模塊擁有自己的state、mutation、action、getter。

1.3 Vuex的工作流程

Vuex的工作流程通常如下:

  1. 組件通過dispatch調用一個action。
  2. Action通過調用mutation來更改狀態。
  3. Mutation直接更改狀態。
  4. 由於狀態變更,Vue組件會自動重新渲染,顯示新的狀態。

第2章 Vuex安裝與初始化

2.1 Vuex的安裝

Vuex可以通過npm進行安裝:

npm install vuex@next --save # 安裝Vuex 4版本

2.2 創建Vuex Store

創建Vuex Store通常需要定義一個store對象,併在其中包含state、mutations、actions、getters等:

import { createStore } from 'vuex';

const store = createStore({
  state() {
    return {
      // 初始狀態
    };
  },
  mutations: {
    // 變更狀態的方法
  },
  actions: {
    // 提交mutation的方法
  },
  getters: {
    // 獲取狀態的方法
  }
});

2.3 在Vue應用中集成Vuex

在Vue應用中集成Vuex,需要在Vue實例的創建過程中將store實例作為插件使用:

import { createApp } from 'vue';
import App from './App.vue';
import store from './store';

const app = createApp(App);

app.use(store);

app.mount('#app');

第3章 Vuex核心概念詳解

3.1 State:狀態管理

State是Vuex store的核心,它存儲了所有組件的狀態。組件可以通過mapState輔助函數或store.state直接訪問狀態。
歸檔 | cmdragon's Blog

3.2 Getters:派生狀態

Getters可以讓我們從store的state中派生出一些狀態,例如過濾列表、計數器的值等。它們可以被看作是store的計算屬性。

getters: {
  filteredList: (state) => {
    // 返回過濾後的列表
  }
}

3.3 Mutations:同步狀態變更

Mutations是更改Vuex store中狀態的唯一方式,它們是同步的,每個mutation都有一個字元串類型的事件類型(type)和一個回調函數(handler)。

mutations: {
  increment(state) {
    // 更改狀態的邏輯
  }
}

3.4 Actions:非同步狀態變更

Actions類似於mutations,但它們支持非同步操作。Action提交的是mutation,而不是直接變更狀態。

actions: {
  incrementAsync({ commit }) {
    setTimeout(() => {
      commit('increment');
    }, 1000);
  }
}

3.5 Modules:模塊化管理

對於大型應用,Vuex允許將store分割成模塊。每個模塊擁有自己的state、mutation、action、getter,使得代碼結構更清晰,易於管理。

const moduleA = {
  state() { /* ... */ },
  mutations: { /* ... */ },
  actions: { /* ... */ },
  getters: { /* ... */ }
};

const store = createStore({
  modules: {
    a: moduleA
  }
});

第二部分 Vuex 4新特性

第4章 Vuex 4新特性概述

4.1 Vuex 4的主要改進

Vuex 4是Vuex的最新版本,它與Vue 3相容,並帶來了一些重要的改進:

  • 與Vue 3的Composition API相容:Vuex 4提供了與Vue 3的Composition API更好的集成,使得狀態管理更加靈活和高效。
  • 改進的模塊系統:Vuex 4增強了模塊化管理,使得大型應用的狀態管理更加清晰和易於維護。
  • API的現代化:Vuex 4更新了API,使其更加現代化,同時也保持了與Vuex 3的向後相容性。

4.2 Vuex 4的API變化

Vuex 4的API變化主要包括:

  • createStore函數:用於創建一個新的store實例,替代了Vuex 3中的new Vuex.Store
  • useStore函數:在Vue組件中使用,用於獲取store實例。
  • 模塊的自動命名空間:Vuex 4預設啟用模塊的自動命名空間,簡化了模塊的管理。

第5章 Vuex 4的模塊化管理

5.1 模塊的註冊與自動命名空間

在Vuex 4中,模塊的註冊更加簡單,並且預設啟用了自動命名空間。這意味著每個模塊都有自己的命名空間,可以避免不同模塊之間的命名衝突。

const store = createStore({
  modules: {
    account: {
      state: () => ({ ... }),
      getters: { ... },
      mutations: { ... },
      actions: { ... }
    }
  }
});

5.2 模塊的動態註冊

Vuex 4支持動態註冊模塊,這使得模塊的載入更加靈活。

store.registerModule('myModule', {
  state: () => ({ ... }),
  getters: { ... },
  mutations: { ... },
  actions: { ... }
});

5.3 模塊的重寫與合併

Vuex 4允許對現有模塊進行重寫或合併,這在需要更新或擴展模塊時非常有用。

store.hotUpdate({
  modules: {
    myModule: {
      ...myModule,
      state: () => ({ ... }),
      getters: { ... },
      mutations: { ... },
      actions: { ... }
    }
  }
});

第6章 Vuex 4的Getters改進

6.1 直接訪問Getters

在Vuex 4中,可以直接通過store實例訪問getters,而不需要使用mapGetters輔助函數。

computed: {
  ...mapState(['myState']),
  myGetter() {
    return this.$store.getters.myGetter;
  }
}

6.2 使用Getters進行派生狀態的簡化

Vuex 4簡化了使用getters進行派生狀態的過程,使得代碼更加簡潔。

getters: {
  myGetter(state) {
    return state.myState.filter(item => item.active);
  }
}

在組件中使用時,可以直接訪問:

computed: {
  myFilteredList() {
    return this.$store.getters.myGetter;
  }
}

這些改進使得Vuex 4在處理複雜狀態管理時更加高效和易於維護。

第三部分 Vuex實戰應用

第7章 Vuex在Vue組件中的應用

7.1 在組件中訪問State和Getters

在Vue組件中,可以通過this.$store.state來訪問store中的狀態,通過this.$store.getters來訪問getters。

computed: {
  // 直接訪問state
  myState() {
    return this.$store.state.myState;
  },
  // 直接訪問getter
  myGetter() {
    return this.$store.getters.myGetter;
  }
}

7.2 使用mapState、mapGetters輔助函數

為了簡化組件中對store的訪問,可以使用mapStatemapGetters輔助函數。

import { mapState, mapGetters } from 'vuex';

computed: {
  // 使用mapState
  ...mapState({
    myState: state => state.myState
  }),
  // 使用mapGetters
  ...mapGetters(['myGetter'])
}

7.3 在組件中調用Actions和Mutations

在組件中,可以使用this.$store.dispatch來調用actions,使用this.$store.commit來調用mutations。

methods: {
  updateState() {
    // 調用mutation
    this.$store.commit('updateMutation', payload);
    // 調用action
    this.$store.dispatch('updateAction', payload);
  }
}

第8章 Vuex與組件通信

8.1 Vuex狀態與組件props的關係

Vuex的狀態不應該直接作為組件的props,因為props通常用於父組件向子組件傳遞數據。如果需要在組件中使用Vuex狀態,應該通過computed屬性來訪問。
AD:漫畫首頁

8.2 Vuex狀態在組件間的共用

Vuex的狀態是全局的,可以被多個組件共用。組件間通過訪問相同的Vuex狀態來保持數據的一致性。

8.3 Vuex狀態與組件生命周期

組件的生命周期鉤子可以用來監聽Vuex狀態的變化,並執行相應的操作。

watch: {
  '$store.state.myState': function(newValue, oldValue) {
    // 當myState變化時執行的操作
  }
},
created() {
  // 組件創建時獲取數據
  this.$store.dispatch('fetchData');
}

第9章 Vuex在大型項目中的應用

9.1 Vuex在複雜應用中的結構設計

在大型項目中,Vuex的狀態結構設計非常重要。通常建議按照功能模塊來劃分state、getters、mutations和actions。

const store = createStore({
  modules: {
    moduleA: moduleAState,
    moduleB: moduleBState,
    // 更多模塊
  }
});

9.2 Vuex與路由的結合

在Vue項目中,經常需要結合Vuex和Vue Router來管理路由狀態。可以在路由守衛中使用Vuex狀態來控制訪問許可權或載入必要的數據。

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!store.getters.isAuthenticated) {
      next({ path: '/login' });
    } else {
      next();
    }
  } else {
    next();
  }
});

9.3 Vuex與伺服器端的交互

Vuex經常與後端伺服器進行交互,通過actions來處理非同步請求。

actions: {
  async fetchData({ commit }) {
    try {
      const response = await axios.get('/api/data');
      commit('setData', response.data);
    } catch (error) {
      // 處理錯誤
    }
  }
}

在大型項目中,合理地使用Vuex可以極大地提高項目的可維護性和擴展性。

第四部分 Vuex高級特性

第10章 Vuex的插件系統

10.1 Vuex插件的概念

Vuex插件是一個返回函數的對象,這個函數接收store作為參數。插件可以在store創建之後被添加到store中,用於監聽store的變化或執行一些額外的邏輯。

const myPlugin = store => {
  store.subscribe((mutation, state) => {
    // 當mutation被提交時執行的操作
  });
};

10.2 創建自定義插件

創建自定義插件時,你可以利用store.subscribe來監聽mutation的變化,或者使用store.subscribeAction來監聽action的變化。

const loggerPlugin = store => {
  store.subscribe((mutation, state) => {
    console.log(mutation.type, mutation.payload);
  });
  store.subscribeAction((action, state) => {
    console.log(action.type, action.payload);
  });
};

10.3 Vuex插件的最佳實踐

使用Vuex插件時,以下是一些最佳實踐:

  • 保持插件的功能單一,易於維護。
  • 插件中避免直接修改state,而是通過commit或dispatch來改變狀態。
  • 在插件中處理錯誤和異常,避免影響到正常的應用邏輯。

第11章 Vuex的性能優化

11.1 Vuex的性能考量

在大型應用中,Vuex的狀態樹可能會變得非常龐大,這可能會影響到應用的性能。以下是一些性能考量的方面:

  • 減少不必要的mutation和action。
  • 使用計算屬性和getters來避免重覆的數據處理。
  • 避免在組件中直接監聽整個state的變化。

11.2 Vuex狀態樹的扁平化

Vuex狀態樹的扁平化是指將嵌套的狀態結構轉換為扁平的結構,這有助於減少組件的計算負擔。

// 假設原始狀態樹
const state = {
  user: {
    id: 1,
    name: '張三'
  },
  settings: {
    theme: 'dark'
  }
};

// 扁平化的狀態
const flatState = {
  userId: state.user.id,
  userName: state.user.name,
  settingsTheme: state.settings.theme
};

11.3 Vuex的持久化與緩存

為了防止頁面刷新導致Vuex狀態丟失,可以使用持久化和緩存機制。

  • 持久化:通常結合本地存儲(如localStorage)來保存狀態。
  • 緩存:可以使用緩存策略,比如LRU(最近最少使用)緩存來存儲常用的狀態。
// 使用localStorage進行持久化
const saveStateToLocalStorage = state => {
  localStorage.setItem('vuexState', JSON.stringify(state));
};

const loadStateFromLocalStorage = () => {
  const state = localStorage.getItem('vuexState');
  return state ? JSON.parse(state) : undefined;
};

在實現持久化和緩存時,需要考慮數據的安全性和性能,避免敏感數據的泄露和性能的下降。

第五部分 Vuex與前端框架的集成

第12章 Vuex與Vue 3的集成

12.1 Vue 3的新特性

Vue 3帶來了多項新特性,包括但不限於:

  • 組合式API(Composition API):允許更加靈活地組合和復用邏輯。
  • 性能提升:通過Tree Shaking、Proxy-based observation等手段,提高了框架的性能。
  • 類型支持:更好的TypeScript集成。
  • 自定義渲染器API:允許開發者創建自定義渲染器。
  • 多事件監聽和Teleport組件等新功能。

12.2 Vuex在Vue 3中的使用

在Vue 3中使用Vuex與Vue 2類似,但需要確保使用與Vue 3相容的Vuex版本。在Vue 3中,你可以通過app.use(store)來安裝Vuex。

import { createApp } from 'vue';
import { createStore } from 'vuex';

// 創建一個新的store實例
const store = createStore({ /* ... */ });

// 創建Vue應用實例並使用store
const app = createApp({ /* ... */ });
app.use(store);
app.mount('#app');

12.3 Vuex與Vue 3的組合式API

在Vue 3中,可以使用組合式API來使用Vuex。以下是如何在組件中使用Vuex的狀態和操作:

import { computed } from 'vue';
import { useStore } from 'vuex';

export default {
  setup() {
    const store = useStore();

    // 使用store.state和store.getters
    const count = computed(() => store.state.count);
    const doubleCount = computed(() => store.getters.doubleCount);

    // 使用store.dispatch和store.commit
    function increment() {
      store.dispatch('increment');
    }

    function decrement() {
      store.commit('decrement');
    }

    return { count, doubleCount, increment, decrement };
  }
};

第13章 Vuex與其他前端框架的集成

13.1 Vuex在React中的應用

雖然Vuex是為Vue設計的,但理論上也可以在React應用中使用。然而,通常推薦使用更符合React生態的數據流管理庫,如Redux。如果需要在React中使用Vuex,可以通過創建相應的包裝器和橋接代碼來實現。
AD:專業搜索引擎

13.2 Vuex在Angular中的應用

Vuex不是為Angular設計的,Angular有自己的狀態管理庫——NgRx。不過,如果你想在Angular項目中使用Vuex,需要創建一個服務來模擬Vuex的核心功能,但這通常不是一個好的實踐。

13.3 Vuex在跨框架項目中的實踐

在跨框架項目中使用Vuex是非常不常見的,因為每個框架都有自己的狀態管理解決方案。如果確實需要在跨框架的項目中使用Vuex,可能需要創建一個統一的狀態管理層,然後為每個框架提供適配器來與這個狀態管理層交互。這種做法通常很複雜,並且可能帶來不必要的性能和維護成本。

在實際開發中,推薦使用每個框架對應的狀態管理解決方案,例如在React中使用Redux,在Vue中使用Vuex,在Angular中使用NgRx。這樣可以更好地利用每個框架的特性和生態。

第六部分 Vuex的最佳實踐

第14章 Vuex的項目結構設計

14.1 Vuex在項目中的目錄結構

在項目中,Vuex的目錄結構應當清晰明確,以下是一個推薦的目錄結構示例:

src/
|-- store/
    |-- index.js          # Vuex的入口文件,用於創建store實例
    |-- modules/          # 存放各個Vuex模塊
        |-- user.js       # 用戶模塊
        |-- products.js   # 產品模塊
    |-- getters.js        # 公共getters
    |-- actions.js        # 公共actions
    |-- mutations.js      # 公共mutations

14.2 Vuex模塊的劃分原則

模塊的劃分應遵循以下原則:

  • 按功能劃分:將邏輯上緊密相關的狀態、getter、action和mutation組合在一起。
  • 單一職責:每個模塊只處理一個具體的功能或領域。
  • 保持扁平:避免模塊嵌套過深,保持模塊結構的扁平化。

14.3 Vuex狀態的命名規範

狀態的命名應遵循以下規範:

  • 使用小寫字母和下劃線(snake_case)命名。
  • 保持命名簡潔明瞭,易於理解。
  • 避免使用縮寫,除非是廣泛接受的縮寫。

第15章 Vuex的測試

15.1 Vuex狀態的單元測試

對Vuex狀態進行單元測試時,可以使用Vue Test Utils和Jest等測試工具。以下是一個簡單的測試示例:

import { createStore } from 'vuex';

const store = createStore({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  }
});

describe('Vuex state', () => {
  it('mutations should increment count', () => {
    store.commit('increment');
    expect(store.state.count).toBe(1);
  });
});

15.2 Vuex的集成測試

。AD:首頁 | 一個覆蓋廣泛主題工具的高效線上平臺
集成測試通常涉及組件和Vuex store的交互。以下是一個集成測試的示例:

import { mount } from '@vue/test-utils';
import MyComponent from '@/components/MyComponent.vue';
import { createStore } from 'vuex';

const store = createStore({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  }
});

const wrapper = mount(MyComponent, {
  global: {
    plugins: [store]
  }
});

// 觸發組件中的方法,並斷言狀態的變化
wrapper.find('button').trigger('click');
expect(wrapper.vm.$store.state.count).toBe(1);

15.3 Vuex測試的最佳實踐

  • 保持測試的獨立性,每個測試用例只測試一個功能點。
  • 使用模擬數據和真實數據相結合,確保測試的準確性。
  • 保持測試的可維護性,隨著Vuex狀態的變化更新測試用例。

第16章 Vuex的維護與迭代

16.1 Vuex代碼的維護

為了維護Vuex代碼,以下是一些最佳實踐:

  • 保持模塊化和組件化。
  • 使用清晰的命名和文檔。
  • 定期審查和重構代碼。

16.2 Vuex狀態的迭代管理

在迭代管理Vuex狀態時:

  • 小步快跑,避免一次性進行大規模的重構。
  • 使用版本控制工具(如Git)來跟蹤狀態變化。
  • 保持與團隊成員的溝通,確保狀態的變更是可預測和可管理的。

16.3 Vuex的版本升級策略

當升級Vuex版本時:

  • 閱讀官方的升級指南,瞭解所有的變更點。
  • 在升級之前,在分支或副本上進行測試,確保應用相容性。
  • 如果可能,先升級到次要版本,逐步過渡到最新版本。

附錄

Vuex資源列表

以下是一些Vuex學習的資源列表,可以幫助開發者更好地理解和掌握Vuex:

  1. 官方文檔Vuex官網,Vue.js官方提供的Vuex文檔,是最權威的學習資源。
  2. Vue.js官方教程:Vue.js官方提供的 Vuex 教程,涵蓋基礎概念和高級用法。
  3. Vuex GitHub 倉庫Vuex GitHub,可以查看Vuex的源碼和最新動態。
  4. Vue.js社區Vue.js中文社區,國內Vue.js愛好者的交流社區,有關於Vuex的討論和教程。
  5. 視頻教程:Bilibili、慕課網等平臺上有許多關於Vuex的視頻教程,適合喜歡看視頻學習的開發者。
  6. 開源項目:GitHub上有很多使用Vuex的開源項目,通過閱讀源碼可以學習到實際項目中Vuex的使用方式。

Vuex常見問題解答

以下是關於Vuex的一些常見問題及其解答:

  1. 什麼是Vuex?  Vuex是Vue.js的官方狀態管理庫,用於集中管理所有組件的狀態。
  2. Vuex與組件的data有什麼區別?  Vuex是全局的狀態管理,而組件的data是局部狀態。Vuex的狀態是響應式的,可以被多個組件共用和修改。
  3. 為什麼要使用Vuex?  在大型應用中,Vuex可以幫助你更好地組織狀態,並保持組件間的狀態同步。
  4. Vuex中的mutation和action有什麼區別?  Mutation是同步操作,直接修改狀態;Action是非同步操作,提交mutation來修改狀態。
  5. 如何調試Vuex中的狀態變化?  可以使用Vue Devtools來跟蹤和調試Vuex的狀態變化。
  6. Vuex如何處理模塊化?  Vuex支持模塊化,可以將狀態分割成模塊,每個模塊擁有自己的狀態、getter、action和mutation。

Vuex版本更新日誌

以下是Vuex的一些主要版本更新日誌摘要:

  • Vuex 3.x:引入了模塊化,增強了插件系統,改進了性能。
  • Vuex 4.x:與Vue 3相容,支持Composition API,改進了類型支持,移除了一些過時的API。

具體每個版本的詳細更新內容,可以查看Vuex的官方GitHub倉庫中的Release Notes


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文分享自華為雲社區《【華為雲MySQL技術專欄】MySQL記憶體增長問題分析案例》,作者:GaussDB 資料庫。 前言 在現網環境中,偶爾會遇到客戶實例記憶體OOM(Out Of Memory,即記憶體耗盡或溢出)的情況。MySQL資料庫作為一款面向高併發應用場景的系統軟體,因其應用場景複雜且函數調用 ...
  • 前言 數據傳輸的數據格式有以下幾種常見的格式: JSON(JavaScript Object Notation):JSON是一種輕量級的數據交換格式,可讀性高且易於解析。它使用鍵值對的方式表示數據,並且支持多層嵌套。 XML(eXtensible Markup Language):XML是一種標 ...
  • 一、背景信息 早幾年買的小米盒子3增強版,放在家裡也沒怎麼用,娃最近總要看動畫片,網上去找一些軟體裝上了,但速度很慢,遙控器按下去要等個幾秒才能響應,系統里還到處都是廣告,就想著能不能刷下。 具體配置如下: 型號:小米盒子3增強版 (MDZ-18-AA) 安卓版本:5.2 小米版本:1.5.93 內 ...
  • 在Android桌面Launcher源碼淺析中介紹了Android的桌面程式Launcher是如何響應用戶點擊事件並啟動App的,這篇文章繼續介紹App在Android系統層的啟動流程。 一、啟動流程 sequenceDiagram participant User participant Laun ...
  • 前言 容器類庫是指一組用於存儲和管理數據的數據結構和演算法。它們提供了各種不同類型的容器,如數組、鏈表、樹、圖等,以及相關的操作和功能,如查找、插入、刪除、排序等。 容器類庫還可以包含其他數據結構和演算法,如堆、樹、圖等,以及相關的操作和功能,如排序、查找、遍歷等。它們可以用於解決各種不同的問題和場 ...
  • 一、併發 併發是指在一個時間段內,多個事件、任務或操作同時進行或者交替進行的方式。在電腦科學中,特指多個任務或程式同時執行的能力。併發可以提升系統的吞吐量、響應速度和資源利用率,並能更好地處理多用戶、多線程和分散式的場景。常見的併發模型有多線程、多進程、多任務、協程等。 1.併發概述 Ha ...
  • **RDF(資源描述框架)**是一種用於機器理解網路資源的框架,使用XML編寫。它通過URI標識資源,用屬性描述資源,便於電腦應用程式處理信息。RDF在語義網上促進信息的確切含義和自動處理,使得網路信息可被整合。RDF語句由資源、屬性和屬性值組成。RDF文檔包括`<rdf:RDF>`根元素和`<r... ...
  • 這段時間來,AI已經逐步走進我們的工作和生活,作為程式員來說,讓AI寫代碼已經成為稀鬆平常的操作了,今天給大家介紹一個更牛逼的操作,屏幕截屏轉化為代碼,從此前端開發更簡單 screenshot-to-code screenshot-to-code可以將任何屏幕截圖或設計轉換為乾凈的代碼,它是一個簡單 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...