Vue-4

自定義創建項目

目標:基于 VueCli 自定義創建項目架子

大致步驟:

  • 安裝腳手架
  • 創建項目 vue create 項目名稱
  • 選擇自定義 選擇 Manually select features 這一項
step-1:按下空格 : 選擇/取消--勾選請選擇:Babel、Router、CSS、Linterstep-2:
關于 history 模式:不選擇啟用step-3:選擇啟用 Lessstep-4:選擇使用"無分號規范"——ESLint + Standard configstep-5:選擇 Lint on savestep-6:選擇"In dedicated config files" 將配置文件放在單獨文件中step-7:Save this as a preset for future projects? (選擇 no)

ESlint 代碼規范

代碼規范:一套寫代碼的約定規則

規范的作用:正規的團隊需要統一的編碼風格

JavaScript Standard Style 規范說明:https://standardjs.com/rules-zhcn.html

代碼不規范的解決方案:

  • 手動修正:根據命令行的語法報錯提示去修改
  • 自動修正:借助 vscode 插件 ESLint 高亮錯誤,并通過一些配置,實現自動幫助我們修復錯誤

認識 vuex

介紹

vuex 是一個 vue 的狀態管理工具(插件),狀態就是數據,它可以幫助我們管理 vue 通用的數據(多組件共享的數據)

場景

多個組件共同維護一份數據(購物車)

優勢

  • 共同維護一份數據,數據集中化管理
  • 響應式變化
  • 操作簡潔(vuex 提供了一些輔助函數)

其他

state		倉庫,用來存放數據
mutations	修改,用來修改數據
actions		異步,用力管理異步
getters		獲取,用來篩選結果

state

// 這里面存放的就是vuex相關的核心代碼
import Vue from 'vue'
import Vuex from 'vuex'// 插件安裝
Vue.use(Vuex)// 創建倉庫
const store = new Vuex.store({// 通過 state 可以提供數據(所有組件共享這一份數據)state: {title: '大標題',count: 100}
})// 導出給main.js使用
export default store
import Vue from 'vue'
import App from './App.vue'
import store from '@store/index'Vue.config.productionTip = falsenew Vue({render: h => h(App),store
}).$mount('#app')
<template><div>{{ $store.state.title }}</div>
</template>

mutations

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)// 創建倉庫
const store = new Vuex.store({// 嚴格模式(有利于初學者,檢測不規范的代碼)strict:true,// 1. 通過 state 可以提供數據state: {title: '大標題',count: 100}// 2. 通過 mutations 可以提供修改數據的方法mutations: {// 所有 mutation 函數,第一個參數,都是 stateaddCount (state, n) {// 修改數據state.count += n},changeTitle (state) {state.title = '臨時標題'}}
})// 導出給main.js使用
export default store
<template><div><button @click="handleAdd(1)">值 + 1</button><button @click="handleAdd(5)">值 + 5</button><button @click="handleTitle">改變標題</button></div>
</template><script>export default {name: 'test',methods: {handleAdd (n) {this.$store.commit('addCount', n)},handleTitle () {this.$store.commit('changeTitle')}}}
</script>

mapMutations

mutations: {subCount (state, n) {state.count -= n}
}
import mapMutations from 'vuex'methods: {subCount (n) {this.$store.commit('subCount', n)}
}// 上面的代碼等價于下面的methods: {...mapMutaions(['subCount'])
}
this.subCount(10)	// 調用

actions

mutations: {changeCount (state, newCount) {state.count = newCount}
}
action: {setAsyncCount(context, res) {// 這里是用setTimeout模擬異步,以后大部分場景是"發送請求"setTimeout(() => {context.commit('changeCount', res)}, 1000)}
}
this.$store.dispatch('setAsyncCount', 200)

mapActions

actions: {changeCountAction (context, num) {setTimeout(() => {context.commit('changeCount', num)}, 1000)}
}
import mapActions from 'vuex'methods: {changeCountAction (n) {this.$store.dispatch('changeCountAction', n)}
}// 上面的代碼等價于下面的methods: {...mapActions(['changeCountAction'])
}
this.changeCountAction(666)		// 調用

getters

