vue入門學習教程

????????一、介紹

? ? ? ?vue是一款用于構建用戶界面的 JavaScript 框架。基于標準 HTML、CSS 和 JavaScript 構建,并提供了一套聲明式的、組件化的編程模型,幫助你高效地開發用戶界面。

二、使用和安裝

方法1:在html代碼中直接使用<script>導入,對于初學者可以這樣。

<head><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script></head>

<div id="app">{{ message }}</div><script>const { createApp, ref } = VuecreateApp({setup() {const message = ref('Hello vue!')return {message}}}).mount('#app')
</script>

方法2:使用npm構建vue項目,這種方法要求有es5,typescript基礎。

第一步:安裝nodejs,nodejs自帶nmp工具

nodejs下載地址:Node.js — Download Node.js?

第二步:設置npm代理地址。

npm config set registry https://registry.npmmirror.com

第三步:創建vue應用

npm create vue@latest

第四步:啟動項目,運行以下命令

(1)安裝npm相關工具:npm install

(2)已開發環境運行項目:npm run dev

終端提示如下:

()(3)打開瀏覽器,輸入http://localhost:5173打開項目。

項目中應用vue框架配置。

三、項目結構(方法2中項目結構)

四、核心知識

Vue3的核?是通過createApp函數創建?個應?實例,在這個實例中構建各種應?。(main.ts)
每個vue?件就是?個??上的組件,組件可以嵌套使?。vue中的組件分為<template>??模板,<script>腳本和<style>樣式三個部分。Vue2中要求<template>下必
須有?個唯?的根元素,Vue3中則沒有了這個限制。
1.數據雙向綁定(vue3,組合式數據綁定)
雙向綁定是指網頁代碼中的數據與腳本代碼中的數據建立關系,修改一個兩個一起修改而且值是一樣的。例如下圖標記。
實現數據綁定:在HTML中使用v-model指令,腳本代碼中是ref函數傳遞變量值,修改變量值需要使用變量的value屬性,如上圖。
(1)變量綁定使用ref函數,代碼如下:
html:<input v-model="userName" />
腳本:let userName = ref("張勝男");
(2)對象使用reactive函數,代碼如下
html:<input v-model="userInfo.userName" />

腳本:

import {reactive} from "vue"let userInfo=reactive({userName:"小伙子"
})

(3)綁定html dom元素,代碼如下:

html:?

<input ref="elementDom"/>

腳本:

import {ref} from "vue"
let elementDom=ref();
function showDom(){console.log(elementDom)//reflmpl對象console.log(elementDom.value)//input元素console.log(elementDom.value.value)//input的value值
}

dom綁定之后可以對dom元素進行很多操作。?

2.數據傳遞

假設一個項目里面,app.vue為父組件,User.vue為子組件。

(1)子組件傳遞到父組件

User.vue

<template><div>姓名:<input type="text" v-model="userName"></div><div>年齡: <input type="number" v-model="age"></div>
</template><script lang="ts">
//組件名默認是?件名。如果不希望??件名,也可以?定義
export default {name: "User"
}
</script><script setup lang="ts">import {ref} from "vue"let userName=ref()let age=ref()defineExpose({userName,age})//暴露子組件屬性
</script>

app.vue

<template><User ref="userInfo"></User><!--使用User組件,并綁定User組件數據到userInfo對象--><button @click="showUserInfo">點一下試試</button>
</template>
<script setup lang="ts">
import User from "./components/User.vue"
import {ref} from "vue"
let userInfo=ref()function showUserInfo(){console.log(userInfo)//ref對象console.log(userInfo.value)//子組件數據對象console.log(userInfo.value.userName)//console.log(userInfo.value.age)//
}
</script>

?(2)父組件到子組件

app.vue:

<template><User :user-Info="userMsg"></User>{{ userMsg }}<button @click="changeUserInfo">點一下試試</button>
</template>
<script setup lang="ts">
import User from "./components/User.vue"
import { reactive } from "vue"let userMsg = reactive({userName: "張三",age: 20})function changeUserInfo() {userMsg.age+=1
}
</script>

User.vue :

<template><div>姓名:<input type="text" v-model="userInfo.userName"></div><div>年齡: <input type="number" v-model="userInfo.age"></div>
</template><script setup lang="ts">
defineProps(["userInfo"])
</script>

界面效果圖:

3.生命周期

生命周期是指項目啟動和工作過程中,文件狀態變化的過程,使用函數可在各個狀態前后添加自己的操作。?

