Vue項(xiàng)目

1佑颇、npm install

安裝npm包
問題:

1低零、npm install報(bào)錯(cuò)npm ERR Could not resolve dependency: npm ERR peer...
報(bào)錯(cuò)原因

在新版本的npm中征绸,默認(rèn)情況下则剃,npm install遇到?jīng)_突的peerDependencies時(shí)將失敗拢切。

解決辦法

使用--force或--legacy-peer-deps可解決這種情況巾兆。
--force 會(huì)無視沖突猎物,并強(qiáng)制獲取遠(yuǎn)端npm庫資源,當(dāng)有資源沖突時(shí)覆蓋掉原先的版本角塑。
--legacy-peer-deps:安裝時(shí)忽略所有peerDependencies蔫磨,忽視依賴沖突,采用npm版本4到版本6的樣式去安裝依賴圃伶,已有的依賴不會(huì)覆蓋堤如。
建議用--legacy-peer-deps 比較保險(xiǎn)一點(diǎn)

在終端重新安裝即可解決
npm install --legacy-peer-deps

2、package.json文件

"scripts": { "dev": "vue-cli-service serve --open", "build": "vue-cli-service build", "lint": "vue-cli-service lint" },
dev:鼠標(biāo)放在上面點(diǎn)擊運(yùn)行腳本窒朋,就會(huì)啟動(dòng)項(xiàng)目
build:鼠標(biāo)放在上面點(diǎn)擊運(yùn)行腳本搀罢,就會(huì)打包
lint:代碼檢測(cè)

"dependencies":
這里面就是依賴的第三方庫

3、第三方類庫的存放位置

在項(xiàng)目中引入的第三方類庫都放在這個(gè)文件夾下面:


image.png

4炼邀、iView組件庫這個(gè)要看一下

(1)Vue應(yīng)用IView中魄揉,table中使用Poptip被遮擋顯示不全
添加transfer參數(shù)
參考:https://blog.csdn.net/qq_40743463/article/details/104894357

5、差值表達(dá)式

{{}} 可以在視圖中顯示data中的數(shù)據(jù)
(1)其用的數(shù)據(jù)必須在data中存在
(2)不能使用js語句if for啥的
(3)不能在屬性中使用

6拭宁、vue指令

vue指令其實(shí)就是html標(biāo)簽的特殊屬性洛退,一共有14個(gè)v-開頭的指令
v-這些指令是干啥的,怎么用杰标,用的時(shí)候注意什么

  • v-bind

用于訪問data中的數(shù)據(jù)兵怯,在標(biāo)簽的屬性中使用
v-bind:src 可以簡(jiǎn)寫為 :src

  • v-model

(1)用于表單元素上,<input> <textarea> < select >腔剂,創(chuàng)建數(shù)據(jù)的雙向綁定媒区。
(2)會(huì)忽略掉表單元素原本的value
(3)v-model雙向綁定實(shí)現(xiàn)的原理
用到的技術(shù)是數(shù)據(jù)劫持,ES5中的一個(gè)語法:Object.defineProperty,所以vue不支持IE8以下的版本袜漩。
給對(duì)象的某個(gè)屬性添加修飾:

let temp = 屬性
Object.defineProperty(對(duì)象,屬性名,{修飾對(duì)象
//里面重寫set和get方法
get() {
  return temp
},
set(value) {
  temp = value
  input.value = value
}
})
  • v-on

作用:用來給元素注冊(cè)點(diǎn)擊事件
語法:v-on:事件名="事件函數(shù)"

v-on:click="clickEvent"可以簡(jiǎn)寫為@click="clickEvent"

注意點(diǎn):
(1)傳參數(shù)

//事件函數(shù)加上()即可绪爸,里面?zhèn)魅雲(yún)?shù)
<button type="button" @click="parameClick(name)">傳參數(shù)</button>
<script>
    export default {
        data() {
            return {
                name: '你好'
            }
        },
        methods: {
            parameClick(name) {
                console.log(name)
            }
        }
    }
</script>

(2)事件修飾符
在事件處理程序中調(diào)用 event.preventDefault() 或 event.stopPropagation() 是非常常見的需求。盡管我們可以在方法中輕松實(shí)現(xiàn)這點(diǎn)宙攻,但更好的方式是:方法只有純粹的數(shù)據(jù)邏輯奠货,而不是去處理 DOM 事件細(xì)節(jié)。
為了解決這個(gè)問題座掘,Vue.js 為 v-on 提供了事件修飾符递惋。之前提過,修飾符是由點(diǎn)開頭的指令后綴來表示的溢陪。
.stop
.prevent
.capture
.self
.once
.passive
其中.stop 和 .prevent是最常用的

<!-- 阻止單擊事件繼續(xù)傳播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重載頁面(即阻止默認(rèn)事件) -->
<form v-on:submit.prevent="onSubmit"></form>

