三、手把手教你 Vue2+Ts

Vue2+Ts

君自故乡来

新建vue文件

<template>
    <div class="about">
        <h1>{{message }}</h1>
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component
export default class HelloWorld extends Vue {
    message = "Hello TypeScript"
}
</script>

image.png

  • @Component 让他成为一个vue组件
  • message成为 HelloWorld类的属性,用{{message }}调用

应知故乡事

新增一个方法

<template>
    <div class="about">
        <h1>{{message }}</h1>
        <button @click="hello">来点我呀</button>
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component
export default class HelloWorld extends Vue {
    message = "Hello TypeScript";

    hello() {
        console.log(this.message);
    }
}
</script>

image.png

来日绮窗前

Computed 计算属性

<template>
   <div class="about">
       <h1>{{message }}</h1>
       <button @click="hello">来点我呀</button>
       <input v-model="name">
   </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component
export default class HelloWorld extends Vue {
   message = "Hello TypeScript";
   firstName = "尼古拉斯"
   lastName = "赵四";

   hello() {
       console.log(this.message);
   }

   get name(): string {
       return this.firstName + "·" + this.lastName;
   }

   set name(val) {
       const splitted = val.split(' ')
       this.firstName = splitted[0]
       this.lastName = splitted[1] || ''
   }
}
</script>

image.png

寒梅著花未

生命周期,和之前vue2中的一样

<template>
    <div class="about">
        <h1>{{message }}</h1>
        <button @click="hello">来点我呀</button>
        <input v-model="name">
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component
export default class HelloWorld extends Vue {
    message = "Hello TypeScript";
    firstName = "尼古拉斯"
    lastName = "赵四";

    hello() {
        console.log(this.message);
    }

    get name(): string {
        return this.firstName + "·" + this.lastName;
    }

    set name(val) {
        const splitted = val.split(' ')
        this.firstName = splitted[0]
        this.lastName = splitted[1] || ''
    }

    created(): void {
        console.log("created")
    }

    beforeCreate(): void {
        console.log("beforeCreate")
    }

    mounted(): void {
        console.log("mounted")
    }

    beforeMount(): void {
        console.log("beforeMount")
    }

    destroyed(): void {
        console.log("destroyed")
    }

    beforeDestroy(): void {
        console.log("beforeDestroy")
    }
}
</script>

image.png

大多数都会调用其他组件,该怎么办呢?还记得那个home.vue吗?

@Component({
    components:{组件名}
    })
<template>
    <div class="about">
        <div>
            <h1>{{message }}</h1>
            <button @click="hello">来点我呀</button>
            <input v-model="name">
        </div>
        <!--引用组件-->
        <test></test>
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
import test from "@/components/test.vue";

@Component({
    components: {test}
})
export default class HelloWorld extends Vue {
    message = "Hello TypeScript";
    firstName = "尼古拉斯"
    lastName = "赵四";

    hello() {
        console.log(this.message);
    }

    get name(): string {
        return this.firstName + "·" + this.lastName;
    }

    set name(val) {
        const splitted = val.split(' ')
        this.firstName = splitted[0]
        this.lastName = splitted[1] || ''
    }

    created(): void {
        console.log("created")
    }

    beforeCreate(): void {
        console.log("beforeCreate")
    }

    mounted(): void {
        console.log("mounted")
    }

    beforeMount(): void {
        console.log("beforeMount")
    }

    destroyed(): void {
        console.log("destroyed")
    }

    beforeDestroy(): void {
        console.log("beforeDestroy")
    }
}
</script>

image.png

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值