vite搭建vue3项目

news2024/11/25 13:13:28

参考视频

1.使用npm搭建vite项目,会自动搭建vue3项目

npm create vite@latest
yarn create vite

2.手动搭建vue3项目

  • 创建一个项目名称的文件夹
  • 执行命令:npm init -y 快速的创建一个默认的包信息
  • 安装vite: npm i vite -D
    -D开发环境的依赖
    在这里插入图片描述
  • 安装vue,现在默认是vue3. 执行命令: npm i vue -D/-S都可以
  • 创建index.html文件,src=“入口js文件” ,添加id="app"挂载点
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <script type="module" src="./src/main.js"></script>
</body>
</html>
  • 创建src目录下的js入口文件main.js
  • 创建App.vue组件,并定义路由出口
<template>
    <router-view /> <!--  定义路由出口 -->
</template>
  • 在main.js文件中引入App.vue文件
import { createApp } from "vue";
import App from './App.vue';
const app = createApp(App);
app.mount('#app');
  • 由于html文件中不能跑App.vue文件,需要安装一个插件:执行命令 npm i @vitejs/plugin-vue -D ,如果npm run dev不报错不需要安装
    在这里插入图片描述

  • 配置vite.config.js文件,如果npm run dev不报错不需要配置以下代码

import { defineConfig } from "vite";
import Vue from '@vitejs/plugin-vue';

export default defineConfig({
    plugins: [Vue()]
})

3.在vite+vue3项目中使用vue-router和pinia

  • 安装vue-router,执行命令: npm i vue-router -D
  • src目录下创建router.js文件
import { createRouter, createWebHistory } from "vue-router";

const router = createRouter({
    routes: [],
    history: createWebHistory()
})

export default router;

然后需要在入口js文件中挂载路由

入口main.js文件中
import { createApp } from "vue";
import App from './App.vue';
import router from './modules/router.js'; // 导入路由
const app = createApp(App);
app.use(router); // ----挂载路由----
app.mount('#app');
  • 安装pinia 执行命令: npm i pinia -D
  • 创建pinia.js文件
import { createPinia } from "pinia";
const pinia = createPinia();
export default pinia;

还需要在入口main.js文件中挂载使用pinia

import { createApp } from "vue";
import App from './App.vue';
import router from './modules/router.js';
import pinia from './modules/pinia.js'; // 引入pinia

const app = createApp(App);
app.use(router);
app.use(pinia); // ------挂载pinia------
app.mount('#app');
  • 使用pinia
    先创建一个store/counter.js文件
import { defineStore } from "pinia";

// defineStore第一个参数是它的id,
export const useCounterStore = defineStore('counter', {
    state() {
        return {
            num: 1, // 初始值为1
        }
    },
    actions: {
        // 只有actions了
        inc() {
            this.num++;
        }
    }
})

然后在需要使用的组件里使用

<script setup>
import { useCounterStore } from "../stores/counter.js";
const counter = useCounterStore();

</script>

<template>
    <div @click="counter.inc()">我是首页 {{ counter.num }}</div>
</template>

4.vite+vue3中使用按需加载

  • 为了解决在一个文件中引入多个组件,安装插件:unplugin-vue-components
npm i unplugin-vue-components -D

在vite.config.js文件中配置插件

import { defineConfig } from "vite";
import Vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite'; // 导入插件

export default defineConfig({
    plugins: [Vue(), Components()] // -----挂载插件------
})

在需要使用的组件中:

<script setup>
// 安装了unplugin-vue-components插件后,components中的组件可以不用引入直接使用
// import Common from "../components/Common.vue";
</script>

<template>
    我是about页面
    <Common />
</template>
  • 在element-plus中使用按需加载
    在vite.config.js中配置
import { defineConfig } from "vite";
import Vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver, NaiveUiResolver } from 'unplugin-vue-components/resolvers'; // 配置element-plus, naiveUi

export default defineConfig({
    plugins: [Vue(), Components({
        resolvers: [ElementPlusResolver(), NaiveUiResolver()]
    })]
})

还需再安装element-plus:执行命令: npm i element-plus -D然后就可以再组件中使用点击一下 element-plusUI了

<el-button>element-plus按钮</el-button>

如果上面配置了NaiveUiResolver,则需要安装naive-ui,执行命令:npm i naive-ui -D
在组件中使用naive-ui会自动寻找依赖,不需要配置这些组件库直接用就好了

<n-button>naive-ui按钮</n-button>
  • 安装unplugin-auto-import插件可以不用import { ref } from ‘vue’;
npm i -D unplugin-auto-import

