vue3-vite前端快速入門教程 vue-element-admin

Vue3快速入門學習

初始化項目

# 創建項目
npm create vite@latest my-vue-app -- --template vue
# 安裝依賴
npm i
# 運行
npm run dev

模板語法

文本插值?

最基本的數據綁定形式是文本插值,它使用的是“Mustache”語法 (即雙大括號):

<span>Message: {{ msg }}</span>

雙大括號標簽會被替換為相應組件實例中?msg?屬性的值。同時每次?msg?屬性更改時它也會同步更新。

原始 HTML?

雙大括號會將數據解釋為純文本,而不是 HTML。若想插入 HTML,你需要使用?v-html?指令:

<template>{{ num }}<span>Message: {{ msg }}</span><p>Using text interpolation: {{ html }}</p><p>Using v-html directive: <span v-html="html"></span></p>
</template>
<script setup>
let num = 123
let msg = "(*′▽`)ノノ"
let html = '<span style="color: red">This should be red.</span>'
</script>

Attribute 綁定

雙大括號不能在 HTML attributes 中使用。想要響應式地綁定一個 attribute,應該使用 v-bind 指令


<div v-bind:id="dynamicId"></div>
?
<input v-bind:value="dynamicId">
let dynamicId=1

v-bind 指令指示 Vue 將元素的 id attribute 與組件的 dynamicId 屬性保持一致。如果綁定的值是 null 或者 undefined,那么該 attribute 將會從渲染的元素上移除。

簡寫

因為 v-bind 非常常用,我們提供了特定的簡寫語法:


<div :id="dynamicId"></div>
?<input v-bind:value="dynamicId"><br><input :value="dynamicId">

開頭為 : 的 attribute 可能和一般的 HTML attribute 看起來不太一樣,但它的確是合法的 attribute 名稱字符,并且所有支持 Vue 的瀏覽器都能正確解析它。此外,他們不會出現在最終渲染的 DOM 中。簡寫語法是可選的,但相信在你了解了它更多的用處后,你應該會更喜歡它。

接下來的指引中,我們都將在示例中使用簡寫語法,因為這是在實際開發中更常見的用法。

布爾型 Attribute

布爾型 attribute 依據 true / false 值來決定 attribute 是否應該存在于該元素上。disabled 就是最常見的例子之一。

v-bind 在這種場景下的行為略有不同:


<button :disabled="isButtonDisabled">Button</button>
?<button :disabled="!isButtonDisabled">Button</button>

isButtonDisabled 為真值或一個空字符串 (即 <button disabled="">) 時,元素會包含這個 disabled attribute。而當其為其他假值時 attribute 將被忽略。

動態綁定多個值

如果你有像這樣的一個包含多個 attribute 的 JavaScript 對象:


const objectOfAttrs = {id: 'container',class: 'wrapper'
}
通過不帶參數的 v-bind,你可以將它們綁定到單個元素上:<div v-bind="objectOfAttrs"></div>
?<div v-bind="objectOfAttrs">233</div>

使用 JavaScript 表達式

至此,我們僅在模板中綁定了一些簡單的屬性名。但是 Vue 實際上在所有的數據綁定中都支持完整的 JavaScript 表達式:


{{ number + 1 }}
?
{{ ok ? 'YES' : 'NO' }}
?
{{ message.split('').reverse().join('') }}
?
<div :id="`list-${id}`"></div>
?
let number = 1
let ok = 1
let message = '如何快速進行多任務切換:多任 務切換的關鍵在 于能不能在一 段 時間內集 中火力, 把一件事做好,再去做下一件事。如果已經定下具 體的目標,一切的工具都只是輔助 ,必要時可以全都 舍棄掉。 '
let id = 1

?

這些表達式都會被作為 JavaScript ,以當前組件實例為作用域解析執行。

在 Vue 模板內,JavaScript 表達式可以被使用在如下場景上:

  • 在文本插值中 (雙大括號)

  • 在任何 Vue 指令 (以 v- 開頭的特殊 attribute) attribute 的值中

僅支持表達式

每個綁定僅支持單一表達式,也就是一段能夠被求值的 JavaScript 代碼。一個簡單的判斷方法是是否可以合法地寫在 return 后面。

因此,下面的例子都是無效的:


<!-- 這是一個語句,而非表達式 -->
{{ var a = 1 }}
?
<!-- 條件控制也不支持,請使用三元表達式 -->
{{ if (ok) { return message } }}

調用函數

可以在綁定的表達式中使用一個組件暴露的方法:


