Vue3 學習教程,從入門到精通,Vue 3 安裝指南及語法知識點詳解(2)

Vue 3 安裝指南及語法知識點詳解

本文將詳細介紹 Vue 3 的所有安裝方式,并深入講解 Vue 3 的語法知識點。此外,還將提供一些綜合性案例,展示如何綜合運用 Vue 3 的各項功能。


一、安裝 Vue 3 的所有方式

Vue 3 提供了多種安裝方式,以適應不同的項目需求和開發環境。以下是主要的安裝方式:

1. 通過 CDN 引入

這是最簡單的方式,適用于快速原型開發或學習。

步驟:

  1. 在 HTML 文件中通過 <script> 標簽引入 Vue 3 的 CDN 鏈接。
  2. 使用 Vue 全局變量進行開發。

示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>Vue 3 CDN 示例</title><!-- 引入 Vue 3 CDN --><script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
</head>
<body><div id="app"><p>{{ message }}</p><button @click="updateMessage">點擊更新消息</button></div><script>const { createApp } = Vue;createApp({data() {return {message: 'Hello Vue 3!'}},methods: {updateMessage() {this.message = '消息已更新!';}}}).mount('#app');</script>
</body>
</html>

2. 使用 NPM 安裝

適用于基于模塊化打包工具(如 Webpack, Vite)的項目開發。

步驟:

  1. 初始化項目:

    npm init -y
    
  2. 安裝 Vue 3:

    npm install vue@next
    
  3. 安裝構建工具(如 Vite):

    npm install vite --save-dev
    
  4. 配置項目結構:

    • 創建 index.html, src/main.js, src/App.vue 等文件。
  5. 運行項目:

    npx vite
    

示例項目結構:

my-vue-app/
├── index.html
├── package.json
├── vite.config.js
└── src/├── main.js└── App.vue

3. 使用 Vue CLI

Vue CLI 是 Vue 官方的腳手架工具,適用于需要復雜配置的項目。

步驟:

  1. 全局安裝 Vue CLI:

    npm install -g @vue/cli
    
  2. 創建新項目:

    vue create my-vue-app
    
  3. 選擇配置選項(默認或自定義)。

  4. 進入項目目錄并運行:

    cd my-vue-app
    npm run serve
    

4. 使用 Vite 創建 Vue 3 項目

Vite 是一個更快的構建工具,官方推薦用于 Vue 3 項目。

步驟:

  1. 使用 Vite 創建 Vue 3 項目:

    npm init vite@latest my-vue-app -- --template vue
    
  2. 進入項目目錄并安裝依賴:

    cd my-vue-app
    npm install
    
  3. 運行項目:

    npm run dev
    

5. 官方腳手架 create-vue

npm init vue@latest
# 按照提示操作

二、Vue 3 語法知識點及使用方法

1. 創建 Vue 應用

語法:

import { createApp } from 'vue';
import App from './App.vue';const app = createApp(App);
app.mount('#app');

說明:

  • createApp 用于創建 Vue 應用實例。
  • mount 方法將應用掛載到指定的 DOM 元素上。

案例代碼:

<!-- index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>Vue 3 創建應用示例</title><script type="module" src="./src/main.js"></script>
</head>
<body><div id="app"></div>
</body>
</html>
// src/main.js
import { createApp } from 'vue';
import App from './App.vue';createApp(App).mount('#app');
<!-- src/App.vue -->
<template><div><h1>{{ title }}</h1><p>{{ message }}</p></div>
</template><script>
export default {data() {return {title: '歡迎使用 Vue 3!',message: '這是一個 Vue 3 應用。'}}
}
</script>

2. 組件基礎

語法:

<!-- MyComponent.vue -->
<template><div><h2>{{ heading }}</h2><p>{{ content }}</p></div>
</template><script>
export default {props: {heading: {type: String,required: true}},data() {return {content: '這是組件的內容。'}}
}
</script>

說明:

  • 使用 props 接收父組件傳遞的數據。
  • data 函數返回組件的響應式數據。

案例代碼:

<!-- src/components/Greeting.vue -->
<template><div><h2>{{ greeting }}</h2><p>{{ message }}</p></div>
</template><script>
export default {props: {greeting: {type: String,required: true}},data() {return {message: '這是一個組件。'}}
}
</script>
<!-- src/App.vue -->
<template><div><Greeting greeting="你好,Vue 3!" /></div>
</template><script>
import Greeting from './components/Greeting.vue';export default {components: {Greeting}
}
</script>

3. 響應式數據

語法:

import { reactive, ref } from 'vue';const state = reactive({count: 0
});const counter = ref(0);

說明:

  • reactive 用于創建響應式對象。
  • ref 用于創建響應式引用(適用于基本類型和對象)。

案例代碼:

<!-- src/components/Counter.vue -->
<template><div><h2>計數器</h2><p>當前計數: {{ count }}</p><button @click="increment">增加</button></div>
</template><script>
import { ref } from 'vue';export default {setup() {const count = ref(0);const increment = () => {count.value++;};return {count,increment};}
}
</script>
<!-- src/App.vue -->
<template><div><Counter /></div>
</template><script>
import Counter from './components/Counter.vue';export default {components: {Counter}
}
</script>

4. 計算屬性與偵聽器

語法:

import { computed, watch } from 'vue';const fullName = computed(() => `${firstName.value} ${lastName.value}`);watch(fullName, (newVal, oldVal) => {console.log(`姓名從 ${oldVal} 變為 ${newVal}`);
});

說明:

  • computed 用于定義計算屬性,基于依賴進行緩存。
  • watch 用于偵聽數據變化,執行副作用。

案例代碼:

<!-- src/components/FullName.vue -->
<template><div><h2>姓名</h2><input v-model="firstName" placeholder="名" /><input v-model="lastName" placeholder="姓" /><p>全名: {{ fullName }}</p></div>
</template><script>
import { ref, computed, watch } from 'vue';export default {setup() {const firstName = ref('');const lastName = ref('');const fullName = computed(() => `${firstName.value} ${lastName.value}`);watch(fullName, (newVal, oldVal) => {console.log(`姓名從 ${oldVal} 變為 ${newVal}`);});return {firstName,lastName,fullName};}
}
</script>

5. 生命周期鉤子

語法:

import { onMounted, onUnmounted } from 'vue';export default {setup() {onMounted(() => {console.log('組件已掛載');});onUnmounted(() => {console.log('組件已卸載');});}
}

說明:

  • onMounted 在組件掛載后調用。
  • onUnmounted 在組件卸載前調用。

案例代碼:

<!-- src/components/Lifecycle.vue -->
<template><div><h2>生命周期示例</h2><p>打開控制臺查看生命周期鉤子輸出。</p></div>
</template><script>
import { onMounted, onUnmounted } from 'vue';export default {setup() {onMounted(() => {console.log('組件已掛載');});onUnmounted(() => {console.log('組件已卸載');});return {};}
}
</script>

三、綜合性案例

案例 1:Todo List 應用

功能:

  • 添加待辦事項
  • 刪除待辦事項
  • 顯示待辦事項列表

代碼:

<!-- src/components/TodoList.vue -->
<template><div><h2>Todo List</h2><input v-model="newTodo" @keyup.enter="addTodo" placeholder="添加待辦事項" /><ul><li v-for="(todo, index) in todos" :key="index">{{ todo }}<button @click="removeTodo(index)">刪除</button></li></ul></div>
</template><script>
import { ref } from 'vue';export default {setup() {const todos = ref([]);const newTodo = ref('');const addTodo = () => {if (newTodo.value.trim() !== '') {todos.value.push(newTodo.value.trim());newTodo.value = '';}};const removeTodo = (index) => {todos.value.splice(index, 1);};return {todos,newTodo,addTodo,removeTodo};}
}
</script>
<!-- src/App.vue -->
<template><div><h1>Vue 3 Todo List</h1><TodoList /></div>
</template><script>
import TodoList from './components/TodoList.vue';export default {components: {TodoList}
}
</script>

案例 2:動態表單

功能:

  • 動態添加表單字段
  • 表單驗證
  • 顯示提交數據