在vite.config.js文件中挂载插件

import { defineConfig } from "vite";
import Vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import AutoImport from "unplugin-auto-import/vite";
import { ElementPlusResolver, NaiveUiResolver } from 'unplugin-vue-components/resolvers';

export default defineConfig({
    plugins: [
        Vue(),
        AutoImport({
            imports: ['vue', 'vue-router', 'pinia']
        }), // -------挂载插件-------需要imports值
        Components({
        resolvers: [ElementPlusResolver(), NaiveUiResolver()]
    })]
})

在组件中使用:

<script setup>
// import { ref } from "vue"; // 安装了插件后可以不用在导入ref
const counter = ref(100);
const inc = () => {
    counter.value ++;
}
</script>

<template>
    <div @click="inc">Common组件{{counter}}</div>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年最新 wechaty 框架开发微信机器人详细 API 教程说明(NodeJs 版本)

基本概述 wechaty 基础 在使用 wechaty 相关 api 之前&#xff0c;请大家先学习基础篇&#xff1a;如何使用 wechaty 框架开发微信机器人详细教程&#xff08;NodeJs 版本&#xff09; 设置 script 脚本执行 在 package.json 文件中&#xff0c;配置 "start": &qu…

OpenWrt的内核启动分析

u-boot从Flash分区中读取Linux内核到内存&#xff0c;然后跳转到内存&#xff08;某个地址&#xff09;执行Linux内核。Linux内核会进行一系列验证&#xff0c;根据设备树文件&#xff08;见下图openwrt/target/linux/realtek/dts-5.15/XXX.dts&#xff0c;&#xff09;注册相关…

gma 2 教程(二)数据操作:7.矢量数据操作简介

功能逻辑架构 gma矢量数据操作类主要包括数据资源&#xff08;DataSource&#xff09;、矢量图层&#xff08;Layer&#xff09;、矢量要素&#xff08;Feature&#xff09;&#xff08;与ogr一致&#xff0c;内部与ogr差异巨大&#xff09;&#xff0c;三者的示意图如下&#…

ctfshow-web-红包一

0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 题目 0x02 Write Up 上来就丢了一个站&#xff0c;还有一个不怎么有用的图片。 按照常规流程&#xff0c;先扫目录&#xff0c;但是无果&#xff08;工具…

Java # Java基础八股

1、JVM、JRE、JDK之间的关系 个人理解&#xff1a;JVM可以帮助屏蔽底层的操作系统&#xff0c;使程序一次编译到处都可以运行&#xff0c;JVM可以运行class文件。JRE是java文件运行的环境&#xff0c;但不能新建程序&#xff0c;JRE包含JVM。JDK功能最齐全&#xff0c;包含了编…

基于TSINGSEE青犀视频AI智能技术的自然生态水源保护管理解决方案

一、方案背景 水是生命之源&#xff0c;日常生产生活离不开水。围绕全面深入打好打赢碧水保卫战&#xff0c;针对集中式饮用水源地等野外场景碎片化的特点&#xff0c;迫切需要建设数字智治、闭环管理、规范高效的水质监测体系&#xff0c;进一步加强水源地保护工作的开展落地…

腾讯云服务器优惠价格表(2023年最新版)

腾讯云作为国内领先的云服务提供商&#xff0c;提供了多种规格的云服务器&#xff0c;满足不同用户的需求&#xff0c;本文将详细介绍腾讯云服务器的优惠价格&#xff0c;并给出相应的购买建议。 腾讯云服务器提供了多种配置和多种购买时长选择&#xff0c;用户可以根据实际需求…

超震撼!全网疯传的第七届世界渲染大赛创意大盘点

第七届CG挑战赛TOP100新鲜出炉&#xff01;这是一场被圈内誉为“地表最强”、“全球最火”的世界渲染大赛&#xff0c;由拥有百万订阅的油管博主 pwnisher 发起。这次比赛的创作主题是《Boss Fight—终极决斗》&#xff0c;吸引了2880名创意大师和视觉艺术爱好者的参与。他们的…

【操作系统】聊聊页面置换算法

操作系统的缓存淘汰 操作系统一是提供的基础编程接口&#xff0c;二是实现软件治理的功能。但是因为内存是有限的&#xff0c;想要在有限的内存多存储数据&#xff0c;就利用段、页、段页方式进行数据的映射。但是内存存储有限&#xff0c;所以如何将内存中不用的数据进行及时…

【数据分享】2012-2022年1km分辨率全球夜间灯光时序数据(无需转发\免费获取)