<time :title="toTitleDate(date)" :datetime="date">{{ formatDate(date) }}
</time>

TIP

綁定在表達式中的方法在組件每次更新時都會被重新調用,因此應該產生任何副作用,比如改變數據或觸發異步操作。

受限的全局訪問

模板中的表達式將被沙盒化,僅能夠訪問到有限的全局對象列表。該列表中會暴露常用的內置全局對象,比如 MathDate

沒有顯式包含在列表中的全局對象將不能在模板內表達式中訪問,例如用戶附加在 window 上的屬性。然而,你也可以自行在 app.config.globalProperties 上顯式地添加它們,供所有的 Vue 表達式使用。

指令 Directives

指令是帶有 v- 前綴的特殊 attribute。Vue 提供了許多內置指令,包括上面我們所介紹的 v-bindv-html

指令 attribute 的期望值為一個 JavaScript 表達式 (除了少數幾個例外,即之后要討論到的 v-forv-onv-slot)。一個指令的任務是在其表達式的值變化時響應式地更新 DOM。以 v-if 為例:

<p v-if="seen">Now you see me</p>

這里,v-if 指令會基于表達式 seen 的值的真假來移除/插入該 <p> 元素。

參數 Arguments

某些指令會需要一個“參數”,在指令名后通過一個冒號隔開做標識。例如用 v-bind 指令來響應式地更新一個 HTML attribute:


<a v-bind:href="url"> ... </a>
?
<!-- 簡寫 -->
<a :href="url"> ... </a>
這里 href 就是一個參數,它告訴 v-bind 指令將表達式 url 的值綁定到元素的 href attribute 上。在簡寫中,參數前的一切 (例如 v-bind:) 都會被縮略為一個 : 字符。另一個例子是 v-on 指令,它將監聽 DOM 事件:<a v-on:click="doSomething"> ... </a>
?
<!-- 簡寫 -->
<a @click="doSomething"> ... </a>

這里的參數是要監聽的事件名稱:clickv-on 有一個相應的縮寫,即 @ 字符。我們之后也會討論關于事件處理的更多細節。

動態參數

同樣在指令參數上也可以使用一個 JavaScript 表達式,需要包含在一對方括號內:


<!--
注意,參數表達式有一些約束,
參見下面“動態參數值的限制”與“動態參數語法的限制”章節的解釋
-->
<a v-bind:[attributeName]="url"> ... </a>
?
<!-- 簡寫 -->
<a :[attributeName]="url"> ... </a>

這里的 attributeName 會作為一個 JavaScript 表達式被動態執行,計算得到的值會被用作最終的參數。舉例來說,如果你的組件實例有一個數據屬性 attributeName,其值為 "href",那么這個綁定就等價于 v-bind:href

相似地,你還可以將一個函數綁定到動態的事件名稱上:


<a v-on:[eventName]="doSomething"> ... </a>
?
<!-- 簡寫 -->
<a @[eventName]="doSomething">

在此示例中,當 eventName 的值是 "focus" 時,v-on:[eventName] 就等價于 v-on:focus

動態參數值的限制

動態參數中表達式的值應當是一個字符串,或者是 null。特殊值 null 意為顯式移除該綁定。其他非字符串的值會觸發警告。

動態參數語法的限制

動態參數表達式因為某些字符的緣故有一些語法限制,比如空格和引號,在 HTML attribute 名稱中都是不合法的。例如下面的示例:

<!-- 這會觸發一個編譯器警告 -->
<a :['foo' + bar]="value"> ... </a>

如果你需要傳入一個復雜的動態參數,我們推薦使用計算屬性替換復雜的表達式,也是 Vue 最基礎的概念之一,我們很快就會講到。

當使用 DOM 內嵌模板 (直接寫在 HTML 文件里的模板) 時,我們需要避免在名稱中使用大寫字母,因為瀏覽器會強制將其轉換為小寫:

<a :[someAttr]="value"> ... </a>

上面的例子將會在 DOM 內嵌模板中被轉換為 :[someattr]。如果你的組件擁有 “someAttr” 屬性而非 “someattr”,這段代碼將不會工作。單文件組件內的模板受此限制。

修飾符 Modifiers

修飾符是以點開頭的特殊后綴,表明指令需要以一些特殊的方式被綁定。例如 .prevent 修飾符會告知 v-on 指令對觸發的事件調用 event.preventDefault()

<form @submit.prevent="onSubmit">...</form>

