vscode-創建vue3項目-修改暗黑主題-常見錯誤-element插件標簽-用法涉及問題

文章目錄

  • 1.vscode創建運行編譯vue3項目
  • 2.添加項目資源
  • 3.添加element-plus元素
  • 4.修改為暗黑主題
    • 4.1.在main.js主文件中引入暗黑樣式
    • 4.2.添加自定義樣式文件
    • 4.3.html頁面html標簽添加樣式
  • 5.常見錯誤
    • 5.1.未使用變量
    • 5.2.關閉typescript檢查
    • 5.3.調試器支持
    • 5.4.允許未到達代碼和未定義代碼
  • 6.element常用標簽
    • 6.1.下拉列表|el-select
    • 6.2.對話框|el-dialog
  • 7.用法
    • 7.1.其它函數訪問data數據
    • 7.2.reactive的使用-異步回調函數中data中數據的引用
    • 7.3.ref的使用-異步回調函數中data中數據的引用
    • 7.4.setup函數返回值-及與data和method的關系
    • 7.5.getCurrentInstance
    • 7.6.純setup-組合式api綁定范例
    • 7.7.this對象

1.vscode創建運行編譯vue3項目

#創建項目
vue create resourceshow
cd resourceshow
#運行項目
npm run serve#安裝界面
npm install element-plus --save
npm i qrcode --save#編譯項目
npm run build

2.添加項目資源

新建圖片文件夾,css文件夾。

3.添加element-plus元素

在main.js文件修改如下:

//全局掛載
import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

4.修改為暗黑主題

npm i sass
npm i scss

4.1.在main.js主文件中引入暗黑樣式

import 'element-plus/theme-chalk/dark/css-vars.css'

4.2.添加自定義樣式文件

import './assets/main.css'

main.css中內容為:

html.dark {--bPageBgColor: #232323;--bTextColor: #fff;--roleHeaderBgColor: #0e0e0e;--selectRowBgColor: #414243;
}

4.3.html頁面html標簽添加樣式

<html lang="" class="dark">

5.常見錯誤

5.1.未使用變量

error ‘defaultdata’ is assigned a value but never used no-unused-vars

在 package.json 的 rules 里面 添加: “no-unused-vars”: “off” 然后重啟項目。

    "rules": {"no-unused-vars": "off"}

5.2.關閉typescript檢查

在設置中搜validate->往下滑找到Tyscript>Validate:Enable選項,取消勾選->重啟一下vscode
在這里插入圖片描述

5.3.調試器支持

在 package.json 的 rules 里面 添加:“no-debugger”: “off” 然后重啟項目。

"no-debugger": "off"

5.4.允許未到達代碼和未定義代碼

"rules": {"no-unused-vars": "off","no-debugger": "off","no-undef": 0 ,"no-unreachable": 0
}

6.element常用標簽

6.1.下拉列表|el-select

下拉列表數據綁定。

<template><img alt="Vue logo" src="../img/banner.png"><div><el-button v-model="isDark" type="primary">Primary</el-button></div><el-switch v-model="isDark"/><el-select v-model="user.name" placeholder="請選擇"><el-option v-for="item in nameList" :key="item" :label="item" :value="item"></el-option></el-select><p>Message is: {{ user.name }}</p></template><script>
import { useDark, useToggle } from '@vueuse/core'// const isDark = useDark()
// const toggleDark = useToggle(isDark)export default {name: 'App',components: {//HelloWorld},data() {return {nameList: ["clz", "czh", "ccc"],user: {name: ""},};}
}
</script>

6.2.對話框|el-dialog

el-dialog 是 Element UI 框架中的一個組件,用于創建對話框,提供了豐富的功能和選項,可以用來創建各種類型的對話框,如信息確認框、表單填寫框等。