夜间灯光数据是我们在各项研究中经常使用的数据&#xff01;在之前的文章中我们分享了来自NCEI国家环境信息中心的2012-2022年全球范围的逐年的NPP/VIIRS夜间灯光数据&#xff08;可查看之前推送的文章获悉详情&#xff09;&#xff01; 我们本次为大家分享的是来自中国农业大…

shell脚本学习积累

文章目录 创建shell脚本并运行条件测试基础shell脚本打包过去24小时内修改过的文件自动解压 bzip2, gzip 和 zip不同类型的压缩包打印一个rpm包的统计信息【含有输入参数】 创建shell脚本并运行 方式1&#xff1a; vim myshell.sh #文件开头是#!/bin/bash 或 #!/bin/sh sh mys…

小黑完成广播操比赛,荣获三等奖,回来晕车晚上弹琴的leetcode之旅:121. 买卖股票的最佳时机

小黑代码 class Solution:def maxProfit(self, prices: List[int]) -> int:# 数组长度n len(prices)# 最大利润profit 0# 中间变量min_ prices[0]# 遍历每一个数据作为买点for i in range(1, n):# 滚动获取最小值if prices[i] - min_ > profit:profit prices[i] - m…

无涯教程-JavaScript - BIN2HEX函数

描述 BIN2HEX函数将二进制数转换为十六进制。 语法 BIN2HEX (number, [places])争论 Argument描述Required/Optionalnumber 您要转换的二进制数。 数字不能超过10个字符(10位)。数字的最高有效位是符号位。其余的9位是幅度位。 负数使用二进制补码表示。 Requiredplaces 要…

Scrum敏捷模式的优势点、实践经验及适用企业

Scrum敏捷模式是一种灵活、适应性强的开发方法&#xff0c;其核心理念是以短周期、高频率的方式进行项目开发&#xff0c;确保团队能够快速响应变化。 Scrum包含三个角色&#xff1a;产品负责人&#xff08;Product Owner&#xff09;、Scrum Master和开发团队&#xff08;Tea…

IntelliJ IDEA远程调试:使用IDEA Remote Debug进行高效调试的指南

引言 在开发分布式系统时&#xff0c;调试是一个重要但复杂的环节。开发者通常需要跨越多个服务、模块和线程来追踪和解决问题。在没有远程调试的情况下&#xff0c;许多开发者会在代码中添加各种日志语句&#xff0c;然后重新部署和上线来调试。这种方法不仅费时&#xff0c;…

Unity 编辑器资源导入处理函数 OnPostprocessTexture :深入解析与实用案例

Unity 编辑器资源导入处理函数 OnPostprocessTexture 用法 点击封面跳转下载页面 简介 在Unity中&#xff0c;我们可以使用编辑器资源导入处理函数&#xff08;OnPostprocessTexture&#xff09;来自定义处理纹理资源的导入过程。这个函数是继承自AssetPostprocessor类的&…

Seal梁胜:近水楼台先得月,IT人员应充分利用AI解决问题

2023年9月2日&#xff0c;由平台工程技术社区与数澈软件Seal联合举办的⌈AIGC时代下的平台工程⌋——2023平台工程技术大会在北京圆满收官。吸引了近300名平台工程爱好者现场参会&#xff0c;超过3000名观众在线上直播平台观看了本届大会。 数澈软件 Seal 联合创始人梁胜博士和…

mysql文档--默认存储引擎--innodb存储引擎--innodb引擎全解

阿丹&#xff1a; 在mysql中innodb是默认的存储引擎。研究一下为什么它会被独宠。 官方解释&#xff1a; InnoDB&#xff0c;是MySQL的数据库引擎之一&#xff0c;现为MySQL的默认存储引擎&#xff0c;为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发&#xf…

活动报名场地预约自定义表单小程序开发

活动报名场地预约自定义表单小程序开发 专门为活动报名开发的一款小程序&#xff0c;可以自定义各种活动报名、活动预约&#xff0c;支持付费预约报名。 功能&#xff1a; 自定义字段&#xff1a;字符串、单选、复选、日期、列表、图片、城市、关联字段等自定义字段类型配置…

浅谈 Node.js 与快速入门使用——前端开发工程师必须要知道的技术(文末送书福利6.0)

文章目录 &#x1f4cb;前言&#x1f3af;什么是 Node.js&#x1f3af;安装与使用 Node.js&#x1f9e9;直接安装 Node.js&#x1f9e9;使用 Node Version Manager&#xff08;NVM&#xff09;&#x1f9e9;使用 Node.js &#x1f3af;Node.js 基础知识&#x1f9e9;模块系统&a…