Vue3编写简单的App组件(二)

一、Vue3页面渲染基本流程

1、入口文件

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <link rel="icon" href="/favicon.ico">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vite App</title>
</head>

<body>
  <div id="app"></div>
  <script type="module" src="/src/main.ts"></script>
</body>

</html>

2、main.ts

//引入CreateApp用于创建应用
import { createApp } from "vue";
// 引入App根组件
import App from './App.vue'

createApp(App).mount('#app')

3、App.vue

一个Vue文件包含三部分:template(用来写html,搭建网页结构)、script(用来写js或ts,实现动态交互)和style(用来写css,实现网页样式)

<template>
    <!-- 写html -->
    <div class="app">
        <h1>你好啊!</h1>
    </div>

</template>

<script lang="ts">
    // 写js或者ts
    export default {
        name: 'App' //组件名
    }

</script>

<style>
    /* 写样式 */
    .app {
        background-color: #ddd;
        box-shadow: 0 0 10px;
        border-radius: 10px;
        padding: 20px;
    }
</style>

4、启动项目

二、实现一个复杂点的效果

1、Person.vue

注意:以下script中的代码,其实还是Vue2的写法。

<template>
  <div class="person">
    <h2>姓名:{{name}}</h2>
    <h2>年龄:{{age}}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">修改年龄</button>
    <button @click="showTel">查看联系方式</button>
  </div>
</template>

<script lang="ts">
  export default {
    name:'Person',
    data(){
      return {
        name:'张三',
        age:18,
        tel:'13888888888'
      }
    },
    methods:{
      // 修改姓名
      changeName(){
        this.name = 'zhang-san'
      },
      // 修改年龄
      changeAge(){
        this.age += 1
      },
      // 展示联系方式
      showTel(){
        alert(this.tel)
      }
    }
  }
</script>

<style scoped>
  .person {
    background-color: skyblue;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding: 20px;
  }
  button {
    margin: 0 5px;
  }
</style>

 2、App.vue

<template>
    <!-- 写html -->
    <h1>我是Maple:</h1>
    <div class="app">
        <h1>你好啊!</h1>
        <Person />
    </div>

</template>

<script lang="ts">

    import Person from './components/Person.vue'
    // 写js或者ts
    export default {
        name: 'App', //组件名
        components: { Person }
    }
</script>

<style>
    /* 写样式 */
    .app {
        background-color: #ddd;
        box-shadow: 0 0 10px;
        border-radius: 10px;
        padding: 20px;
    }
</style>

3、main.js

//引入CreateApp用于创建应用
import { createApp } from "vue";
// 引入App根组件
import App from './App.vue'

createApp(App).mount('#app')

4、index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <link rel="icon" href="/favicon.ico">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vite App</title>
</head>

<body>
  <div id="app"></div>
  <script type="module" src="/src/main.ts"></script>
</body>

</html>

5、页面效果

>>点击修改姓名,姓名由Maple修改为Kelly:

>>点击修改年龄,年龄会加1:

>>点击查看电话,会弹窗显示电话号码:

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给出以下步骤: 1. 创建组件 在您的项目中,创建一个 `Tooltip.vue` 组件,用于显示文字提示。代码如下: ``` <template> <div class="tooltip" v-if="visible"> {{ message }} </div> </template> <script lang="ts"> import { defineComponent, ref, watch } from 'vue'; export default defineComponent({ name: 'Tooltip', props: { content: { type: String, required: true, }, delay: { type: Number, default: 500, }, }, setup(props) { const visible = ref(false); const message = ref(props.content); let timer: any = null; watch( () => props.content, (value) => { message.value = value; visible.value = false; clearTimeout(timer); } ); const showTooltip = () => { timer = setTimeout(() => { visible.value = true; }, props.delay); }; const hideTooltip = () => { visible.value = false; clearTimeout(timer); }; return { visible, message, showTooltip, hideTooltip, }; }, }); </script> <style scoped> .tooltip { position: absolute; z-index: 9999; background-color: #333; color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 14px; line-height: 1.5; } </style> ``` 上述代码中,我们定义了一个 `Tooltip` 组件,它有两个 props:`content` 和 `delay`,分别表示提示内容和延迟显示时间。在 `setup` 函数中,我们使用 `ref` 定义了 `visible` 和 `message` 变量,分别表示提示框是否可见和提示内容。我们使用 `watch` 监听 `props.content` 的变化,当内容发生改变时,更新 `message` 变量,并隐藏提示框。当用户鼠标移入被绑定的元素时,我们使用 `setTimeout` 设置延迟,然后显示提示框;当用户鼠标移出元素时,隐藏提示框。 2. 在页面中使用组件 在需要显示提示的元素中,使用 `v-tooltip` 指令绑定提示内容,如下所示: ``` <template> <div> <button v-tooltip="'这是一个按钮'">按钮</button> <span v-tooltip="'这是一个文字'">文字</span> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; import Tooltip from './Tooltip.vue'; export default defineComponent({ name: 'App', components: { Tooltip, }, }); </script> ``` 使用 `v-tooltip` 指令时,将提示内容作为指令的参数传入即可。在组件中,我们使用 `props.content` 获取到这个内容,并将其显示在提示框中。 以上就是使用 Vue3 编写文字提示组件简单步骤,希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值