之后在講到 v-on 和 v-model 的功能時,你將會看到其他修飾符的例子。

最后,在這里你可以直觀地看到完整的指令語法:

指令語法圖

總結

<template><h3>{{ text }}</h3><h3>{{ user }}</h3><!--指令 v-v-model   數據雙向綁定v-if      判斷表達式的值,true則顯示,false則隱藏 -- 控制dom元素的創建和銷毀,應避免頻繁切換狀態v-show    和v-if區別 --  始終會被渲染并保留在dom中,只是css被隱藏了 "display: none;"  一次性的v-for     循環v-bind    綁定屬性或對象v-on      注冊事件--><input v-model="user.age" /><span v-if="user.age == 18">成年人:{{ user.age }}</span><span v-else-if="user.age < 18">未成年</span><span v-else>長大了...</span><span v-show="user.age >= 18">和v-if區別:始終會被渲染并保留在dom中,只是css被隱藏了 "display: none;"</span><!-- <button v-bind:disabled="true">v-bind</button> --><button :disabled="true">v-bind</button><h6v-for="(friends,index) in user.friends":key="index"style="color: rgb(70, 238, 146)">{{ friends.name }} - {{ friends.age }} - {{ index }}</h6><!-- <button v-on:click="addFriend">添加好友</button> --><button @click="addFriend">添加好友</button>&nbsp;&nbsp;&nbsp;<button @click="deleteFriend">刪除</button><p :class="{ active: isActive }">Class 與 Style 綁定</p><div v-for="i in 5">{{i}}</div>
</template><script setup>
import { ref, reactive } from "vue";const text = ref("HelloWorld");
const isActive = ref(true);const user = reactive({name: "小鄭",age: 18,friends: [{name: "小張",age: 18,},{name: "小李",age: 20,},{name: "張三",age: 201,},],
});function addFriend() {user.friends.push({name: "哈基米",age: 18,});
}function deleteFriend() {user.friends.pop()
}
</script><style scoped>
.active {color: rgb(134, 17, 250);
}
</style>

ref 和 reactive 是 Vue 3 中用于管理數據的兩個方法。

ref 用于創建一個可響應的指針。指針可以指向任何值,包括原始值、對象或數組。當指針指向的值發生變化時,Vue 會自動更新指針的值。

reactive 用于創建一個響應式的對象。對象的所有屬性都將成為響應式變量。當對象的屬性發生變化時,Vue 會自動更新該屬性的值。

  • text?是一個?ref?對象,指向字 符串 "HelloWorld"。當字符串發生變化時,text?的值也會發生變化。
  • isActive?也是一個?ref?對象,指向布爾值 true。當布爾值發生變化時,isActive?的值也會發生變化。
  • user?是一個?reactive?對象,包含三個屬性:nameage?和?friends。當這些屬性發生變化時,user?對象的值也會發生變化。

使用場景

ref?通常用于以下場景:

  • 需要在組件中使用原始值、對象或數組時。
  • 需要監聽值的變化時。

reactive?通常用于以下場景:

  • 需要在組件中使用對象時。
  • 需要監聽對象屬性的變化時。

導入其他vue組件

<template><HelloWorld />
</template>
<script setup>import HelloWorld from "./components/HelloWorld.vue";
</script>

vue-element-admin介紹


vue-element-admin是一個后臺前端解決方案,它基于vue和element-ui實現。它使用了最新的前端技術棧,內置了 i18 國際化解決方案,動態路由,權限驗證,提煉了典型的業務模型,提供了豐富的功能組件,它可以幫助你快速搭建企業級中后臺產品原型。

目錄結構


一上來就看到那么多文件夾確實頭疼,咱先不管別的,主要先了解標注部分文件

├── build            # 構建相關
├── config           # 配置相關
├── mock             # 項目mock 模擬數據
├── plop-templates       
├── public           # 靜態資源
│   ├── favicon.ico       
│   └── index.html       
├── src              # 源代碼
│   ├── api          # 所有請求
│   ├── assets       # 主題 字體等靜態資源
│   ├── components   # 全局公用組件
│   ├── directive    # 全局指令
│   ├── filters      # 全局 filter
│   ├── icons        # 項目所有 svg icons
│   ├── lang         # 國際化 language
│   ├── layout       # 布局相關
│   ├── mock         # 項目mock 模擬數據
│   ├── router       # 路由
│   ├── store        # 全局 store管理
│   ├── styles       # 全局樣式
│   ├── utils        # 全局公用方法
│   ├── vendor       # 公用vendor
│   ├── views        # view
│   ├── App.vue      # 入口頁面
│   ├── main.js      # 入口 加載組件 初始化等
│   └── permission.js # 權限管理
├── tests            
├── static           # 第三方不打包資源
│   └── Tinymce      # 富文本
├── .babelrc          # babel-loader 配置
├── eslintrc.js       # eslint 配置項
├── .gitignore        # git 忽略項
├── favicon.ico       # favicon圖標
├── index.html        # html模板
├── .env.xxx          
├── .eslintrc.js        
├── .travis.yml         
├── vue.config.js      # vue-cli 配置
└── package.json


