Vue.js條件渲染與列表渲染指南


title: Vue.js條件渲染與列表渲染指南
date: 2024/5/26 20:11:49
updated: 2024/5/26 20:11:49
categories:

  • 前端開發

tags:

  • VueJS
  • 前端開發
  • 數據綁定
  • 列表渲染
  • 狀態管理
  • 路由配置
  • 性能優化

在這里插入圖片描述

第1章:Vue.js基礎與環境設置

1.1 Vue.js簡介

Vue.js (讀音:/vju?/,類似于 “view”) 是一套用于構建用戶界面的漸進式JavaScript框架。與其他大型框架不同的是,Vue.js
被設計為可以自底向上逐層應用。這意味著,你可以在一個大型的單頁應用中或者可復用的組件庫中使用 Vue,同時也可以將 Vue
用于簡單的頁面級別的交互。

Vue.js的核心庫只關注視圖層,不包含任何其他功能,這讓它比其他大型框架更加輕量級、易用。如果需要,你還可以使用 Vue.js
生態系統中的一系列高質量的可選工具和庫,例如 vue-router、vuex、vue-resource等。

1.2 安裝與配置

1.2.1 使用 CDN 加載

將以下代碼添加到你的 HTML 中:

<!DOCTYPE html>
<html>
<head><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">{{ message }}
</div>
<script>new Vue({el: '#app',data: {message: 'Hello Vue!'}})
</script>
</body>
</html>
1.2.2 使用 npm 安裝

首先,需要安裝 Node.js 和 npm。確保已安裝最新版本,可以從Node.js 官方網站下載。

接下來,在終端中執行以下命令:

npm install -g @vue/cli

創建一個新項目:

vue create my-project

選擇 “Manually select features”,然后選擇 “Vue 3” 和 “Router”,最后選擇 “In dedicated config files” 以進行更細粒度的配置。

1.3 Vue的核心概念:組件、數據綁定與響應式系統

1.3.1 組件

組件是 Vue.js 最強大的功能之一。組件可以擴展 HTML 元素,帶有數據、邏輯和方法等,也可以在不同的組件中復用。

在 Vue.js 中,每個 Vue 實例都是一個組件,可以通過el選項,將它們安裝到 DOM 上。

1.3.2 數據綁定

數據綁定是 Vue.js 的核心功能之一。在 Vue.js 中,數據綁定可以用{{ }}標簽或 v-bind 指令來實現。


<div id="app"><p v-bind:title="message">鼠標懸停幾秒鐘查看此處動態綁定的提示信息!</p><p>{{ message }}</p>
</div>
<script>new Vue({el: '#app',data: {message: '頁面加載于 ' + new Date().toLocaleString()}})
</script>
1.3.3 響應式系統

Vue.js 的響應式系統會在數據變化時,自動更新 DOM。這意味著,你可以在 Vue.js 中,將數據綁定到模板中,當數據發生變化時,模板會自動更新。

<div id="app">{{ message }}
</div>
<script>new Vue({el: '#app',data: {message: 'Hello Vue.js!'}})
</script>

在這個示例中,當你更改message的值時,視圖會自動更新。

第2章:條件渲染基礎

2.1 v-if與v-show

Vue.js 提供了兩種條件渲染的方法:v-ifv-show

v-if是“真正”的條件渲染,因為它會在條件不滿足時完全刪除 DOM 元素。

v-show只是簡單地切換 CSS 屬性display

v-if也是“惰性”的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變為真時,才會開始渲染條件塊。

v-if也是可以與v-elsev-else-if一起使用的:

<div id="app"><p v-if="Math.random() > 0.5">這是一個隨機數大于 0.5 的段落。</p><p v-else>這是一個隨機數小于 0.5 的段落。</p>
</div>

2.2 邏輯運算符與三元表達式

Vue.js 支持使用 JavaScript 中的所有邏輯運算符:!&&||
AD:漫畫首頁

<div id="app"><p v-if="type === 'A'">這是類型為 A 的段落。</p><p v-else-if="type === 'B'">這是類型為 B 的段落。</p><p v-else>這是類型不是 A 或 B 的段落。</p>
</div>

你也可以使用三元表達式:

<div id="app">{{ message.length > 0 ? message : '沒有消息' }}
</div>

2.3 computed屬性與條件渲染

computed屬性是 Vue.js 中的一個計算屬性,可以用于條件渲染中。

<div id="app"><p v-if="isEven">{{ message }} 是偶數。</p><p v-else>{{ message }} 是奇數。</p>
</div>
<script>new Vue({el: '#app',data: {message: 10},computed: {isEven: function () {return this.message % 2 === 0}}})
</script>

2.4 遞歸組件與列表條件渲染

在 Vue.js 中,可以使用name選項來遞歸組件。

<div id="app"><tree :data="data"></tree>
</div>
<script>Vue.component('tree', {template: `<ul><li v-for="(item, index) in data" :key="index">{{ item.name }}<tree v-if="item.children" :data="item.children"></tree></li></ul>`,props: {data: {type: Array,required: true}}})new Vue({el: '#app',data: {data: [{name: 'A',children: [{name: 'A1'},{name: 'A2',children: [{name: 'A2-1'},{name: 'A2-2'}]}]},{name: 'B'},{name: 'C'}]}})
</script>

在這個示例中,我們使用了v-for指令來渲染列表,并使用了遞歸組件tree來渲染樹結構。

第3章:列表渲染與循環

3.1 v-for指令

v-for指令是 Vue.js 中用于渲染列表的常用指令。它基于一個數組或者對象來重復渲染一個模板。基本的語法是:

<template v-for="item in items"><!-- 模板內容 -->
</template>

這里,items是一個數組或者對象,item是當前迭代的元素。

3.2 動態列表與響應式數組

在 Vue 中,列表渲染不僅僅是靜態的,它還可以是動態的。這意味著,當源數據發生變化時,Vue 可以自動更新渲染的列表。這是通過響應式系統實現的,Vue
會對數組的變化做出追蹤,并更新 DOM。

3.3 key屬性的重要性

在使用v-for渲染列表時,推薦為每個列表項設置一個唯一的key屬性。這有助于 Vue
追蹤每個節點的身份,從而重用和重新排序現有元素。如果沒有key,Vue 會默認使用元素的index作為其身份標識,這可能在列表排序或數據更新時導致問題。

3.4 具有復雜條件的列表渲染

有時候,我們可能需要根據復雜的條件來渲染列表。Vue.js 允許我們通過在模板中使用三元表達式或計算屬性來處理這些情況。

例如,我們可以使用計算屬性來確定是否應該渲染某個列表項:

<ul><li v-for="(item, index) in items" :key="index">{{ item.name }}<!-- 使用計算屬性來判斷是否顯示子列表 --><ul v-if="shouldShowChildren(item)"><li v-for="child in item.children" :key="child.id">{{ child.name }}</li></ul></li>
</ul>

在這個例子中,shouldShowChildren是一個計算屬性,它根據item的某些條件來決定是否渲染子列表。

第4章:動態數據綁定與響應式更新

4.1 動態綁定與自定義指令

Vue.js 的核心特性之一就是它的動態數據綁定。開發者可以使用v-bind指令或簡寫:
來動態地將數據綁定到視圖上的元素上。這種綁定是單向的,即從數據模型到視圖。但是,有時候我們需要更復雜的綁定,比如雙向數據綁定或自定義行為。這時,我們可以使用自定義指令。

自定義指令允許我們定義自己的 HTML 屬性,它們可以有 own watcher,可以被鏈式調用,并且可以訪問組件的context

4.2 數據劫持與深度監聽

Vue.js 通過數據劫持(或稱響應式系統)來實現數據的自動更新。在 Vue 2 中,這是通過 Object.defineProperty 實現的,而在 Vue 3
中,則是使用 Proxy 對象。數據劫持允許 Vue 追蹤數據的變化,當數據變化時,視圖可以自動更新。

深度監聽是指 Vue 是否應該監聽對象內部屬性的變化。在 Vue 2 中,默認情況下,Vue 不會深度監聽嵌套對象的變化。但是,在 Vue 3
中,深度監聽是默認開啟的。

4.3 數據變化檢測的策略

