setup+vite简单案例

本文通过三个实例展示了Vite环境下使用Vue3的scriptsetup特性进行组件开发的过程,包括父子组件通信、引入子组件和使用ref和defineProps。同时介绍了setup生命周期中的onMounted和报错的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

setup+vite简单案例

案例一

父组件源码:

<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script>

<template>
  <div>
  </div>
  <HelloWorld msg="Vite + Vue" />
</template>

<style scoped>
</style>

子组件源码:

<template>
  <h1>{{ msg }}</h1>
  <div class="card">
    <button type="button" @click="count++">count is {{ count }}</button>
  </div>
</template>

<script setup>
//ref 中定义的值, 需要通过 value 属性~ 是定义基本类型的值
import { ref } from 'vue'
//setup语法糖传值的类型用defineProps传
defineProps({
  msg: String,
})
const count = ref(0)
</script>

<style scoped>
.read-the-docs {
  color: #888;
}
</style>

运行结果

案例二

父组件源码:

<template>
  <h1>{{ msg }}</h1>
  <div class="card">
    <button type="button" @click="count++">count is {{ count }}</button>
    <!-- setup 引入组件:第二步,陈列 -->
    <NeW />
  </div>
</template>

<script setup>
//setup 引入组件:第一步,import引入。setup不像vue.js还要注入,就两个步骤。
import  NeW  from './NeW.vue'
//ref 中定义的值, 需要通过 value 属性~ 是定义基本类型的值
import { ref } from 'vue'
//setup语法糖传值的类型用defineProps传
defineProps({
  msg: String,
})
const count = ref(0)
</script>

<style scoped>
.read-the-docs {
  color: #888;
}
</style>

子组件源码: 

<template>
    <div>
1
    </div>
</template>

<script>
export default {
    setup () {
        

        return {}
    }
}
</script>

<style lang="scss" scoped>

</style>

 

运行结果

案例三:

源码:

<template>
    <div>
        <h2>count:{{ count }}</h2>
        <span>这个变量是return直接返回出来的</span>
        <h3>{{ name }}</h3>
        <span>这个变量是reactive创建的,因为是对象类型所有要用{{ obj.name1 }}来获取</span>
        <h3>{{ obj.name1 }}</h3>
        <span>循环数组里面的内容,和v2没什么区别</span>
        <h3 v-for="(val, index) in arr2" :key="index">{{ val }}</h3>
    </div>
</template>

<script>
import { onMounted, reactive, ref } from "vue";
export default {
    setup(msg) {
        //生命周期函数
        onMounted(() => {
            console.log("setup 包含的生命周期,onMounted挂载后调用");
        })
        //用ref创建定时器增加count值
        let count = ref(0)
        // console.log(count.value);
        setInterval(() => {
            (count.value)++
        }, 1000)
        console.log(msg);
        let obj = reactive({ name1: "Mr zhang" })
        let arr2 = ["1", "2", "3"]
        //return里面的都是响应式数据
        return { name: "Mr liu", count: count, obj,arr2 };
    },

    beforeCreate() {
        console.log("setup 会在 beforeCreate 之前执行。");
    }

    
}
</script>

<style lang="scss" scoped></style>

运行结果

 

报错:

解决:

<think>好的,我现在需要帮助用户寻找关于使用Vue3、Vite和TypeScript构建后台管理系统的资料或教程。首先,我要回顾用户提供的引用内容,看看有哪些信息可以利用。 用户引用了三个来源,其中引用[2]提到了在TypeScript中处理.vue文件时遇到的模块声明问题,并建议创建shims-vue.d.ts文件。引用[3]则提供了一个项目示例,地址是http://ftstudy.cn/#/home,这个项目使用了Vue3、Vite5和TypeScript,可能是一个很好的参考。引用[1]提到了Vite插件vue-setup-extend,可能和组件语法糖有关,但看起来和当前问题关联不大,暂时可以忽略。 接下来,用户需要教程或示例,所以我应该整理出步骤和资源。首先,项目初始化是基础,使用Vite创建项目。然后需要配置TypeScript,包括处理.vue文件的类型声明,这正是引用[2]中的解决方案。然后,可能需要集成UI库,比如Element-Plus,这也是常见的选择。路由和状态管理也是后台系统的关键部分,Vue Router和Pinia是Vue3推荐的工具。 另外,引用[3]中的ftstudy项目可以作为实际案例参考,用户可以访问项目地址学习。同时,可能还需要推荐一些教程链接,比如官方文档、社区教程,或者视频教程,帮助用户全面了解搭建过程。 用户可能遇到的问题,比如TypeScript配置、组件自动导入、路由配置等,都需要在步骤中提及解决方案。例如,处理.vue文件的类型声明问题已经在引用[2]中解决,创建shims-vue.d.ts文件。组件的自动导入可以使用unplugin-vue-components插件来简化。 最后,生成相关问题,帮助用户深入探索,比如性能优化、权限管理、插件使用等。这些问题应该围绕用户可能遇到的后续挑战展开。 确保回答结构清晰,分步骤说明,并引用提供的资料。同时,检查是否需要补充其他常见问题的解决方法,比如环境变量配置或构建优化,但根据现有引用,可能不需要扩展太多,保持答案简洁相关即可。</think>### Vue3 + Vite + TypeScript 后台管理系统搭建指南 #### 一、基础环境搭建 1. **项目初始化** 使用 Vite 快速创建项目: ```bash npm create vite@latest admin-system --template vue-ts ``` 选择 `vue-ts` 模板会自动集成 Vue3 和 TypeScript[^3]。 2. **解决 TypeScript 模块声明问题** 在 `src` 目录下创建 `shims-vue.d.ts` 文件,添加以下内容: ```typescript declare module "*.vue" { import type { DefineComponent } from "vue"; const component: DefineComponent<{}, {}, any>; export default component; } ``` 此配置让 TypeScript 正确识别 `.vue` 文件类型[^2]。 --- #### 二、关键技术集成 1. **UI 组件库(以 Element-Plus 为例)** 安装并配置按需加载: ```bash npm install element-plus @element-plus/icons-vue npm install -D unplugin-vue-components unplugin-auto-import ``` 修改 `vite.config.ts`: ```typescript import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()] }), Components({ resolvers: [ElementPlusResolver()] }) ] }) ``` 2. **路由配置(Vue Router)** 安装路由: ```bash npm install vue-router@4 ``` 创建路由配置文件 `src/router/index.ts`,示例结构: ```typescript import { createRouter, createWebHistory } from 'vue-router' import HomePage from '../pages/HomePage/index.vue' const routes = [{ path: '/', component: HomePage }] export default createRouter({ history: createWebHistory(), routes }) ``` --- #### 三、推荐学习资源 1. **官方文档** - [Vue3 中文文档](https://cn.vuejs.org/) - [Vite 官方指南](https://vitejs.dev/guide/) - [Element-Plus 文档](https://element-plus.org/zh-CN/) 2. **实战项目参考** 访问引用[3]的示例项目: **项目地址**:http://ftstudy.cn/#/home 该项目完整展示了后台管理系统的基础架构和模块化设计。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值