state: {list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
getters: {filterList (state) {								// 形參第一個參數必須是statereturn state.list.filter(item => item > 5)		// 必須要有返回值}
}
<div>{{ $store.state.list }}</div>				<!-- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -->
<div>{{ $store.getters.filterList }}</div>		<!-- [6, 7, 8, 9, 10] -->

vuex 模塊化

出現的問題

由于 vuex 使用單一狀態樹,應用的所有狀態會集中到一個比較大的對象
當應用變得非常復雜時,store 對象就有可能變得相當臃腫
即:當項目變得越來越大的時候,vuex 會變得越來越難以維護

解決的辦法

在這里插入圖片描述

使用模塊化管理,在 store/modules 文件夾下創建你需要的模塊,例如:

  • store/modules/user.js
const state = {userInfo: {name: 'zs',age: 18},score: 80
}
const mutations = {}
const actions = {}
const getters = {}export default {namespaced: true,state,mutations,actions,getters
}

在 store/index.js 文件里使用你創建的模塊

  • store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'Vue.use(Vuex)const store = new Vuex.Store({strict: true,state: {},getters: {},mutations: {},actions: {},// 使用模塊modules: {user,}
})export default store

訪問方式

  • 方式一
<div>{{ $store.state.user.userInfo.name }}</div>
  • 方式二
<script>
import { mapState } from "map";
export default {computed: {...mapState(["user"]),...mapState("user", ["userInfo"]),},
};
</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711655.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711655.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711655.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索K8S的絕佳選擇:Killercoda與Play-with-K8s在線練習平臺

大家好&#xff0c;近年來Kubernetes&#xff08;K8S&#xff09;作為容器編排的瑞士軍刀&#xff0c;已經成為云原生技術的代表之一。學習K8S是現代云計算領域不可或缺的一部分&#xff0c;但很多人可能面臨一個問題——如何高效地學習K8S&#xff0c;尤其是缺乏實踐環境的初學…

藍橋杯 子矩陣 (找大小為a*b的矩陣的最大最小值的乘積,queue)

題目鏈接 &#xff1a; https://www.lanqiao.cn/problems/3521/learning/?subject_code1&group_code3&match_num14&match_flow1&origincup 思想 &#xff1a; 用堆維護最大值最小值即可 暴力實現 復雜度 N^2 * log(N^2) 代碼&#xff1a; #include<bit…

Vue3修改Element-plus語言與項目國際化

修改Element-plus默認語言 Element-plus默認語言是英語&#xff0c;可修改為其它語言&#xff1b; 此處 Element-plus 為自動按需導入方式配置&#xff1b; 更多導入方式&#xff1a;Vue3使用Element-plus-CSDN博客 全局配置默認語言參考&#xff1a;國際化 | Element Plus 統一…

文件對比工具Beyond Compare 4 mac v4.4.7(28397)中文版

Beyond Compare是一款適用于Windows、Mac OS X和Linux平臺的文件和文件夾比較工具。它可以幫助用戶比較和同步文件夾、文件和壓縮包等內容&#xff0c;支持多種文件格式&#xff0c;如文本、圖像、音頻、視頻等。 軟件下載&#xff1a;Beyond Compare 4 mac v4.4.7(28397)中文版…

Kafka中的acks機制——一次由錯誤資料引發的源碼學習

前言 這次的學習過程來歷有點奇怪。我本來是學習kafka過程中正常的學到了這個acks機制&#xff0c;但是發現很多地方寫的都不太明白。因此決定還是自己來看一下源碼。 具體來說&#xff1a;請看搜索結果&#xff08;Google引擎&#xff09; 這個是搜索“Kafka的ack”所得到的…

Excel中使用ROW函數自動更新行號或編號

操作步驟&#xff1a; 1、在編號“1”的單元格輸入公式“ROW()-1”&#xff1b; 2、在上一步填好公式的單元格基礎上下拉填充&#xff0c;即可批量得到編號&#xff0c;如果刪掉其中的一行或幾行&#xff0c;編號會自動進行更新。

數組與list的轉化分析

一、相互轉換的方法 1. 數組轉List &#xff0c;使用JDK中java.util.Arrays工具類的asList方法。 2. List轉數組&#xff0c;使用List的toArray方法。無參toArray方法返回 Object數組&#xff0c;傳入初始化長度的數組對象&#xff0c;返回該對象數組。 二、分析修改內容的影響…

在 Rust 中實現 TCP : 1. 聯通內核與用戶空間的橋梁

內核-用戶空間鴻溝 構建自己的 TCP棧是一項極具挑戰的任務。通常&#xff0c;當用戶空間應用程序需要互聯網連接時&#xff0c;它們會調用操作系統內核提供的高級 API。這些 API 幫助應用程序 連接網絡創建、發送和接收數據&#xff0c;從而消除了直接處理原始數據包的復雜性。…

【教3妹學編程-算法題】標記所有下標的最早秒數 II

3妹&#xff1a;2哥2哥&#xff0c;你有沒有看到上海女老師出軌男學生的瓜啊。 2哥 : 看到 了&#xff0c;真的是太毀三觀了&#xff01; 3妹&#xff1a;是啊&#xff0c; 老師本是教書育人的職業&#xff0c;明確規定不能和學生談戀愛啊&#xff0c;更何況是出軌。 2哥 : 是啊…