安裝

# 克隆項目
git clone https://github.com/PanJiaChen/vue-element-admin.git# 進入項目目錄
cd vue-element-admin# 建議不要用 cnpm 安裝 會有各種詭異的bug 可以通過如下操作解決 npm 下載速度慢的問題
npm install --registry=https://registry.npm.taobao.org# 安裝依賴
npm install# 本地開發 啟動項目
npm run dev

參考資料:手摸手,帶你用vue擼后臺 系列一(基礎篇) - 掘金

快速上手 | Vue.js

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

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

相關文章

【數據結構】——排序篇(中)

前面我們已經了解了幾大排序了&#xff0c;那么我們今天就來再了解一下剩下的快速排序法&#xff0c;這是一種非常經典的方法&#xff0c;時間復雜度是N*logN。 快速排序法&#xff1a; 基本思想為&#xff1a;任取待排序元素序列中的某元素作為基準值&#xff0c;按照該排序碼…

C++ queue 和priority_queue

目錄 1.什么是queue 2.模擬實現 3.仿函數 模板參數Compare 仿函數 4.什么是priority_queue 模擬實現 1.什么是queue 1.隊列是一種容器適配器&#xff0c;專門用于在FIFO上下文(先進先出)中操作&#xff0c;其中從容器一端插入元素&#xff0c;另一端提取元素。 2.隊列作為…

Java轉Go學習之旅 | Go入門(1)

入門 命令行參數找出重復行常規版本涉及文件操作 命令行參數 命令行參數以os包中Args名字的變量供程序訪問&#xff0c;在os包外面&#xff0c;使用os.Args這個名字 變量os.Args是一個字符串sliceos.Args[0]&#xff1a;命令本身的名字os.Args[1:]&#xff1a;另外的元素&…

Cglib動態代理從入門到掌握

Cglib 動態代理 本文的寫作目的是為了探究 Spring 框架中在使用Transactional標注的方法中使用 this 進行自調用時事務失效的原因&#xff0c;各種視頻教程中只是簡單指出 this 指向的不是代理類對象&#xff0c;而是目標類對象&#xff0c;但是并沒有解釋為什么 this 不是代理…

麒麟系統使用桌面共享遠程桌面

客戶端安裝vinager 服務端 安裝 vnc4server xrdp tightvncserver vino 安裝完成后 需要重啟 在用戶的家目錄下新建 .xsession 寫入xfce4-session防止閃退 雪花屏 開啟xrdp服務 遠程鏈接 Vnc只能鏈接系統登錄的用戶 Rdp可以鏈接所有普通用戶

vscode插件webview和插件通信

如果你要在 VS Code 插件的 WebView 中調用插件中的方法&#xff0c;可以使用 vscode.postMessage API。具體步驟如下&#xff1a; 在插件中&#xff0c;在創建 WebView 時&#xff0c;指定一個 onDidReceiveMessage 回調方法&#xff0c;該方法會在 WebView 中調用 vscode.po…

【C語言】結構體內存對齊

目錄 引入結構體 結構的聲明 創建和初始化 內部元素的使用&#xff1b; 特殊聲明&#xff1a; 結構體在內存中的對齊 練習&#xff1a; 引入結構體 C語言有各種數據類型&#xff0c;我們已經對一些數據類型很熟悉&#xff1a; 整型&#xff08;int&#xff09;- 存儲整…

力扣-151. 反轉字符串中的單詞

文章目錄 看下去&#xff0c;你一定可以理解此題&#xff0c;寫的簡單易懂力扣題目解題思路函數構成1.反轉函數2.消除掉多余空格函數 整體函數 看下去&#xff0c;你一定可以理解此題&#xff0c;寫的簡單易懂 力扣題目 給你一個字符串 s &#xff0c;請你反轉字符串中 單詞 …

京東商品詳情數據在數據分析行業中的重要性