(3)按鍵修飾符
在監(jiān)聽鍵盤事件時(shí)萍虽,我們經(jīng)常需要檢查詳細(xì)的按鍵。Vue 允許為 v-on 在監(jiān)聽鍵盤事件時(shí)添加按鍵修飾符:

<input @keyup.enter="aClick()" />
  • v-show VS v-if

(1)v-show控制元素顯示和隱藏形真,v-show=”bool“杉编,他是通過樣式display屬性來控制的顯示和隱藏
(2)v-if也是控制元素顯示和隱藏,但是v-if是銷毀和創(chuàng)建没酣,用于一次性的顯示隱藏

  • v-for

我們可以用 v-for 指令基于一個(gè)數(shù)組來渲染一個(gè)列表王财。v-for 指令需要使用 item in items 形式的特殊語法,其中 items 是源數(shù)據(jù)數(shù)組裕便,而 item 則是被迭代的數(shù)組元素的別名。

<ul id="example-1">
  <li v-for="item in items" :key="item.message">
    {{ item.message }}
  </li>
</ul>

注意點(diǎn)
(1):key是必須的见咒,提高渲染效率
(2)也可以用 v-for 來遍歷一個(gè)對(duì)象的 property偿衰。
(3)也可以在 <template> 上使用 v-for
(4)也可以在組件上使用 v-for

7、計(jì)算屬性

首先來看例子:

var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: {
    // 計(jì)算屬性的 getter
    reversedMessage() {
      // `this` 指向 vm 實(shí)例
      return this.message.split('').reverse().join('')
    }
  }
})

(1)計(jì)算屬性要寫到computed中
(2)計(jì)算屬性寫法上是一個(gè)函數(shù)改览,但實(shí)質(zhì)上是一個(gè)屬性下翎,其對(duì)應(yīng)的是函數(shù)的返回值
(3)計(jì)算屬性只會(huì)計(jì)算一次,結(jié)果會(huì)緩存起來宝当,高效
(4)計(jì)算屬性只有依賴的數(shù)據(jù)發(fā)生了變化视事,才會(huì)重新計(jì)算
(5)什么時(shí)候使用計(jì)算屬性?需要在插值表達(dá)式或者指令中使用復(fù)雜的邏輯庆揩,都應(yīng)該使用計(jì)算屬性
(6)計(jì)算屬性的setter
計(jì)算屬性默認(rèn)只有g(shù)etter

 computed: {
  total() {
    return this.num1 + this.num2
  }
}

但是當(dāng)v-model雙向綁定的是一個(gè)計(jì)算屬性的話俐东,就需要書寫計(jì)算屬性的完整形態(tài),否則會(huì)報(bào)錯(cuò)订晌,代碼如下:

computed: {
  total: {
    get() {
      return 
    },
    set() {

    }
  }
}

8虏辫、監(jiān)聽屬性

(1)監(jiān)聽屬性寫在watch中
(2)作用,監(jiān)聽data中數(shù)據(jù)的改變
(3)語法簡(jiǎn)單類型 :watch:{ msg(newValue, oldValue) {} }
復(fù)雜類型:

//這是一個(gè)對(duì)象
list: {
  handler(value) {
    localStorage.setItem('todos', JSON.stringify(value))
  },
  deep: true,  //深層次監(jiān)聽
  immediate:true  //是否立刻監(jiān)聽
}

9锈拨、VUE的生命周期

  • 初始化階段