shell 免交互ecxept樣例

語法 expect [選項] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 選項 -c&#xff1a;從命令行執行expect腳本&#xff0c;默認expect是交互地執行的 示例&#xff1a;expect -c expect "\n" {send "pressed enter\n"} -d&#xff1a;輸出調試信息 …

【Qt學習】QTextEdit 與 QComboBox 的 屬性與實例(槽函數的使用、讀取本機內容到控件)

文章目錄 1. QTextEdit2.1 介紹2.2 實例使用 - 槽函數的使用 2. QComboBox2.1 介紹2.2 實例使用案例1&#xff1a;設置下拉框項目組件的方式案例2&#xff1a;讀取本機文件內容 到QComboBox 1. QTextEdit 2.1 介紹 我們可以查閱官方文檔&#xff0c;對QTextEdit 有更深的了解&…

源碼安裝nginx保姆級教程

一.目錄存放 1./usr/lib/syste,md/system/:每個服務最主要的啟動腳本設定 2. /run/systemd/system/&#xff1a;系統執行過程中所產生的服務腳本&#xff0c;這些腳本的優先序要比 /usr/lib/systemd/system/ 高&#xff01; 3./etc/systemd/system/&#xff1a;管…

【java 基礎】閑話 ClassLoader 和 SPI (一)

文章目錄 引子雙親委派模型你真的明白了嗎&#xff1f; 雙親委派“不夠用了”SPI機制 其他瑣碎 引子 有別于 java 提供的 IO 模塊&#xff0c;java 中的classloader主要是用來加載類的&#xff0c;當然除了加載類&#xff0c;也可以加載資源文件。 那么首先我們會問一個問題&…

java基礎 - 14 Java的Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque

Java 中的 Deque&#xff08;雙端隊列&#xff09;是一種具有隊列和棧特性的數據結構&#xff0c;它允許在兩端進行插入和刪除操作。Deque 接口是 Java 集合框架中的一部分&#xff0c;它定義了雙端隊列的基本操作。 BlockingDeque 接口&#xff1a; BlockingDeque 接口是 Deq…

docker搭建git服務器

1、docker搭建git服務器 總體思路&#xff1a;服務端通過docker搭建git服務器&#xff0c;客戶端創建git的賬戶及公鑰密鑰&#xff1b; 1&#xff09;服務端# 創建容器 # --privileged 獲得完整的root權限 # /usr/sbin/init 啟動容器執行的第一個命令 以便可以使用systemctl命…

2024年FPGA可以進嗎

2024年&#xff0c;IC設計FPGA行業仍有可能是一個極具吸引力和活力的行業&#xff0c;主要原因包括&#xff1a; 1. 技術發展趨勢&#xff1a;隨著5G、人工智能、物聯網、自動駕駛、云計算等高新技術的快速發展和廣泛應用&#xff0c;對集成電路尤其是高性能、低功耗、定制化芯…

【UE 材質】制作加載圖案(2)

在上一篇&#xff08;【UE 材質】制作加載圖案&#xff09;基礎上繼續實現如下效果的加載圖案 效果 步驟 1. 復制一份上一篇制作的材質并打開 2. 添加“Floor”節點向下取整 除相同的平鋪數 此時的效果如下 刪除如下節點 通過“Ceil”向上取整&#xff0c;參數“Tiling”默認…

教師招聘和事業編d類有什么區別嗎

每年都有大批懷揣教育夢想的年輕人&#xff0c;站在職業的十字路口&#xff0c;對未來充滿期許與疑惑。他們中的許多人都會面臨這樣一個問題&#xff1a;教師招聘和事業編D類&#xff0c;到底有什么區別&#xff1f;今天&#xff0c;就讓我來為你揭開這兩者的神秘面紗。 別被這…

【大數據】Flink SQL 語法篇(五):Regular Join、Interval Join

《Flink SQL 語法篇》系列&#xff0c;共包含以下 10 篇文章&#xff1a; Flink SQL 語法篇&#xff08;一&#xff09;&#xff1a;CREATEFlink SQL 語法篇&#xff08;二&#xff09;&#xff1a;WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 語法篇&#xff08;三&…

ubuntu系統下大數據服務器磁盤調優測試記錄

一、背景 在kvm虛擬機ubuntu操作系統大數據平臺測試的過程中&#xff0c;遭遇了磁盤I/O性能的瓶頸&#xff0c;因有cpu綁核操作&#xff0c;故有做隔核操作驗證是否是綁核影響的磁盤I/O&#xff0c;后又對磁盤進行透傳以及掛內存盤等操作&#xff1b; 二、磁盤介紹 2.1 磁盤…