京東商品詳情數據在數據分析行業中具有重要作用。這些數據提供了豐富的信息&#xff0c;可以幫助企業了解市場趨勢、消費者需求、產品表現以及運營策略等多個方面。 首先&#xff0c;京東商品詳情數據可以為企業提供市場趨勢分析的依據。通過觀察商品的銷售量、銷售額、價格等…

c語言:理解和避免野指針

野指針的定義&#xff1a; 野指針是指一個指針變量存儲了一個無效的地址&#xff0c;通常是一個未初始化的指針或者指向已經被釋放的內存地址。當程序嘗試使用野指針時&#xff0c;可能會導致程序崩潰、內存泄漏或者其他不可預測的行為。因此&#xff0c;在編程中需要特別注意…

Pandas中DataFrame對象的創建與常用屬性方法(第2講)

Pandas中DataFrame對象的創建與常用屬性方法(第2講) ??????? ??博主 侯小啾 感謝您的支持與信賴。?? ???????????????????????????????????????????????????????????????????????????…

智能優化算法應用:基于孔雀算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于孔雀算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于孔雀算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.孔雀算法4.實驗參數設定5.算法結果6.參考文獻7.MATLAB…

[足式機器人]Part2 Dr. CAN學習筆記-數學基礎Ch0-2 特征值與特征向量

本文僅供學習使用 本文參考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN學習筆記-數學基礎Ch0-2 特征值與特征向量 1. 定義1.1 線性變換1.2 求解特征值&#xff0c;特征向量1.3 應用&#xff1a;對角化矩陣——解耦Decouple 2. Summary 1. 定義 A v ? λ v ? A\vec{v}\lambd…

【網絡奇緣】- 計算機網絡|深入學習物理層|網絡安全

? &#x1f308;個人主頁: Aileen_0v0&#x1f525;系列專欄: 一見傾心,再見傾城 --- 計算機網絡~&#x1f4ab;個人格言:"沒有羅馬,那就自己創造羅馬~" 回顧鏈接&#xff1a;http://t.csdnimg.cn/ZvPOS 這篇文章是關于深入學習原理參考模型-物理層的相關知識點&…

Linux權限命令詳解

Linux權限命令詳解 文章目錄 Linux權限命令詳解一、什么是權限&#xff1f;二、權限的本質三、Linux中的用戶四、linux中文件的權限4.1 文件訪問者的分類&#xff08;人&#xff09;4.2 文件類型和訪問權限&#xff08;事物屬性&#xff09; 五、快速掌握修改權限的做法【第一種…

Spark-Streaming+Kafka+mysql實戰示例

文章目錄 前言一、簡介1. Spark-Streaming簡介2. Kafka簡介二、實戰演練1. MySQL數據庫部分2. 導入依賴3. 編寫實體類代碼4. 編寫kafka主題管理代碼5. 編寫kafka生產者代碼6. 編寫Spark-Streaming代碼總結前言 本文將介紹一個使用Spark Streaming和Kafka進行實時數據處理的示例…

實戰1-python爬取安全客新聞

一般步驟&#xff1a;確定網站--搭建關系--發送請求--接受響應--篩選數據--保存本地 1.拿到網站首先要查看我們要爬取的目錄是否被允許 一般網站都會議/robots.txt目錄&#xff0c;告訴你哪些地址可爬&#xff0c;哪些不可爬&#xff0c;以安全客為例子 2. 首先測試在不登錄的…

Docker Network(網絡)——8

目錄&#xff1a; Docker 為什么需要網絡管理Docker 網絡架構簡介 CNMLibnetwork驅動常見網絡類型 bridge 網絡host 網絡container 網絡none 網絡overlay 網絡docker 網絡管理命令 docker network createdocker network inspectdocker network connectdocker network disconne…

class072 最長遞增子序列問題與擴展【算法】

class072 最長遞增子序列問題與擴展【算法】 code1 300. 最長遞增子序列 // 最長遞增子序列和最長不下降子序列 // 給定一個整數數組nums // 找到其中最長嚴格遞增子序列長度、最長不下降子序列長度 // 測試鏈接 : https://leetcode.cn/problems/longest-increasing-subsequen…

830. 單調棧

?????? ??????830. 單調棧 - AcWing題庫 給定一個長度為 N 的整數數列&#xff0c;輸出每個數左邊第一個比它小的數&#xff0c;如果不存在則輸出 ?1?1。 輸入格式 第一行包含整數 N&#xff0c;表示數列長度。 第二行包含 N個整數&#xff0c;表示整數數列…