創建階段: setup
掛載階段: onBeforeMount onMounted
更新階段: onBeforeUpdate onUpdated
卸載階段: onBeforeUnmount onUnmounted
代碼如下:
import { ref, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue'
onBeforeMount(()=>{
console.log('掛載之前')
})
onMounted(()=>{
console.log('掛載完畢')
})
onBeforeUpdate(()=>{
console.log('更新之前')
})
onUpdated(()=>{
console.log('更新完畢')
})
onBeforeUnmount(()=>{
console.log('卸載之前')
})
onUnmounted(()=>{
console.log('卸載完畢')
})
4.路由
Vue項?雖然只有index.html?個??,但是可以通過多路由機制實現多??跳轉的效果。訪問不同鏈接,展示
不同的??內容,形成多??的效果。在終端輸入以下指令:
npm install vue-router@4
(1)路由配置
main.ts
import { createApp } from 'vue'
import App from './App.vue'
import { createRouter,createWebHistory } from "vue-router";
import HomePage from "@/pages/Home.vue"
import AboutPage from "@/pages/About.vue"
import NewsPage from "@/pages/News.vue"
//配置路由規則
const routes = [
{ path: '/',redirect: '/home'}, //默認跳轉都??
{ path: '/home', component: HomePage },
{ path: '/about', component: AboutPage, name:'about' }, //命名路由
{ path: '/news', component: NewsPage },
]
//創建路由器
const router = createRouter({
history: createWebHistory(),//路由器?作模式
routes,
})
//項?中,通常將兩個配置項放到單獨的ts?件中
const app = createApp(App)
//加載路由器
app.use(router)
app.mount('#app')

App.vue

<template>
<div id="app">
<h1>Hello App!</h1>
<p>
<!-- 使? router-link 組件進?導航 -->
<!-- 通過傳遞 `to` 來指定鏈接 -->
<!-- `<router-link>` 將呈現?個帶有正確 `href` 屬性的 `<a>` 標簽 -->
<router-link to="/home">??</router-link> <!-- 直接跳轉 -->
<router-link :to="{ path:'/about'}">關于</router-link> <!-- 路徑跳轉 -->
<router-link replace :to="{ name:'news'}">新聞</router-link> <!-- 命名跳轉 -->
</p>
<div class="content">
<!-- 路由出? -->
<!-- 路由匹配到的組件將渲染在這? -->
<router-view></router-view>
</div>
</div>
</template>
<!-- vue3寫法 -->
<script lang="ts" setup >
</script>
<style>
a{ 
margin: 10px;}
.content{
background: yellowgreen;
widows: 10%;
height: 400px;
border: 1cap;
border-radius: 10px;}
</style>

?路由知識點說明:

路由?作模式
router配置中的history項為路由?作模式。Vue提供了兩種?作模式:
history模式
訪問路徑:URL不帶#,斜杠鏈接,接近傳統?站。缺點:容易產?404錯誤。
hash模式
訪問路徑:URL帶有#。缺點:對SEO不太友好。?較適合內部系統。
replace屬性
<route-link>標簽可以添加replace屬性。有兩種可選配置: pushreplace
push 追加瀏覽器歷史記錄(默認值)。追加歷史記錄后,可以使?瀏覽器的返回按鈕,跳回歷史?
replace 替換瀏覽器歷史記錄。替換歷史記錄后,瀏覽器的返回按鈕不可?。
路由嵌套
<route-view>標簽嵌?的??中?持進?步嵌套?菜單。例如,新聞?希望進?步嵌套新聞路由。新聞?有多條 新聞,希望在新聞?展示多條新聞的標題。點擊標題,可以查看對應新聞的詳情。路由配置如下:
const routes = [{ path: '/',redirect: '/home'}, //默認跳轉都??{ path: '/home', component: HomePage }, { path: '/about', component: AboutPage, name:'about' }, //命名路由{ 
path: '/news', 
component: NewsPage, 
name:'news',
children:[ //?路由{
name: "xinwen1",
path: "1",
component: News1},{
name: "xinwen2",
path: "2",
component: News2}] },]

組件代碼:

<ul>
<li><RouterLink to="/news/1">新聞1</RouterLink></li>
<li><RouterLink to="/news/2">新聞2</RouterLink></li>
</ul>
<!-- 展示區 -->
<div class="news-content">
<RouterView></RouterView>
</div>

(2)路由傳參

Vue3中提供了兩種傳參?式,query傳參和param傳參。
query傳參:
new.vue組件
<!-- 字符串傳參 -->
<router-link to="/news/1?id=1&title=新聞1&content=asdfasdf"
<!-- 對象傳參 -->
<RouterLink
:to="{
path:'/news/1',
query:{
id:'1',
title:'新聞1',
content:'asdfasdf'
}
}">新聞1
</RouterLink>

detaiPage .vue

import {useRoute} from 'vue-router'
import {toRefs} from 'vue'
const route = useRoute()
// 打印query參數
console.log(route.query)
//配置雙向綁定數據
let {query} = toRefs(route)
params傳參
params傳參?式表示所有參數都拼接到URL上。
main.ts
{ 
path: '/news', 
component: NewsPage, 
name:'news',
children:[ //?路由{
name: "xinwen2",
// Param傳參,URL預設占位符,?表示參數可選
path: "2/:id/:title/:content",
component: News2}] },