<template><div id="Login"><el-dialog title="登錄" v-model="dialogVisible" width="300px" :before-close="LoginClose"><img width="248px" height="248px" src="../assets/weixin248.png"><template #footer><span class="dialog-footer"><el-button @click="LoginClose">取 消</el-button><el-button type="primary" @click="LoginOK">確 定</el-button></span></template></el-dialog></div>
</template><script>
import { ref, watch } from 'vue'export default {emits:["Custom-LoginOK"],props: {visible: {type: Boolean,default: false}},setup(props, ctx) {const dialogVisible = ref(false)const LoginClose = () => {//修改屬性值ctx.emit("update:visible", false);//dialogVisible.value=false;};const LoginOK = () => {//ctx.emit("update:visible", false);ctx.emit("Custom-LoginOK","");}//屬性變換值也發生變化watch(() => props.visible, (val) => {console.log(props.visible, val);dialogVisible.value = val});return {dialogVisible,LoginOK,LoginClose}}
}
</script><!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped></style>

7.用法

7.1.其它函數訪問data數據

其它響應函數中訪問data函數中的數據對象,可以使用this關鍵詞,如methods對象中的ClearData函數。

export default {name: 'App',components: {//HelloWorld},data() {return {codebarNameList: ["ean13", "code128", "code39", "code93", "ean8", "code11", "二維碼"],fontNameList: ["Arial", "宋體", "黑體", "微軟雅黑"],codebarPara: {name: "ean13",width: 40,height: 15,fontSize: 7.5,fontName: "Arial",data: "",space: 1,},};},methods: {    ClearData(){this.codebarPara.data="";//const message = ref('Hello Vue3');}}
}

7.2.reactive的使用-異步回調函數中data中數據的引用

在介紹ref和reactive之前,我們先了解一下什么是響應式對象。簡單來說,響應式對象是指當數據發生改變時,相關的視圖會自動更新。這意味著我們只需要關注數據的變化,而無需手動去更新視圖。Vue 3通過使用ref和reactive來實現響應式。

import { useDark, useToggle } from '@vueuse/core'
import { ref, computed } from 'vue';
import { reactive } from 'vue';// const isDark = useDark()
// const toggleDark = useToggle(isDark)
const CodeBarData = ref(null);//excel數據處理
function ExcelDataOpt(excelData) {//刪除/rexcelData = excelData.replace(/\r/g, '');//\t轉|excelData = excelData.replace(/\t/g, '|');return excelData;
}export default {name: 'Test',components: {//HelloWorld},data() {return {codebarPara: {name: "ean13",width: 40,height: 15,fontSize: 7.5,fontName: "Arial",data: "",space: 1,},};},methods: {CodebarGenerate() {},ClearData() {this.codebarPara.data = "";//const message = ref('Hello Vue3');},ParseDataFromExcel() {//獲取剪貼板數據async function GetClipData() {var source = await navigator.clipboard.readText();return source;}//綁定當前對象數據let thisData = reactive(this);GetClipData().then(function (data) {//console.log(data);thisData.codebarPara.data = ExcelDataOpt(data);});}}
}

reactive() 雖然強大,但也有以下幾條限制:

a.僅對對象類型有效(對象、數組和 Map、Set 這樣的集合類型),而對 string、number 和 boolean 這樣的原始類型無效。
b.因為 Vue 的響應式系統是通過屬性訪問進行追蹤的,如果我們直接“替換”一個響應式對象,這會導致對初始引用的響應性連接丟失。

<script setup>
import { reactive } from 'vue'let state = reactive({ count: 0 })
function change() {// 非響應式替換state = reactive({ count: 1 })
}
</script><template><button @click="change">{{ state }} <!-- 當點擊button時,始終顯示為 { "count": 0 } --></button>
</template>

c.將響應式對象的屬性賦值或解構至本地變量,或是將該屬性傳入一個函數時,會失去響應性。

const state = reactive({ count: 0 })// n 是一個局部變量,和 state.count 失去響應性連接
let n = state.count
// 不會影響 state
n++// count 也和 state.count 失去了響應性連接
let { count } = state
// 不會影響 state
count++// 參數 count 同樣和 state.count 失去了響應性連接
function callSomeFunction(count) {// 不會影響 statecount++
}
callSomeFunction(state.count)

7.3.ref的使用-異步回調函數中data中數據的引用

在介紹ref和reactive之前,我們先了解一下什么是響應式對象。簡單來說,響應式對象是指當數據發生改變時,相關的視圖會自動更新。這意味著我們只需要關注數據的變化,而無需手動去更新視圖。Vue 3通過使用ref和reactive來實現響應式。
Vue 提供了一個 ref() 方法來允許我們創建使用任何值類型的響應式 ref 。

import { useDark, useToggle } from '@vueuse/core'
import { ref, computed } from 'vue';
import { reactive } from 'vue';
export default {name: 'Test',components: {//HelloWorld},data() {return {codebarPara: {name: "ean13",width: 40,height: 15,fontSize: 7.5,fontName: "Arial",data: "",space: 1,},};},methods: {CodebarGenerate() {},ClearData() {this.codebarPara.data = "";//const message = ref('Hello Vue3');},ParseDataFromExcel() {//獲取剪貼板數據async function GetClipData() {var source = await navigator.clipboard.readText();return source;}//綁定當前對象數據let thisData = ref(this);GetClipData().then(function (data) {//console.log(data);thisData.value.codebarPara.data = ExcelDataOpt(data);});}}
}

7.4.setup函數返回值-及與data和method的關系

setup函數的使用,通過返回值將數據和方法傳到頁面,返回值也可以是一個箭頭函數
setup先于data和method執行,所以無法讀取到this和data,method的內容,反之可以。可以直接將方法放在setup下,然后再進行暴露即可使用。
【注意】setup 內部的屬性和方法,必須 return 暴露出來,將屬性掛載到實例上,否則沒有辦法使用。

setup函數:第一個參數是 props ,表示父組件給子組件傳值,props 是響應式的,當傳入新的 props 時,自動更新。
第二個參數是context 上下文環境,其中包含了 屬性、插槽、自定義事件三部分。

范例1,互訪問

  import { useDark, useToggle } from '@vueuse/core'import { getCurrentInstance, reactive, toRefs, watch, ref } from 'vue'import { onMounted } from 'vue'export default {name: 'test',components: {//HelloWorld},data() {return {codebarNameList: ["ean13", "code128", "code39", "code93", "ean8", "code11", "二維碼"],fontNameList: ["Arial", "宋體", "黑體", "微軟雅黑"],codebarPara: {name: "ean13",width: 40,height: 15,fontSize: 7.5,fontName: "Arial",data: "",space: 1,},};},setup(props, ctx) {const hello = ref(null);const { proxy } = getCurrentInstance();//全局this對象//加載onMounted(() => {console.log(hello.value); // <div>知了插件</div>var helloObj = hello.value;helloObj.id="123";});const ClearDataClicked = () => {//訪問data數據成員對象,并修改值proxy.codebarPara.data="";};return {hello,ClearDataClicked}},methods: {CodebarGenerate() {//訪問setup和data中暴露的值和函數this.ClearDataClicked();return; },  ParseDataFromExcel(){//獲取剪貼板數據async function GetClipData() {var source = await navigator.clipboard.readText();        return source;}//綁定當前對象數據let thisData = ref(this);GetClipData().then(function(data){//console.log(data);thisData.value.codebarPara.data=ExcelDataOpt(data);//hello.value=data;});      }}}

范例2.常用組織

import { useDark, useToggle } from '@vueuse/core'
import { defineComponent, getCurrentInstance, reactive, toRefs, watch, ref } from 'vue'
import { onMounted } from 'vue'// const isDark = useDark()
// const toggleDark = useToggle(isDark)//excel數據處理
function ExcelDataOpt(excelData) {//刪除/rexcelData = excelData.replace(/\r/g, '');//\t轉|excelData = excelData.replace(/\t/g, '|');return excelData;
}export default {name: 'App',components: {//HelloWorld},data() {return {codebarNameList: ["ean13", "code128", "code39", "code93", "ean8", "code11", "二維碼"],fontNameList: ["Arial", "宋體", "黑體", "微軟雅黑"],codebarPara: {name: "ean13",width: 40,height: 15,fontSize: 7.5,fontName: "Arial",data: "",space: 1,},};},setup(props, ctx) {const CodebarParaData = ref(null);onMounted(() => {console.log(CodebarParaData.value); // <div>知了插件</div>});const { proxy } = getCurrentInstance();const ClearDataClicked = () => {var cd = proxy.codebarPara;cd.data = "";};const CodebarGenerate = () => {      }const ParseDataFromExcel = () => {//獲取剪貼板數據async function GetClipData() {var source = await navigator.clipboard.readText();return source;}GetClipData().then(function (data) {//console.log(data);proxy.codebarPara.data = ExcelDataOpt(data);//hello.value=data;});}return {hello,ClearDataClicked,CodebarGenerate,ParseDataFromExcel}},methods: {}
}

7.5.getCurrentInstance

getCurrentInstance 只能在 setup 或生命周期鉤子中使用,內部api建議不要使用。

7.6.純setup-組合式api綁定范例

<template>
<el-input ref="CodebarParaData" type="textarea" v-model="codebarPara.data" :autosize="{ minRows: 5, maxRows: 10 }"></el-input>
</template>
<script>
import { useDark, useToggle } from '@vueuse/core'
import { getCurrentInstance, reactive, toRefs, watch, ref } from 'vue'
import { onMounted } from 'vue'export default {name: 'App',components: {//HelloWorld},data() {return {      };},setup(props, ctx) {const CodebarParaData = ref(null);onMounted(() => {console.log(CodebarParaData.value); // <div>知了插件</div>});const codebarNameList = ref(["ean13", "code128", "code39", "code93", "ean8", "code11", "二維碼"]);const fontNameList = ref(["Arial", "宋體", "黑體", "微軟雅黑"]);const codebarPara = ref({name: "ean13",width: 40,height: 15,fontSize: 7.5,fontName: "Arial",data: "",space: 1,});const { proxy } = getCurrentInstance();const ClearDataClicked = () => {codebarPara.value.data = "";};const CodebarGenerate = () => {}const ParseDataFromExcel = () => {//獲取剪貼板數據async function GetClipData() {var source = await navigator.clipboard.readText();return source;}GetClipData().then(function (data) {codebarPara.value.data = ExcelDataOpt(data);});}return {CodebarParaData,ClearDataClicked,CodebarGenerate,ParseDataFromExcel,codebarNameList,fontNameList,codebarPara}},methods: {}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;/*color: #2c3e50;*/color: var(--bTextColor);margin: 0px;padding-left: 0;height: 100%;
}
</style>

7.7.this對象

Vue 自動為 methods 綁定 this,以便于它始終指向組件實例。這將確保方法在用作事件監聽或回調時保持正確的 this 指向。在定義 methods 時應避免使用箭頭函數,因為這會阻止 Vue 綁定恰當的 this 指向。

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

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

相關文章

UE5的安裝與基本操作(一)

文章目錄 前言安裝UE5新建第一個游戲項目基本游覽方式對目標進行變換各種變換對齊 快速定位目標 總結 前言 Unreal Engine 5 (UE5) 是一款由 Epic Games 開發的實時 3D 創作平臺&#xff0c;用于制作游戲、電影、動畫、建筑可視化和其他類型的交互式體驗。UE5 提供了一系列強大…

Flutter第十五彈 Flutter插件

目標&#xff1a; 1.Flutter插件是什么&#xff1f;有什么作用&#xff1f; 插件 (plugin) 是 package 的一種&#xff0c;全稱是 plugin package&#xff0c;我們簡稱為 plugin&#xff0c;中文叫插件。 2.怎么創建Flutter插件&#xff1f; 一、什么是插件 在flutter中&am…

【成都活動邀請函】7月6 | PowerData 數字經濟-“成都“開源行!

【成都活動邀請函】7月6 | PowerData 數字經濟-"成都"開源行&#xff01; 活動介紹活動信息線上直播掃碼報名往期活動回顧專注數據開源&#xff0c;推動大數據發展 活動介紹 九天開出一成都&#xff0c;萬戶千門入畫圖。 自古以來&#xff0c;成都便是國家發展的重要…

第2章-Python編程基礎

#本章目標 1&#xff0c;了解什么是計算機程序 2&#xff0c;了解什么是編程語言 3&#xff0c;了解編程語言的分類 4&#xff0c;了解靜態語言與腳本語言的區別 5&#xff0c;掌握IPO程序編寫方法 6&#xff0c;熟練應用輸出函數print與輸入函數input 7&#xff0c;掌握Python…

【機器學習】機器學習的重要技術——生成對抗網絡:理論、算法與實踐

引言 生成對抗網絡&#xff08;Generative Adversarial Networks, GANs&#xff09;由Ian Goodfellow等人在2014年提出&#xff0c;通過生成器和判別器兩個神經網絡的對抗訓練&#xff0c;成功實現了高質量數據的生成。GANs在圖像生成、數據增強、風格遷移等領域取得了顯著成果…

leetCode.97. 交錯字符串

leetCode.97. 交錯字符串 題目思路 代碼 class Solution { public:bool isInterleave(string s1, string s2, string s3) {int n s1.size(), m s2.size();if ( s3.size() ! n m ) return false;vector<vector<bool>> f( n 1, vector<bool> (m 1));s1 …

C語言使用void *類型作為函數傳參

C語言使用void *怎么理解&#xff1a; 根據本人的理解&#xff0c;他就是指向操作數據區的首地址而已 凡是void指的數據區都要進行第二次初始化數據類型&#xff08;即dtype p(dtype)pdata&#xff09;*。 舉兩個例子&#xff1a; 傳入函數&#xff1a; void tx_data(void …

Sparse4D v3: Advancing End-to-End 3D Detection and Tracking

Sparse4D v3: Advancing End-to-End 3D Detection and Tracking 相關內容&#xff1a;總覽&#xff0c;Sparse4D v1&#xff0c;Sparse4D v2&#xff0c; 單位&#xff1a;地平線(Sparse4D v1 v2 原班人馬) GitHub&#xff1a;https://github.com/HorizonRobotics/Sparse4D …

昇思25天學習打卡營第5天 | 網絡構建

目錄 1.定義模型類 2.模型層 nn.Flatten nn.Dense nn.ReLU nn.SequentialCell nn.Softmax 3.模型參數 代碼實現&#xff1a; 總結 神經網絡模型是由神經網絡層和Tensor操作構成的&#xff0c; mindspore.nn提供了常見神經網絡層的實現&#xff0c; 在MindSpore中&a…

啟動spring boot項目停止 提示80端口已經被占用

可能的情況: 檢查并結束占用進程: 首先,你需要確定哪個進程正在使用80端口。在Windows上,可以通過命令行輸入netstat -ano | findstr LISTENING | findstr :80來查看80端口的PID,然后在任務管理器中結束該進程。在

AI智能客服項目拆解(1) 產品大綱

本文作為拆解AI智能客服項目的首篇&#xff0c;以介紹產品大綱為主。后續以某AI智能客服產品為例&#xff0c;拆解相關技術細節。 AI智能客服是一種基于人工智能技術的客戶服務解決方案&#xff0c;旨在提高客戶滿意度和優化企業運營。利用人工智能和自然語言處理技術&#xff…

MySQL之索引失效的情況

什么情況下索引會失效&#xff1f; 違反最左前綴原則范圍查詢右邊的列不能使用索引不要在索引列上進行運算操作字符串不加單引號導致索引失效以%開頭的like模糊查詢 什么情況下索引會失效&#xff1f; 示例&#xff0c;有user表如下 CREATE TABLE user (id bigint(20) NOT NU…

實驗1 多層感知器設計(MLP)

1.實驗目的 掌握多層感知器的原理。掌握多層感知器的設計、訓練和測試。2.實驗要求 設計一個多層感知器,用于對給定的數據進行分類。要求代碼格式規范,注釋齊全,程序可正常運行。 3.模型設計 實驗設計一個多層感知機,三層機構,只含一個隱藏層,輸入層,隱藏層,輸出層 1…

JAVA期末速成庫(11)第十二章

一、習題介紹 第十二章 Check Point&#xff1a;P454 12.1&#xff0c;12.9&#xff0c;12.10&#xff0c;12,12 二、習題及答案 12.1 What is the advantage of using exception handling? 12.1使用異常處理的優勢是什么? 答:使用異常處理有以下優勢&#xff1a; 1. 提高…

C++ 模板類的示例-數組

類模板可以有非通用類型參數&#xff1a;1&#xff09;通常是整型&#xff08;C20標準可以用其它的類型&#xff09;&#xff1b;2&#xff09;實例化模板時必須用常量表達式&#xff1b;3&#xff09;模板中不能修改參數的值&#xff1b;4&#xff09;可以為非通用類型參數提供…

Android中使用performClick觸發點擊事件

Android中使用performClick觸發點擊事件 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討在Android開發中如何使用 performClick() 方法來觸發點擊…

數據庫-python SQLite3

數據庫-python SQLite3 一&#xff1a;sqlite3 簡介二: sqlite3 流程1> demo2> sqlite3 流程 三&#xff1a;sqlite3 step1> create table2> insert into3> update4> select1. fetchall()2. fetchone()3. fetchmany() 5> delete6> other step 四&#…

Spark join數據傾斜調優

Spark中常見的兩種數據傾斜現象如下 stage部分task執行特別慢 一般情況下是某個task處理的數據量遠大于其他task處理的數據量&#xff0c;當然也不排除是程序代碼沒有冗余&#xff0c;異常數據導致程序運行異常。 作業重試多次某幾個task總會失敗 常見的退出碼143、53、137…

【電路筆記】-放大器類型

放大器類型 文章目錄 放大器類型1、概述2、關于偏置的注意事項3、A類(Class A)放大器4、B類(Class B)放大器5、AB類(Class AB)放大器6、C類(Class C)放大器7、總結1、概述 放大器通常根據輸出級的結構進行分類。 事實上,功率放大確實發生在該階段,因此輸出信號的質量和…

Arduino (esp ) 下String的內存釋放

在個人的開源項目 GitHub - StarCompute/tftziku: 這是一個通過單片機在各種屏幕上顯示中文的解決方案 中為了方便快速檢索使用了string&#xff0c;于是這個string在esp8266中占了40多k,原本以為當string設置為""的時候這個40k就可以回收&#xff0c;結果發覺不行…