(1)new Vue()初始化Vue實(shí)例
(2)初始化內(nèi)部的一些事件砌庄、生命周期
(3)初始化vue內(nèi)部的數(shù)據(jù),把data中的數(shù)據(jù)都劫持給vm,這一步開始vm上就有數(shù)據(jù)
(4)判斷是否有el 1.指定el參數(shù) 2.vm.$mount[#'app']
(5)確定是否有模板 1.如果有templete娄昆,直接templete作為模板 2.如果沒有templete佩微,那么el本身就是模板
(6)結(jié)合數(shù)據(jù)和模板,動(dòng)態(tài)渲染結(jié)構(gòu)萌焰,然后把原來的el替換掉

  • 數(shù)據(jù)更新階段

(1)等待數(shù)據(jù)發(fā)生改變
(2)視圖自動(dòng)更新數(shù)據(jù)發(fā)生改變的那部分

  • 銷毀階段

(1)等待調(diào)用vm.$destrory()方法
(2)卸載vue內(nèi)部的事件和監(jiān)聽喊衫、vue的數(shù)據(jù)再次發(fā)生改變頁面不再更新

鉤子函數(shù):
vue生命周期4組8個(gè)常用 創(chuàng)建前后,掛載前后杆怕,更新前后族购,銷毀前后

    beforeCreate() {
        console.log('beforeCreate', '創(chuàng)建前');
    },
    created() {
        console.log('created', '創(chuàng)建完成');
    },
    beforeMount() {
        console.log('beforeMount', '掛載前');
    },
    mounted() {
        console.log('mounted', '掛載完成');
    },
    beforeUpdate() {
        console.log('beforeUpdate', '更新前');
    },
    updated() {
        console.log('updated', '更新完成');
    },
    beforeDestroy() {
        console.log('beforeDestroy', '銷毀前');
        clearInterval(this.interID)
    },
    destroyed() {
        console.log('Destroy', '銷毀完成');
    }
常用的鉤子函數(shù)
  • created 創(chuàng)建完成 可以獲取this ajax加載 開啟定時(shí)器
  • mounted 掛載完成(內(nèi)容以及渲染完畢) 可以獲取dom節(jié)點(diǎn)
  • beforeDestroy 銷毀前 清除定時(shí)器 移除監(jiān)聽事件
vue父子組件生命周期執(zhí)行順序
  • 加載渲染過程:父beforeCreate —> 父created —> 父beforeMount —> 子beforeCreate —> 子created —> 子beforeMount —> 子mounted —> 父mounted
  • 子組件更新過程:父beforeUpdate —> 子beforeUpdate —> 子updated —> 父updated
  • 父組件更新過程:父beforeUpdate —> 父updated
  • 銷毀過程:父beforeDestroy —> 子beforeDestroy —> 子destroyed —> 父destroyed

10、過濾器

vue提供了過濾器的語法陵珍,常用于格式化我們的文本寝杖,vue3中已經(jīng)移除,可以用計(jì)算屬性代替

11互纯、組件

(1)組件化和模塊化的區(qū)別

  • 組件化:是從UI界面的角度進(jìn)行劃分瑟幕,方便UI組件的重用
  • 模塊化:是從代碼邏輯的角度進(jìn)行劃分,帶有業(yè)務(wù)留潦,功能模塊的單一化

12只盹、refs

作用:
(1)獲取元素

<div>
<input type="text"  value="123"  ref="input">
</div>

export  default {
  data(){
      return{
      }
  },
  mounted()    {
      console.log(this.$refs.input)
  }
}

(2)獲取子組件中的data或者method

// 父組件

<template>
  <div id="app">
    <Son ref="myref"></Son>
  </div>
</template>

<script>
import Son from "./components/son";
export default {
  mounted() {
    console.log(this.$refs.myref.name); //輸出子組件data中的name的值:myhua
    this.$refs.myref.logName();//子組件中的方法
  },
  components: {
    Son
  }
};
</script>

13、js文件路徑簡(jiǎn)介

  • '/'開頭: 代表根目錄
  • './'開頭:代表當(dāng)前目錄
  • '../'開頭:代表上一級(jí)目錄
  • '@/'開頭:此特殊情況兔院,@為自定義的殖卑,一般為模塊目錄開始

14、路由

15坊萝、nrm

nrm是一個(gè)npm源管理工具孵稽,使用它可以快速切換npm源。

  • 1十偶、安裝
    npm install -g nrm
  • 2菩鲜、查看源列表(前面帶*的為當(dāng)前源)
    nrm ls
  • 3、添加新的npm源
    nrm add 別名 源地址
  • 4惦积、切換源
    nrm use 源名稱
  • 5接校、刪除源
    nrm del 源名稱

16、svg圖片的導(dǎo)入使用(vite+ts)

主要觀看這個(gè)視頻
https://www.bilibili.com/video/BV17V4y1s7Hc/?spm_id_from=333.999.0.0

  • npm引入svg庫
  • 配置vite.config.ts文件
  • 寫svg組件
  • main.ts全局引用組件
  • 在需要的地方直接使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狮崩,一起剝皮案震驚了整個(gè)濱河市蛛勉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厉亏,老刑警劉巖董习,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異爱只,居然都是意外死亡皿淋,警方通過查閱死者的電腦和手機(jī)招刹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窝趣,“玉大人疯暑,你說我怎么就攤上這事⊙剖妫” “怎么了妇拯?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洗鸵。 經(jīng)常有香客問我越锈,道長(zhǎng),這世上最難降的妖魔是什么膘滨? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任甘凭,我火速辦了婚禮,結(jié)果婚禮上火邓,老公的妹妹穿的比我還像新娘丹弱。我一直安慰自己,他們只是感情好铲咨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布躲胳。 她就那樣靜靜地躺著,像睡著了一般纤勒。 火紅的嫁衣襯著肌膚如雪坯苹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天踊东,我揣著相機(jī)與錄音北滥,去河邊找鬼。 笑死闸翅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菊霜。 我是一名探鬼主播坚冀,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鉴逞!你這毒婦竟也來了记某?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤构捡,失蹤者是張志新(化名)和其女友劉穎液南,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勾徽,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滑凉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畅姊。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咒钟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柔逼,到底是詐尸還是另有隱情较曼,我是刑警寧澤变逃,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站萍嬉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏隙疚。R本人自食惡果不足惜壤追,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甚淡。 院中可真熱鬧大诸,春花似錦、人聲如沸贯卦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撵割。三九已至贿堰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啡彬,已是汗流浹背羹与。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庶灿,地道東北人纵搁。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像往踢,于是被迫代替她去往敵國(guó)和親腾誉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容