Vue.js 使用了多種策略來檢測數據的變化。其中包括:

  1. 直接偵聽器(Direct偵聽器) :這是最基礎的偵聽器,它會對基礎數據類型(如 number、string、boolean)進行偵聽。
  2. 對象偵聽器(Object偵聽器) :對于對象類型的數據,Vue 會使用一個代理對象來偵聽對象的變化。
  3. 數組偵聽器(Array偵聽器) :對于數組類型的數據,Vue 會使用一個“重排”策略來偵聽數組的變化。這是因為數組的變化可能是通過索引來進行的,而不是通過對象屬性的方式。
  4. 函數偵聽器(Function偵聽器) :對于函數類型的數據,Vue 會偵聽其字符串值的變化。

這些策略共同工作,確保了 Vue 能夠準確地檢測到數據的變化,并相應地更新視圖。

第5章:數組操作與列表管理

5.1 數組方法的應用

在Vue.js中,數組是常用的數據結構,用于存儲和展示列表數據。Vue.js提供了一些數組方法,可以方便地對數組進行操作,例如pushpopshiftunshiftsplice
等。這些方法可以用于添加、刪除、修改和查詢數組元素,是實現列表管理的重要工具。

5.2 push、pop、shift與unshift

  • push方法:可以在數組的末尾添加一個或多個元素,并返回數組的新長度。
  • pop方法:可以刪除數組的最后一個元素,并返回該元素的值。
  • shift方法:可以刪除數組的第一個元素,并返回該元素的值。
  • unshift方法:可以在數組的開頭添加一個或多個元素,并返回數組的新長度。

在使用這些方法時,需要注意以下幾點:

  • push方法和unshift方法可以添加多個元素,元素之間用逗號分隔。
  • pop方法和shift方法只能刪除一個元素,不能刪除多個元素。
  • pop方法和shift方法會改變數組的長度,而push方法和unshift方法不會改變數組的長度。

5.3 splice與數組切片

  • splice方法:可以刪除、替換或添加數組元素,并返回被刪除的元素組成的數組。
  • slice方法:可以返回數組的一個切片,即從原數組中選取一部分元素組成的新數組。

在使用這些方法時,需要注意以下幾點:

  • splice方法可以接收多個參數,第一個參數表示要刪除或替換的元素的起始位置,第二個參數表示要刪除的元素的數量,后面的參數表示要添加的元素。
  • slice方法可以接收兩個參數,第一個參數表示要選取的元素的起始位置,第二個參數表示要選取的元素的結束位置(不包括該位置的元素)。
  • splice方法會改變原數組,而slice方法不會改變原數組。

5.4 分頁與懶加載策略

在Vue.js中,分頁和懶加載是常用的列表管理策略。分頁可以將大量數據分成多個頁面展示,提高用戶體驗和性能。懶加載可以在用戶滾動頁面時動態加載數據,減少頁面加載時間和流量消耗。

在使用分頁和懶加載時,需要注意以下幾點:

  • 分頁可以使用v-for指令和計算屬性實現,計算屬性可以根據當前頁碼和每頁顯示的數據量計算出要展示的數據。
  • 懶加載可以使用Intersection Observer API實現,該API可以在元素進入視口時觸發回調函數,可以在回調函數中加載數據。
  • 分頁和懶加載都需要考慮數據的緩存和去重,避免重復加載和展示相同的數據。

第6章:列表渲染進階:虛擬DOM與性能優化

6.1 虛擬DOM的原理

虛擬DOM是Vue.js中使用的一種技術,用于優化列表渲染的性能。虛擬DOM是一個輕量級的JavaScript對象,可以表示一個DOM節點,包含節點的類型、屬性和子節點。

虛擬DOM的優勢在于可以在內存中進行Diff操作,比較新舊虛擬DOM的差異,并生成最小化的DOM更新操作。這樣可以減少不必要的DOM操作,提高列表渲染的性能。

6.2 性能優化技巧

在使用虛擬DOM時,可以使用以下技巧進行性能優化:

  • 使用key屬性:可以使用key屬性來標識列表中的每個項,可以提高Diff操作的性能。
  • 使用v-show指令:可以使用v-show指令來控制元素的顯示和隱藏,可以避免不必要的DOM操作。
  • 使用v-ifv-for指令:可以使用v-ifv-for指令來控制元素的渲染,可以避免不必要的渲染操作。
  • 使用v-once指令:可以使用v-once指令來標記元素的不可變性,可以避免不必要的更新操作。

