国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

2023-07-20 17:39 作者:香蕉你個不吶吶18  | 我要投稿

Vue選項

什么是選項?

使用選項式 API,我們可以用包含多個選項的對象來描述組件的邏輯,例如 `data`、`methods` 和 `mounted`。選項所定義的屬性都會暴露在函數(shù)內(nèi)部的 this 上,它會指向當(dāng)前的組件實例。

以上是官網(wǎng)對于選項的概念,簡單的說,選項是一組由Vue定義好的對象,你可以將你的代碼寫在指定的選項中,從而獲得一些 “特異功能” 。

?*注:由于選項是Vue規(guī)定好的,因此在使用中我們不能更改其名稱,也不可以重復(fù)定義*

常用選項

1. data 選項

- 必須是一個函數(shù),將組件需要使用的變量定義在此函數(shù)的返回值對象中,定義的變量將會獲得一個“特異功能” ---- 響應(yīng)式

```vue

<template>

?<div>

???<!-- 在這里使用插值表達式將name渲染到頁面 -->

???{{ name }}

?</div>

</template>


<script>

export default {

???// data選項

???data(){

???????return{

???????????// name是響應(yīng)式的

???????????name:"Jay",

???????}

???},

}

</script>

```

上面例子中的`name`就是一個響應(yīng)式數(shù)據(jù),在值發(fā)生改變時,視圖(頁面)上的`name`也會發(fā)生變化,那我們便可以通過操作`name`的變化去使視圖發(fā)生變化,而不用進行繁瑣的DOM操作,這也體現(xiàn)著Vue框架的 **數(shù)據(jù)驅(qū)動** 這一核心思想。

- 為什么數(shù)據(jù)要定義在`data`函數(shù)的返回值中,而不是定義在一個對象中?

?- 將數(shù)據(jù)定義在函數(shù)返回值中,可以確保每產(chǎn)生一個組件實例,都會調(diào)用一次函數(shù),并返回一個新的對象,開辟一塊新的空間。

?- 如果將數(shù)據(jù)定義在對象中,可能會出現(xiàn)類似于淺拷貝中出現(xiàn)的問題,即多個組件實例指向同一塊空間,一個組件實例修改數(shù)據(jù),則全部數(shù)據(jù)發(fā)生變化。

2. methods 選項

- 此選項是一個對象,其中存放著該組件要使用的函數(shù),比如事件的回調(diào)函數(shù)...


```vue

<template>

???<div>

???????<!-- 添加點擊事件,事件回調(diào)函數(shù)在methods中定義 -->

???????<button @click="add">點擊加一</button>

???????<p>{{ count }}</p>

???</div>

</template>


<script>

export default {

???data(){

???????return{

???????????count:0,

???????}

???},

???// 在methods中定義函數(shù)(方法)

???methods:{

???????add(){

???????????// 在函數(shù)中要使用data中的變量,需加this

???????????this.count++

???????},

???}

}

</script>

```

通過點擊事件改變`count`的值,從而使頁面上的值隨之變化,再次體現(xiàn) **數(shù)據(jù)驅(qū)動** 的核心思想


3. computed 計算屬性

- 計算屬性,對象形式,顧名思義,在計算屬性中保存著一系列需要經(jīng)過運算得出的屬性

```vue

<template>

???<p>路程:{{ distance }} km</p>

???<p>速度:{{ speed }} km/h</p>

???<!-- 使用計算屬性,與變量的使用相同 -->

???<p>花費的時間:{{ time }} h</p>

</template>


<script>

export default {

???data() {

???????return {

???????????distance: 1000,

???????????speed: 50,

???????}

???},

???computed: {

???????// 定義計算屬性,類似于函數(shù)的定義,返回值就是該計算屬性的值

???????time() {

???????????return this.distance / this.speed

???????}

???}

}

</script>

```

計算屬性內(nèi)部所依賴的數(shù)據(jù)發(fā)生變化時, 計算屬性本身就會自動重新計算返回一個新的計算值并緩存起來。

計算屬性內(nèi)部所依賴的數(shù)據(jù)沒有發(fā)生變化, 計算屬性會直接返回上一次緩存的值。

因此上面例子中的`distance`(路程)與`speed`(速度)無論如何變化,`time`都會計算出正確的值。

4. `directives` 選項, 定義自定義指令( 局部指令 )

我們可以在`directives`選項中創(chuàng)建自定義指令。

```vue

<template>

???<!-- 使用自定義指令 -->

???<div v-myshow="1"></div>

???<div v-myshow="0"></div>

</template>


<script>

export default {

???// 在directives中定義一個自定義指令,來模仿v-show的功能

???directives: {

???????//el:添加自定義指令的元素;binding:指令攜帶的參數(shù)

???????myshow(el, binding) {

???????????if (binding.value) {

???????????????el.style.display = "block";

???????????} else {

???????????????el.style.display = "none";

???????????}

???????}

???}

}

</script>


<style scoped>

div {

???width: 100px;

???height: 100px;

???background-color: red;

???margin: 10px;

}

</style>

```

像以上這種,在組件中定義的指令是局部指令,只能在本組件中使用,全局指令需要在`main.js`文件中定義,全局指令在任何`.vue`文件中都可使用。


*注意: 當(dāng)局部指令和全局指令沖突時, 局部指令優(yōu)先生效.*

```js

var app = createApp(App)


//定義全局指令

app.directive("myshow", (el, binding) => {

???if (binding.value) {

???????el.style.display = "block";

???} else {

???????el.style.display = "none";

???}

})

// 全局指令可在任何組件使用

```

5. `components`組件選項(注冊局部組件)

- 在一個組件中我們可能會使用到其他組件,在將組件引入后,需要在`components`中進行注冊,才能使用。

```vue

<template>

???<!-- 使用組件 -->

???<Test />

</template>


<script>

// 引入組件

import Test from './Test.vue'


export default {

???// 注冊組件

???components: {

???????Test

???},

}

</script>

```

局部組件只能在當(dāng)前組件內(nèi)部使用,需要在任何組件中使用,需要在`main.js`文件中注冊為全局組件

```js

// 引入組件

import Test from './Test.vue'

// 注冊全局組件,可在所有.vue文件中使用

app.component('Test',Test);

```

6. 其他

`filters` 選項, 定義過濾器,vue2中使用,Vue3中已經(jīng)棄用



千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)的評論 (共 條)

分享到微博請遵守國家法律
九寨沟县| 新巴尔虎右旗| 潞城市| 凯里市| 西和县| 靖远县| 定西市| 昭通市| 长寿区| 庆云县| 灵台县| 水城县| 西峡县| 绥芬河市| 苏尼特右旗| 中卫市| 石阡县| 项城市| 依安县| 运城市| 洛南县| 黄梅县| 天峨县| 镇远县| 泰兴市| 曲麻莱县| 长沙市| 安龙县| 拜城县| 永城市| 南丹县| 贵定县| 皋兰县| 孟村| 无棣县| 新泰市| 班玛县| 龙井市| 旺苍县| 克拉玛依市| 湘阴县|