newPage.vue

{ 
path: '/news', 
component: NewsPage, 
name:'news',
children:[ //?路由{
name: "xinwen2",
// Param傳參,URL預設占位符,?表示參數可選
path: "2/:id/:title/:content",
component: News2}] },

detailPage.vue

import {useRoute} from 'vue-router'
import {toRefs} from 'vue'
const route = useRoute()
// 打印params參數
console.log(route.params)
//配置雙向綁定數據
let {params} = toRefs(route)

5.pinia數據存儲

pinia用于項目中界面組件之間數據共享,比如說登錄之后的用戶信息。

開始 | Pinia

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

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

相關文章

C++類對象多態基礎語法【超詳細】

文章目錄前言1. 虛函數1.1 現象1.2 多態1.3 析構函數1.4 override和final1.5 重載、隱藏、重寫對比2. 抽象類2.1 抽象類特性2.2 抽象類的應用場景3. 多態實現的底層原理4. 靜態綁定和動態綁定5. 總結前言 多態是面向對象三大特性之一&#xff0c;也是細節最多的語法之一。學習…

Flask 入門到實戰(3):用 SQLAlchemy 優雅操作數據庫

深入理解 Flask ORM&#xff1a;用 SQLAlchemy 優雅操作數據庫一、前言&#xff1a;什么是 ORM&#xff1f;為什么要用它&#xff1f; 傳統數據庫操作要寫 SQL&#xff0c;比如&#xff1a; SELECT * FROM users WHERE id 1;而使用 ORM 后&#xff0c;你可以這樣寫&#xff1a…

源表=電源+數字表?一文看懂SMU源表 2025-04-14

源表(Source Meter Unit, SMU)廣泛用于半導體器件、材料、醫療、發光器件與光通信等行業,測量器件的伏安(I-V)特性曲線、絕緣材料的電阻值(電阻率)、電容的絕緣電阻(漏電流)、光電器件的暗電流或者L-I-V等。 源表的名稱已經清晰的告訴我們,它包含了高精度電源輸出和…

單片機STM32F103:DMA的原理以及應用

STM32F103系列微控制器&#xff08;基于ARM Cortex-M3內核&#xff09;集成了**DMA&#xff08;Direct Memory Access&#xff0c;直接內存訪問&#xff09;**控制器&#xff0c;用于在存儲器與外設、存儲器與存儲器之間高效傳輸數據&#xff0c;減少CPU的干預&#xff0c;從而…

Webview 中可用的 VS Code 方法

在 VS Code Webview 的 HTML 中&#xff0c;不能直接調用 VS Code 的 API&#xff08;如 vscode.window.showInformationMessage&#xff09;&#xff0c;但可以通過 acquireVsCodeApi() 獲取一個受限的 vscode 對象&#xff0c;用于與插件主程序通信。以下是詳細說明和示例&am…

Qt:布局管理器Layout

目錄 布局管理器 QVBoxLayout QHBoxLayout QGirdLayout QFormLayout Spacer 布局管理器 在以往的界面操作上&#xff0c;都是程序員手動拖動控件來布局&#xff0c;這種方式有一些不足之處&#xff0c;比如不能很好的把握控件之間的距離&#xff0c;以及控件的大小&…

【Java編程動手學】深入剖析Java網絡編程:原理、協議與應用

文章目錄一、引言二、計算機網絡基礎1、計算機網絡的概念2、網絡地址的重要性三、套接字編程&#xff1a;網絡通信的基石1、套接字的概念2、TCP通信編程示例四、TCP通信編程&#xff1a;可靠的數據傳輸1、TCP協議的特點2、實際應用中的TCP通信五、UDP通信編程&#xff1a;高效的…

vue3.2 前端動態分頁算法

文章目錄背景思路頁面情況核心代碼小結效果背景 1. 后臺接口只是動態返回一個數組的數據&#xff0c;前端需要根據數據量的大小判斷是否需要分頁&#xff0c;頁面高度固定2. 頁面根據頁數大小有不同的展示a. 只有一頁 頭部 內容 統計 尾部b. 多頁i. 第一頁 頭部 內容 尾…

UC瀏覽器PC版自2016年后未再更新不支持vue3

win uc瀏覽器&#xff0c;點擊頁面觸發異常。UC瀏覽器PC版自2016年后未再更新&#xff08;最新版本停留在Chromium 50內核&#xff09;。其內置內核版本較低&#xff08;如Trident/Blink舊版&#xff09;&#xff0c;無法支持Vue 3等現代前端框架的語法特性&#xff08;如ES6、…