6.3 ref與$refs的使用

在Vue.js中,可以使用ref屬性來獲取元素的引用,可以用于操作元素的屬性和方法。可以在模板中使用ref
屬性來為元素添加一個引用,可以在組件的方法中使用this.$refs來獲取元素的引用。

示例代碼:

<template><div><input type="text" ref="input"><button @click="handleClick">點擊</button></div>
</template><script>
export default {methods: {handleClick() {this.$refs.input.focus();}}
}
</script>

在上面的示例代碼中,使用ref屬性為輸入框添加了一個引用,可以在點擊按鈕時調用輸入框的focus方法。

6.4 虛擬列表與列表渲染性能提升

在Vue.js中,可以使用虛擬列表來優化列表渲染的性能。虛擬列表可以將大量數據分成多個頁面展示,并僅渲染可見部分的數據,可以減少不必要的渲染操作,提高列表渲染的性能。

可以使用v-for
指令和計算屬性來實現虛擬列表,計算屬性可以根據當前頁碼和每頁顯示的數據量計算出要展示的數據。可以使用Intersection Observer API
來監聽元素的可見性,可以在元素進入視口時加載數據。

示例代碼:

<template><div><ul><li v-for="(item, index) in visibleData" :key="index">{{ item }}</li></ul><button @click="handleClick">加載更多</button></div>
</template><script>
import { IntersectionObserver } from 'intersection-observer';export default {data() {return {data: [],pageSize: 10,pageIndex: 1,observer: null};},computed: {visibleData() {return this.data.slice((this.pageIndex - 1) * this.pageSize, this.pageIndex * this.pageSize);}},mounted() {this.observer = new IntersectionObserver(entries => {if (entries[0].isIntersecting) {this.pageIndex++;}});this.observer.observe(this.$refs.observer);},methods: {handleClick() {this.pageIndex++;}}
}
</script>

在上面的示例代碼中,使用v-for指令和計算屬性來實現虛擬列表,可以在點擊按鈕時加載更多數據。使用Intersection Observer API
來監聽元素的可見性,可以在元素進入視口時加載數據。

第7章:Vue Router與列表狀態管理

7.1 Vue Router集成

Vue Router是Vue.js的官方路由器,可以用于實現單頁應用(SPA)的導航和路由。可以在Vue.js中使用Vue Router來管理組件之間的跳轉和傳參。

可以使用vue-router包來安裝Vue Router,可以在main.js中進行路由器的配置,可以使用router-linkrouter-view
組件來實現組件之間的跳轉和渲染。

示例代碼:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './components/Home.vue';
import About from './components/About.vue';Vue.use(VueRouter);const router = new VueRouter({routes: [{ path: '/', component: Home },{ path: '/about', component: About }]
});new Vue({router,render: h => h(App)
}).$mount('#app');

在上面的示例代碼中,使用vue-router包來安裝Vue Router,并在main.js中進行路由器的配置。使用router-linkrouter-view
組件來實現組件之間的跳轉和渲染。

7.2 狀態管理:Vuex簡介

Vuex是Vue.js的官方狀態管理庫,可以用于管理組件之間的共享狀態。可以使用Vuex來實現單向數據流,可以避免組件之間的耦合,提高組件的可重用性。

可以使用vuex包來安裝Vuex,可以在store.js中進行狀態管理的配置,可以使用mapStatemapMutations等輔助函數來在組件中使用狀態和操作。

示例代碼:

import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++;}}
});export default store;

在上面的示例代碼中,使用vuex包來安裝Vuex,并在store.js中進行狀態管理的配置。使用mapStatemapMutations
等輔助函數來在組件中使用狀態和操作。

7.3 狀態管理在列表渲染中的應用

在列表渲染中,可以使用狀態管理來管理列表的狀態,可以避免在多個組件中重復的狀態管理,提高組件的可重用性。

可以在Vuex中創建一個list模塊,可以在模塊中維護一個list數組,可以在模塊中創建一個addItem操作,可以在組件中調用操作來添加列表項。

示例代碼:

// store.js
import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);const store = new Vuex.Store({modules: {list: {state: {list: []},mutations: {addItem(state, item) {state.list.push(item);}}}}
});export default store;// List.vue
<template><div><input type="text" v-model="item"><button @click="addItem">添加</button><ul><li v-for="(item, index) in list" :key="index">{{ item }}</li></ul></div>
</template><script>
import { mapMutations } from 'vuex';export default {data() {return {item: ''};},computed: {list() {return this.$store.state.list.list;}},methods: {...mapMutations('list', ['addItem']),addItem() {this.addItem(this.item);this.item = '';}}
};
</script>

在上面的示例代碼中,使用Vuex中的modules來創建一個list模塊,可以在模塊中維護一個list
數組,可以在模塊中創建一個addItem操作,可以在組件中調用操作來添加列表項。使用mapMutations輔助函數來調用操作。

第8章:復雜場景實戰

8.1 表單驗證與條件渲染

在實際開發中,表單驗證是一個常見的功能。可以使用Vue的表單綁定和計算屬性來實現表單驗證。也可以使用第三方庫如VeeValidate來進行表單驗證。

條件渲染可以使用Vue的v-ifv-else-ifv-else指令來實現,可以根據條件來顯示不同的內容。

示例代碼:

<template><div><form @submit.prevent="submitForm"><input v-model="form.name" placeholder="姓名"><input type="email" v-model="form.email" placeholder="郵箱"><button type="submit">提交</button></form><p v-if="error">{{ errorMessage }}</p></div>
</template><script>
export default {data() {return {form: {name: '',email: ''},error: false,errorMessage: ''};},computed: {emailValid() {const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;return regex.test(this.form.email);}},methods: {submitForm() {if (this.form.name === '' || !this.emailValid) {this.error = true;if (this.form.name === '') {this.errorMessage = '姓名不能為空';} else {this.errorMessage = '郵箱格式不正確';}} else {// 表單驗證通過,處理提交邏輯alert('表單提交成功');}}}
};
</script>

在上面的示例代碼中,使用v-model來綁定表單輸入框的數據,使用computed屬性emailValid來驗證郵箱格式。在submitForm
方法中進行表單驗證,如果驗證失敗,則顯示錯誤信息。

8.2 動態表格操作與數據綁定

在Vue中,可以使用v-for指令來渲染動態表格,使用v-model來綁定表格的數據。也可以使用第三方庫如ElementUI的表格組件來簡化表格操作。

示例代碼:

<template><div><table><thead><tr><th>姓名</th><th>年齡</th><th>操作</th></tr></thead><tbody><tr v-for="(item, index) in tableData" :key="index"><td>{{ item.name }}</td><td>{{ item.age }}</td><td><button @click="deleteItem(index)">刪除</button></td></tr></tbody></table></div>
</template><script>
export default {data() {return {tableData: [{ name: '張三', age: 25 },{ name: '李四', age: 30 }]};},methods: {deleteItem(index) {this.tableData.splice(index, 1);}}
};
</script>

在上面的示例代碼中,使用v-for指令來渲染動態表格,使用v-model來綁定表格的數據。在deleteItem方法中刪除表格中的一行數據。

8.3 網絡請求與列表更新

在實際應用中,經常需要從服務器獲取數據并更新列表。可以使用Vue的created鉤子來發送網絡請求,使用methods來處理請求結果。

示例代碼:

<template><div><ul><li v-for="item in items" :key="item.id">{{ item.name }}
</li></ul><button @click="loadData">加載更多</button></div>
</template><script>
export default {data() {return {items: [],page: 1,pageSize: 10};},methods: {async loadData() {try {const response = await axios.get('/api/items', {params: {page: this.page,pageSize: this.pageSize}});this.items = response.data;this.page++;} catch (error) {console.error('加載數據失敗:', error);}}},created() {this.loadData();}
};
</script>

在上面的代碼中,loadData方法使用axios發送GET請求獲取更多數據,然后更新items數據。created
鉤子在組件創建時立即調用loadData獲取初始數據。

8.4 組件化與列表渲染的高級應用

Vue組件化可以讓你將復用的代碼塊封裝成獨立的可重用組件。對于列表渲染,可以創建一個通用的列表組件,接受數據源作為參數,并使用v-for
進行渲染。 AD:首頁 | 一個覆蓋廣泛主題工具的高效在線平臺

通用列表組件示例:

<template><ul><li v-for="item in items" :key="item.id">{{ item.name }}</li></ul>
</template><script>
export default {props: {items: {type: Array,required: true}}
};
</script>

在父組件中使用:

<template><div><list-component :items="itemsList" /></div>
</template><script>
import ListComponent from './ListComponent.vue';export default {components: {ListComponent},data() {return {itemsList: [{ id: 1, name: '張三' },{ id: 2, name: '李四' }]};}
};
</script>

這樣,ListComponent可以復用在多個地方,只需要傳入不同的數據源即可。

第9章:測試與調試

9.1 單元測試與Vue Test Utils

單元測試是確保代碼質量和可維護性的關鍵部分。Vue Test Utils 是 Vue.js 官方提供的單元測試實用工具庫,它允許你以簡單直觀的方式測試
Vue 組件。

安裝 Vue Test Utils

npm install --save-dev @vue/test-utils

基本使用示例

import { shallowMount } from '@vue/test-utils';
import MyComponent from '@/components/MyComponent.vue';describe('MyComponent', () => {it('renders correctly', () => {const wrapper = shallowMount(MyComponent);expect(wrapper.text()).toContain('Hello Vue Test Utils');});
});

在這個例子中,我們使用shallowMount創建了一個組件的淺渲染實例,并檢查其文本內容是否包含預期的字符串。

9.2 E2E測試與Cypress

端到端(E2E)測試是從用戶的角度出發,測試整個應用程序的功能。Cypress 是一個流行的 E2E 測試框架,它提供了易于使用的 API
和強大的調試工具。

安裝 Cypress

npm install --save-dev cypress

基本使用示例

describe('My Vue.js App', () => {it('Visits the app root url', () => {cy.visit('/');cy.contains('Welcome to Your Vue.js App');});
});

在這個例子中,我們訪問應用程序的主頁,并檢查頁面中是否包含特定的文本。

9.3 Vue Devtools的使用

Vue Devtools 是一個瀏覽器擴展,用于調試 Vue 應用程序。它允許你檢查組件層次結構、觀察狀態變化、查看事件日志等。

安裝 Vue Devtools

  • 在 Chrome 或 Firefox 中,可以通過擴展商店安裝 Vue Devtools。

基本使用

  • 打開瀏覽器的開發者工具,切換到 Vue 標簽頁,即可開始使用。

9.4 調試技巧與性能分析

調試 Vue 應用程序時,除了使用 Vue Devtools,還可以使用以下技巧:

  • 使用console.log和斷點:在代碼中插入console.log語句或使用瀏覽器的斷點功能來跟蹤變量的值和程序流程。
  • 使用 Vue 的errorCaptured鉤子:這個鉤子可以捕獲子組件的錯誤,有助于定位問題。

性能分析:

  • 使用 Chrome DevTools 的 Performance 面板:它可以記錄和分析應用程序的性能,幫助你找到瓶頸。
  • 使用 Vue 的vue-loader插件:如vue-loadercache-loaderhard-source-webpack-plugin,可以提高構建性能。

第10章:總結與進階

10.1 深入學習與資源推薦

  • 深入學習:對于想要進一步提升的讀者,本節可能會引導他們探索Vue的高級特性,如Vuex狀態管理、Vue Router路由管理、服務端渲染、SSR等。

  • 資源推薦:提供一些官方文檔、教程、書籍、博客、視頻課程等資源,幫助讀者在特定領域深化學習:

    • Vue.js官方文檔:https://vuejs.org/v2/guide/
    • AD:專業搜索引擎
    • Vue Mastery(付費課程):https://www.vuemastery.com/
    • Vue.js中文網:https://cn.vuejs.org/
  • 框架擴展:提及如何使用Vue的插件生態系統,如Element UI、Vuetify等。

10.2 問題解答與社區交流

  • 常見問題解答:總結并解答在學習過程中可能遇到的常見問題,如安裝問題、配置問題、性能優化等。

  • 社區交流

    推薦GitHub上的官方Vue.js倉庫(https://github.com/vuejs/vue)和問題跟蹤(https://github.com/vuejs/vue-next/issues)。

    • 強調Stack
      Overflow(https://stackoverflow.com/questions/tagged/vue.js)和中文版的Vue.js開發者社區(如CNode.js、掘金等)是尋找解決方案和交流的好地方。
    • 鼓勵讀者積極參與開源社區,貢獻代碼和分享經驗。

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

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

相關文章

SwiftUI中的Slider的基本使用

在SwiftUI中&#xff0c;可以使用Slider視圖創建一個滑動條&#xff0c;允許用戶從范圍中選擇一個值。通過系統提供的Slider&#xff0c;用起來也很方便。 Slider 先看一個最簡單的初始化方法&#xff1a; State private var sliderValue: Float 100var body: some View {V…

[AIGC] mac os 中 .DS_Store 是什么

.DS_Store 是在 MacOS 系統中由 Finder 應用程序創建和維護的一種隱藏文件&#xff0c;用于保存有關其所在目錄的自定義屬性&#xff0c;例如圖標位置或背景顏色。 “.DS_Store” 是 “Desktop Services Store” 的縮寫。 .DS_Store 的作用 .DS_Store 文件在每個 Mac OS X 文…

ollama 使用,以及指定模型下載地址

ollama windows 使用 官網&#xff1a; https://ollama.com/ windows 指定 models 下載地址 默認會下載在C盤 &#xff0c;占用空間 在Windows系統中&#xff0c;可以通過設置環境變量OLLAMA_MODELS來指定模型文件的下載和存儲路徑。具體操作步驟如下&#xff1a; 1.打開系統…

【python006】miniconda3環境搭建(非root目錄,最近更新中)

1.熟悉、梳理、總結項目研發實戰中的Python開發日常使用中的問題。 2.歡迎點贊、關注、批評、指正&#xff0c;互三走起來&#xff0c;小手動起來&#xff01; 文章目錄 1.背景介紹2. 1.背景介紹 環境移植&#xff0c;可能影響部署本機環境信息&#xff0c;探索、總結移植有效…

輕量化微調相關學習

輕量化微調&#xff08;Lightweight Fine-Tuning&#xff09;是指在大型預訓練模型基礎上&#xff0c;通過修改或添加少量參數來進行模型適應性調整的一種方法&#xff0c;旨在減少計算資源消耗和避免過擬合問題&#xff0c;同時保持模型的性能。這種方法特別適用于資源有限或需…

一個程序員的牢獄生涯(36)夾帶

星期一 夾 帶 鄭所和小X州在小院子里說著話,盡管我豎起耳朵想要聽到他們的說話內容。但因為他們的說話聲音很低,我努力半天后,什么都聽不清。只能看到小X州恭恭敬敬的站在鄭所面前,不時地點頭答應著的樣子。 沒過多長時間,小X州從院子里返回了號子。我注意到他的臉上帶著一…

15、設計模式之責任鏈模式

責任鏈模式 顧名思義&#xff0c;責任鏈模式&#xff08;Chain of Responsibility Pattern&#xff09;為請求創建了一個接收者對象的鏈。這種模式給予請求的類型&#xff0c;對請求的發送者和接收者進行解耦。這種類型的設計模式屬于行為型模式。 在這種模式中&#xff0c;通…

搜索引擎--ES基礎概念

ES是一款開源的搜索引擎&#xff0c;相比于mysql&#xff0c;它提供了非常強大的搜索功能 下面我們需要簡單的了解一下ES相比于mysql中的一些基本概念的區別&#xff1a; 首先我們要知道es在存儲數據的時候都是以json格式來存儲的 mysql <------> ES&#xff1a; table…

【九十四】【算法分析與設計】練習四蠻力法練習,排列問題和組合問題,求解最大連續子序列和問題,求解冪集問題,求解0/1背包問題,求解任務分配問題

求解最大連續子序列和問題 給定一個有n&#xff08;n≥1&#xff09;個整數的序列&#xff0c;要求求出其中最大連續子序列的和。 例如&#xff1a; 序列&#xff08;-2&#xff0c;11&#xff0c;-4&#xff0c;13&#xff0c;-5&#xff0c;-2&#xff09;的最大子序列和為20…

pymysql.err.OperationalError: (1030, ‘Got error 168 from storage engine‘)

錯誤 pymysql.err.OperationalError: (1030, Got error 168 from storage engine) 通常與MySQL的InnoDB存儲引擎相關&#xff0c;它指示你試圖進行的操作超出了存儲引擎的能力或資源限制。具體來說&#xff0c;MySQL錯誤代碼168&#xff08;或“ER_TABLE_NEEDS_UPGRADE”&#…

[處理器芯片]-6 超標量CPU實現之浮點運算

1 浮點運算單元FPU 超標量CPU中的浮點運算單元是專門處理浮點數運算的關鍵組件。浮點運算單元的設計涉及多個復雜的子模塊和技術&#xff0c;以保證高效、準確地執行浮點數的加減法、乘法、除法、平方根等操作。 1&#xff09;浮點數術語 浮點數通常采用IEEE 754標準表示&…

顯示IPS技術

顯示器的IPS&#xff08;In-Plane Switching&#xff0c;平面轉換&#xff09;技術是一種先進的液晶面板技術&#xff0c;由日立公司在2001年推出。該技術優化了液晶分子的排列方式&#xff0c;采取水平排列&#xff0c;使得分子結構在遇到外界壓力時仍能保持穩定&#xff0c;不…

第 33 次CCF認證

1. 詞頻統計 題目描述 樣例輸入 代碼 #include <bits/stdc.h>using namespace std;int main() {int n,m;cin>>n>>m;vector<int> ans1(m,0),ans2(m,0);while (n --) {int t;cin>>t;vector<int> vis(m1,0);for (int i 1;i < t;i ) {i…

python去除html中<div>等

用beautifulsoup并不能將全部的去除得到剩余的txt&#xff0c;特別在興趣段找關鍵字的時候。 使用re模塊可以實現這個功能。 for a in a_d:em_name str(a.find(em))pattern re.compile(r<[^>]>, re.S)result pattern.sub(, em_name)result result.strip(\n)name_…

Spring Boot 中的HTTP請求方式詳解:優缺點與代碼示例

在Spring Boot中&#xff0c;有多種方式可以發起HTTP請求。主要的工具包括RestTemplate、WebClient和增強的AsyncRestTemplate。本文將詳細介紹每種請求方式及其優缺點&#xff0c;并給出代碼示例。 1. RestTemplate RestTemplate 是 Spring 提供的一個用于同步 HTTP 請求的客…

vxe-table v4 ~ v4.6 升級到 v4.7+ 版本

vxe-table v4 ~ v4.6 升級到 v4.7 版本 更新日志 vxe-table 4.7 分離了 vxe-table 表格和 vxe-pc-ui 組件庫 變動如下 全局安裝 // ... import VxeUITable from vxe-table import vxe-table/lib/style.css // ...createApp(App).use(VxeUITable).mount(#app)修改后 // ...i…

數據結構(五)

數據結構&#xff08;五&#xff09; 常見的排序算法內部排序交換插入選擇歸并基數 外部排序基于歸并的 常見的排序算法 內部排序 交換 冒泡&#xff1a;每一次運行總會將最小的或者最大的放到前面&#xff0c;如果需要交換&#xff0c;一直在交換 快速排序*&#xff1a;經過…

【java程序設計期末復習】chapter5 子類的繼承

子類的繼承 繼承是一種由已有的類創建新類的機制。利用繼承&#xff0c;我們可以先創建一個共有屬性的一般類&#xff0c;根據該一般類再創建具有特殊屬性的新類&#xff0c;新類繼承一般類的狀態和行為&#xff0c;并根據需要增加它自己的新的狀態和行為。由繼承而得到的類稱…

Git分支的操作詳解(查看、新增、切換、合并、刪除)

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

2024最新前端面試八股文【基礎篇293題】

?、HTML、HTTP、web綜合問題 1 前端需要注意哪些SEO 2 <img> 的 title 和 alt 有什么區別 3 HTTP的?種請求?法?途 4 從瀏覽器地址欄輸?url到顯示??的步驟 5 如何進??站性能優化 6 HTTP狀態碼及其含義 7 語義化的理解 8 介紹?下你對瀏覽器內核的理解 9 …