代碼:

<!-- src/components/DynamicForm.vue -->
<template><div><h2>動態表單</h2><form @submit.prevent="submitForm"><div v-for="(field, index) in fields" :key="index"><input v-model="field.value" :placeholder="field.label" /><button type="button" @click="removeField(index)">刪除</button></div><button type="button" @click="addField">添加字段</button><button type="submit">提交</button></form><div v-if="submittedData"><h3>提交的數據:</h3><pre>{{ submittedData }}</pre></div></div>
</template><script>
import { ref } from 'vue';export default {setup() {const fields = ref([{ label: '姓名', value: '' },{ label: '郵箱', value: '' }]);const addField = () => {fields.value.push({ label: '新字段', value: '' });};const removeField = (index) => {fields.value.splice(index, 1);};const submitForm = () => {// 簡單驗證const data = {};fields.value.forEach(field => {if (field.value.trim() !== '') {data[field.label] = field.value.trim();}});alert(JSON.stringify(data));submittedData.value = data;};const submittedData = ref(null);return {fields,addField,removeField,submitForm,submittedData};}
}
</script>
<!-- src/App.vue -->
<template><div><DynamicForm /></div>
</template><script>
import DynamicForm from './components/DynamicForm.vue';export default {components: {DynamicForm}
}
</script>

案例 3:天氣預報應用

功能:

  • 輸入城市名稱獲取天氣信息
  • 顯示當前天氣狀況
  • 顯示未來幾天的天氣預報

代碼:

<!-- src/components/Weather.vue -->
<template><div><h2>天氣預報</h2><input v-model="city" @keyup.enter="fetchWeather" placeholder="輸入城市名稱" /><button @click="fetchWeather">查詢</button><div v-if="weather"><h3>當前天氣</h3><p>城市: {{ weather.name }}</p><p>溫度: {{ weather.main.temp }}°C</p><p>天氣狀況: {{ weather.weather[0].description }}</p></div><div v-if="forecast"><h3>天氣預報</h3><ul><li v-for="(day, index) in forecast.list" :key="index">{{ formatDate(day.dt) }}: {{ day.weather[0].description }}, {{ day.main.temp }}°C</li></ul></div></div>
</template><script>
import { ref } from 'vue';
import axios from 'axios';export default {setup() {const city = ref('');const weather = ref(null);const forecast = ref(null);const fetchWeather = async () => {if (city.value.trim() === '') return;try {const response = await axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${city.value}&appid=YOUR_API_KEY&units=metric`);weather.value = response.data;const forecastResponse = await axios.get(`https://api.openweathermap.org/data/2.5/forecast?q=${city.value}&appid=YOUR_API_KEY&units=metric`);forecast.value = forecastResponse.data;} catch (error) {console.error(error);alert('獲取天氣信息失敗');}};const formatDate = (timestamp) => {const date = new Date(timestamp * 1000);return date.toLocaleDateString();};return {city,weather,forecast,fetchWeather,formatDate};}
}
</script>
<!-- src/App.vue -->
<template><div><Weather /></div>
</template><script>
import Weather from './components/Weather.vue';export default {components: {Weather}
}
</script>

注意: 請將 YOUR_API_KEY 替換為實際的 OpenWeatherMap API 密鑰。


四、總結

本文詳細介紹了 Vue 3 的安裝方式、語法知識點及其使用方法,并通過具體的案例代碼展示了如何應用這些知識。通過學習這些內容,讀者可以快速掌握 Vue 3 的基礎和進階功能,進而構建功能豐富的現代 Web 應用。

以下是一些關鍵點:

  • 安裝方式:根據項目需求選擇合適的安裝方式,如 CDN, NPM, Vue CLI 或 Vite。
  • 組件化開發:理解組件的概念,掌握組件的創建和使用。
  • 響應式數據:利用 reactiveref 實現數據的響應式更新。
  • 計算屬性與偵聽器:使用 computedwatch 處理復雜的邏輯和數據變化。
  • 生命周期鉤子:理解組件的生命周期,合理使用生命周期鉤子處理副作用。
  • 綜合應用:通過綜合性案例,理解如何將各項功能組合在一起,構建完整的應用。

通過不斷實踐和深入學習,讀者可以進一步掌握 Vue 3 的高級特性,如 Vue Router, Vuex 或 Pinia 等狀態管理工具,以及 Vue 3 的組合式 API 等。

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

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

相關文章

C++基礎復習筆記

一、數組定義 在C中&#xff0c;數組初始化有多種方式&#xff0c;以下是常見的幾種方法&#xff1a; 默認初始化 數組元素未顯式初始化時&#xff0c;內置類型&#xff08;如int、float&#xff09;的元素值未定義&#xff08;垃圾值&#xff09;&#xff0c;類類型調用默認構…

手機和PC遠控安全深度測評:TeamViewer/ToDesk/向日葵安全防線對比

聲明&#xff1a;本測試報告系作者基于個人興趣及使用場景開展的非專業測評&#xff0c;測試過程中所涉及的方法、數據及結論均為個人觀點&#xff0c;不代表任何官方立場或行業標準。 一、引言 當下遠程控制技術已深度融入大眾的工作與生活&#xff0c;無論是上班族在家操…

Windows 11的開始菜單調整為左下角布局

1.桌面右鍵個性化 2.個性化中任務欄 3.任務欄選擇任務欄行為 4.任務欄行為中 任務欄對齊方式選擇靠左即可

Go語言項目工程化 — 常見開發工具與 CI/CD 支持

在Go語言的項目工程化實踐中&#xff0c;常見開發工具與 CI/CD 支持是保障團隊協作、高效交付與項目質量的關鍵。以下是第 68 章的詳細內容。一、開發輔助工具Go語言生態為開發者提供了豐富的工具&#xff0c;以提高代碼質量與開發效率。1. 格式化與靜態檢查工具說明gofmt標準格…

OpenCV人臉分析------繪制面部關鍵點函數drawFacemarks()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于在圖像上繪制面部關鍵點&#xff08;facial landmarks&#xff09;&#xff0c;例如使用 FacemarkLBF, FacemarkKazemi 等算法檢測到的…

Linux內核ext4 extent:解決大文件存儲難題的關鍵

在Linux 操作系統的龐大生態中&#xff0c;文件系統猶如一座城市的基礎設施&#xff0c;支撐著數據的有序存儲與高效訪問。而 ext4 文件系統&#xff0c;作為 Linux 文件系統家族中的重要一員&#xff0c;自誕生起便憑借諸多先進特性備受矚目。其中&#xff0c;extent 機制堪稱…

reactnative頁面適配UI設計尺寸px轉dp的完美解決方案px2dp精要篇

你的 px2dp 函數基本思路是正確的&#xff0c;但可以進一步優化以確保更精確的適配。以下是改進后的完美精確方案&#xff1a; 完美精確的適配方案 import { Dimensions, PixelRatio, Platform, ScaledSize } from react-native;// 獲取屏幕尺寸&#xff08;考慮橫豎屏&#…

【世紀龍科技】汽車鈑金虛擬仿真教學實訓軟件

在汽車后市場人才緊缺的當下&#xff0c;職業院校汽車鈑金教學卻長期面臨“三難困境”&#xff1a;實訓設備昂貴且損耗快、學生實操機會稀缺、教學評價依賴主觀經驗。江蘇世紀龍科技公司以十余年汽車教育數字化積淀為基石&#xff0c;推出《汽車鈑金教學軟件》&#xff0c;通過…

Fiddler中文版抓包工具在后端API調試與Mock中的巧用

在現代開發中&#xff0c;前后端往往分屬不同小組甚至不同公司&#xff0c;接口聯調變得至關重要。尤其是在多團隊合作、后端接口尚未完成或頻繁變動的項目中&#xff0c;前端開發進度容易被阻礙。此時&#xff0c;通過靈活運用 Fiddler抓包工具&#xff0c;前端可以在后端接口…

基于 Flask框架開發的輕量級招聘網站

簡單的招聘網站示例 這是一個基于 Flask 框架開發的輕量級招聘網站示例&#xff0c;采用 Jinja2 模板引擎和 Bootstrap 前端框架&#xff0c;模仿 拉勾網 風格&#xff0c;實現了招聘平臺的核心功能。系統支持 個人用戶 和 企業用戶 兩種角色&#xff0c;個人用戶可以瀏覽職位、…

2025 年使用大模型進行軟件工程:現實檢驗

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

如何使用單例模式保證全局唯一實例(復雜版本)

/// <summary> /// 登錄管理類&#xff08;單例模式&#xff09;&#xff0c;負責用戶登錄、注銷及用戶信息管理 /// </summary> public class LoginMananger {// 用于線程同步的鎖對象static object _lockObj new object();// 單例實例&#xff08;延遲初始化&am…

瑞斯拜考研詞匯課筆記

學習視頻鏈接&#xff1a;瑞斯拜考研詞匯系統課-外刊50篇- 第一講_嗶哩嗶哩_bilibili Text 1 1.氣候危機讓普通人經歷了額外六周的高溫天氣。 The climate crisis caused the average person to experience six extra weeks of hot days. 2.碳排放是全球變暖的重要原因之一。 C…

SqlServer安裝后JDBC連接失敗——TCP/IP

朋友公司接了個項目&#xff0c;甲方BaBa用的數據庫是SqlServer 2022的Express版本&#xff0c;朋友讓我幫忙驗證下環境有沒有什么問題&#xff0c;軟件開發用的框架還是比較老的&#xff0c;spring的xml方式配置&#xff0c;用的c3p0的數據庫連接池&#xff0c;啟動項目連接池…

如何解決pip安裝報錯ModuleNotFoundError: No module named ‘datetime’問題

【Python系列Bug修復PyCharm控制臺pip install報錯】如何解決pip安裝報錯ModuleNotFoundError: No module named ‘datetime’問題 摘要 在日常Python開發中&#xff0c;我們常常需要通過pip install來安裝第三方包&#xff0c;但有時會在PyCharm的控制臺里遇到奇怪的ModuleN…

Windows 10 2016 長期服務版

系統介紹 Windows 10 2016 長期服務版。專為需要高度穩定性和最小功能變更的環境設計。它不僅適合專業領域&#xff0c;也是辦公環境的理想選擇。 系統特點 一、極致的穩定性 精簡的系統組件&#xff1a;移除許多現代應用&#xff0c;只保留基礎功能。 無強制功能更新&…

基于springboot的文件上傳系統:重新定義大文件傳輸的可靠性邊界

一、文件分塊上傳解析1、為什么傳統文件上傳已經無法滿足現代需求&#xff1f;在云原生時代&#xff0c;文件上傳不再是簡單的"選擇文件-點擊上傳"的過程。隨著視頻、設計圖、數據集等大文件的普及&#xff0c;傳統的單文件上傳方式面臨著諸多挑戰&#xff1a;網絡不…

系統學習Python——并發模型和異步編程:進程、線程和GIL

分類目錄&#xff1a;《系統學習Python》總目錄 在文章《并發模型和異步編程&#xff1a;基礎知識》我們簡單介紹了Python中的進程、線程和協程。本文就著重介紹Python中的進程、線程和GIL的關系。 Python解釋器的每個實例都是一個進程。使用multiprocessing或concurrent.futu…

【playwright篇】教程(十七)[html元素知識]

1 html中&#xff0c;button元素中的aria-describedby"tooltip-r1k"屬性&#xff0c;主要用來做什么&#xff1f;在 HTML 中&#xff0c;button 元素中的 aria-describedby"tooltip-r1k" 屬性主要用于提升網頁的可訪問性&#xff08;Accessibility&#xf…

Python: 正則表達式

正則表達式是處理文本數據的強大工具&#xff0c;Python通過re模塊提供了完整的正則表達式功能。本文將詳細介紹Python正則表達式的使用方法&#xff0c;包括基礎語法、高級技巧和re模塊API的詳細解析。一、正則表達式基礎1.1 什么是正則表達式正則表達式(Regular Expression)是…