亞古數據:澳大利亞公司的ABN和ACN號碼是什么?

在跨國商業的迷宮中&#xff0c;了解目標市場的公司注冊細節是一項不可或缺的技能。對于與中國企業有業務往來的朋友們來說&#xff0c;澳大利亞這片充滿機遇的土地上&#xff0c;兩個縮寫——ABN與ACN&#xff0c;如同解鎖合作之門的密鑰&#xff0c;顯得尤為重要。今天&#…

LangChain框架 Prompts、Agents 應用

目錄 (Prompts)提示作用 Prompts 常見操作 基礎 PromptTemplate 使用 Few-shot 提示模板 ChatPromptTemplate (對話提示模板) (Agents)代理作用 Agents 常見操作 基礎 Agent 使用 自定義工具 Agent 高級應用示例 帶記憶的對話代理 使用本地模型的代理 結構化輸出代…

模擬實現unordered_map

1.定義unordered_map 是 C 標準庫中的哈希表容器&#xff0c;特點是無序存儲、平均 O (1) 時間復雜度的插入 / 查找 / 刪除操作。其核心原理是通過哈希函數將關鍵字映射到哈希桶&#xff08;bucket&#xff09;&#xff0c;再通過鏈表或紅黑樹處理哈希沖突。2.實現原理1. 哈希表…

史上最詳細Java并發多線程(面試必備,一篇足矣)

第一章&#xff1a;線程基礎 1.1 線程與進程 進程&#xff1a;系統資源分配的基本單位&#xff0c;擁有獨立的內存空間 線程&#xff1a;CPU調度的基本單位&#xff0c;共享進程內存空間 關系&#xff1a;一個進程可包含多個線程&#xff0c;線程切換成本遠低于進程 1.2 線程的…

【DataFlow】數據合成流水線工具

1.整體解讀 核心思想&#xff1a;以數據為中心的AI&#xff08;Data-Centric AI&#xff09; DataFlow 的核心目標是通過一系列自動化“流水線”&#xff08;Pipelines&#xff09;來處理和生成高質量的數據&#xff0c;從而提升大語言模型&#xff08;LLM&#xff09;在特定領…

Hangfire 調用報錯解決方案總結

System.ArgumentNullException: 值不能為 null 錯誤在使用 Hangfire 時確實是一個常見問題&#xff0c;特別是在配置 Hangfire 服務器時。問題分析這個錯誤通常發生在以下情況&#xff1a;沒有正確配置 Hangfire 服務器隊列配置缺失或不正確連接字符串配置問題解決方案要點正確…

MySQL的使用

MySQL的使用一、mysql中的周邊命令1. 檢查版本2. 查看字符集3. 查看客戶端連接4. 查看最后一條警告消息二、數據庫、數據表的管理1. 語法規則2. 數據庫2.1 查看數據庫2.2 創建數據庫2.3 選擇數據庫2.4 查看創建數據庫命令2.5 創建庫時添加字符集2.6 修改數據庫字符集2.7 刪除數…

2025Nginx最新版講解/面試

維護系統多服務器部署&#xff0c;將我們請求代理到各個服務器。代理正向代理&#xff0c;代理對象是我們的客戶端&#xff0c;目標對象不知道我們用戶。VPN就是典型的正向代理。反向代理&#xff0c;代理對象是服務端&#xff0c;用戶不知道服務端具體信息。而這正是Nginx所做…

JAVASCRIPT 前端數據庫-V8--仙盟數據庫架構-—-—仙盟創夢IDE

老版本 在v1 版本中我們講述了 基礎版的應用 JAVASCRIPT 前端數據庫-V1--仙盟數據庫架構-—-—仙盟創夢IDE-CSDN博客 接下載我們做一個更復雜的的其他場景 由于&#xff0c;V1查詢字段必須 id 接下來我們修改了了代碼 JAVASCRIPT 前端數據庫-V2--仙盟數據庫架構-—-—仙盟創…

UNIX 域套接字實現本地進程間通信

&#x1f680; 使用 UNIX 域套接字 (AF_UNIX) 實現高效進程通信 在 Linux 和其他類 UNIX 系統中&#xff0c;進程間通信 (IPC) 的方法有很多種&#xff0c;例如管道、消息隊列、共享內存等。然而&#xff0c;當你的應用程序需要在 同一臺機器上的不同進程間進行高效、低延遲的數…

【Axure教程】中繼器間圖片的傳遞

中繼器在Axure中可以作為圖片保存的數據庫&#xff0c;在實際系統中&#xff0c;我們經常需要將選擇數據庫的圖片添加到其他圖片列表中&#xff0c;所以今天就教大家&#xff0c;怎么在Axure中實現中繼器之間的圖片傳遞&#xff0c;包含將一個中繼器中的圖片列表傳遞到另一個中…