【vue3项目初始化配置】vue3 + element plus

项目初始化是开发过程中很重要的一个环节,本篇博客带大家从零开始创建并初始化一个vue3项目,文章详细介绍了每个步骤,希望能帮助刚接触开发的小伙伴。

目录

一.创建项目

二.安装插件

 ​编辑

​编辑三.安装依赖

​编辑 ​编辑四.配置项目

配置vu.config.js文件

 配置axios

配置路由·


一.创建项目

1.在终端(cmd)输出命令 vue ui

如果输入命令没有反应,可以用 vue-h 查看有没有 ui [options]这个选项

 如果没有则输入

cnpm i -g @vue/cli        // 回车
vue -h            // 这时有ui[options]了

在cmd输入:vue ui 就可以成功启动Vue项目管理器了!

2.选择项目存储位置,创建项目

3.输入项目名称,选择包管理容器,这里我选择的是·pnpm(大家随意)。

4. 我在这里又选了Router、Babel、Linter/Formatter,大家可跟具体情况而定
点击回车,进入下一层选择。

5.版本选择vue3 ,路由选择hash(hash和history最直观的区别是hash的ur多个#),linter/formatter选择   ESLint + Standard config  

? Pick a linter / formatter config:ESLint with error prevention only  // 只进行报错提醒ESLint + Airbnb config             // 不严谨模式ESLint + Standard config           // 正常模式ESLint + Prettier                  // 严格模式

然后点创建项目,会有一个是否保存为预设,建议保存,下次直接使用这个已经配好的模版,不用在重新配置了。

二.安装插件

 

安装elment plus,也可以安装别的,个人推荐安装这个。

 

点按需导入,全部导入内存很大,影响性能。

 

 安装axios(axios时目前最流行的ajax封装库之一,用于很方便地实现ajax请求的发送) 

三.安装依赖

主要安装less 和less-loader,这样就可以写less了。(记得点开发时依赖)

 四.配置项目

配置vu.config.js文件

1、publicPath 部署应用包的基本Url
部署应用包的基本 Url ,默认 “/” ,

可以设置为 相对路径 "./"【 建议 】,这样打出来的包,可以部署到任意路径上

module.exports = defineConfig({transpileDependencies: true,publicPath: process.env.NODE_ENV === "production" ? "./" : "/"
}

2elment plus 自动导入配置,这样就不用再手动导入。

在终端执行(npm install -D unplugin-vue-components unplugin-auto-import)

在 vue 里面配置,不能把官网提供的代码直接复制过来,需要调整一下。先引入相关依赖,plugins 外面加多一个configureWebpack对象

const { defineConfig } = require('@vue/cli-service')
const AutoImport = require("unplugin-auto-import/webpack");
const Components = require("unplugin-vue-components/webpack");
const { ElementPlusResolver } = require("unplugin-vue-components/resolvers");
module.exports = defineConfig({transpileDependencies: true,configureWebpack: {plugins: [AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],},
});


报错解决
报错 1:AutoImport is not a function
解决:是 unplugin-auto-import版本高了,我用的0.17.3。后面降版本,改成0.16.7,这个问题就不报错了。

报错2:Components is not a function
解决:unplugin-vue-components 版本也高了,从0.26.0 降到了 0.25.2 ,就能正常运行了
 

 配置axios

1.根据不同的环境自动匹配url

import axios from 'axios'
// 给 axios 设置请求根路径
const baseUrl = process.env.NODE_ENV === 'development' ? 'http://localhost:8080/' : 'http://***.com'
axios.defaults.baseURL = baseUrl

2.

全局引入axios
如果想要全局引入axios,我们可以借助 vue 提供的 provide 和 inject 方法来实现

在main.js中使用 provide 方法 注入axios,代码如下

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'
// 给 axios 设置请求根路径
const baseUrl = process.env.NODE_ENV === 'development' ? 'http://localhost:8080/' : 'http://***.com'
axios.defaults.baseURL = baseUrl
const app = createApp(App)
app.provide('$axios', axios)
app.use(router).mount('#app')
在需要使用axios的页面使用 inject 方法调用即可const axios = inject('$axios')
const response = await axios.get('/api')
console.log(response.data);
配置路由·

vue3实现详情页返回列表页,返回原来列表页滚动条所在的位置
首先在路由文件的meta里面定义

meta: {
    keepAlive: false,
},

  {path: '/detail',name: 'detail',component: () => import('../views/detail.vue'),meta: {keepAlive: true //需要缓存}},


第二步
在app.vue 根文件下定义代码

<template><keep-alive><router-view v-if="route.meta.keepAlive" /></keep-alive><router-view v-if="!route.meta.keepAlive" />
</template><script setup>
import { useRoute } from "vue-router"
const route = useRoute()
</script>


第三步
在列表页面定义

import { onBeforeRouteLeave } from "vue-router"
import { onActivated } from "vue"onBeforeRouteLeave((to, from, next) => {/判断跳转的页面是否为详细,是的话则储存当前页面的高度if (to.path === '/details') {//这里用的session来存的,当然也可以用vuex 或 pinia 或其它方法sessionStorage.setItem('scrollTop', window.pageYOffset)  } else {sessionStorage.setItem('scrollTop', 0) }next();
})
onActivated(() => {  setTimeout(() => {let scrollPosition = sessionStorage.getItem('scrollTop')// console.log('我执行了', scrollPosition);window.scrollTo(0, scrollPosition)}, 300)
})



第四步
在详情页面定义

import { onBeforeRouteLeave } from "vue-router"onBeforeRouteLeave((to, from, next) => {//判断返回的页面 是否为列表页,是则添加缓存的组件if (to.path === '/list') {to.meta.keepAlive = true} else {to.meta.keepAlive = false}next();
})

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

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

相关文章

如何安装配置VisualSVN服务并实现公网访问本地服务【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

班主任在班级管理中的角色定位

你是否曾经想过&#xff0c;为什么有的班主任能够让学生如此敬爱&#xff0c;而有的班主任却让学生敬而远之&#xff1f;其实&#xff0c;这都与班主任在班级管理中的角色定位有关。 班主任应该是学生的良师益友。这意味着班主任不仅要传授知识&#xff0c;更要关心学生的成长…

提升线上会议效率,解决Teams会议中常见网络问题

在企业组网场景中&#xff0c;在线会议是混合办公、跨地区办公模式下很重要的协作沟通手段&#xff0c;而在线会议如Teams这类应用对网络的实时性和即时性要求非常高&#xff0c;网络频繁中断、接入速度慢、登不进去等问题分分钟加剧用户的不满&#xff0c;导致汇报失败或者是交…

GMT学习记录

我主要根据GMT中文手册一步一步学习的&#xff01;&#xff01;&#xff01;&#xff01;B站视频介绍的是5.0老版本仅仅建立基础理解这个软件。 好的&#xff0c;学了一点发现直接把gmt转为shp&#xff0c;就得到我想的文件 gmt数据转shape格式数据 - 简书 (jianshu.com) 命…

汽车用螺纹紧固件的拧紧力矩规范主要考虑哪些方面——SunTorque智能扭矩系统

在汽车制造过程中&#xff0c;螺纹紧固件是连接和固定各个零部件的重要元件。为了保证汽车的可靠性和安全性&#xff0c;对于螺纹紧固件的拧紧力矩有着严格的规定和规范。SunTorque智能扭矩系统和大家一起掌握这一重要知识点。 拧紧力矩是指将螺纹紧固件拧紧到预定位置所需的力…

Pytorch实战——2、初探张量

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

二叉树的遍历 Java

二叉树的遍历 递归法前序遍历中序遍历后序遍历改进 迭代法前序、后序遍历中序遍历 二叉树的统一迭代法(未完成)Java 中 null、NULL、nullptr 区别 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(in…

Go 语言中高效切片拼接和 GO 1.22 提供的新方法

Table Contents 切片拼接的必要性基本拼接方法及其局限性使用 append 函数高效拼接的策略控制容量和避免副作用利用 Go 1.22 的新特性切片动态扩容的深入理解内存重新分配与数据迁移性能优化策略结论在 Go 语言中,切片拼接是一项常见的操作,但如果处理不当,可能会导致性能问…

2.【Linux】(进程的状态||深入理解fork||底层剖析||task_struct||进程优先级||并行和并发||详解环境变量)

一.进程 1.进程调度 Linux把所有进程通过双向链表的方式连接起来组成任务队列&#xff0c;操作系统和cpu通过选择一个task_struct执行其代码来调度进程。 2.进程的状态 1.运行态&#xff1a;pcb结构体在运行或在运行队列中排队。 2.阻塞态&#xff1a;等待非cpu资源就绪&am…

学习JavaEE的日子 day14 继承,super(),this(),重写

Day14 1.继承的使用 理解&#xff1a;子类继承父类所有的属性和方法 使用场景&#xff1a;多个类似的类&#xff0c;有相同的属性和方法&#xff0c;就可以把相同属性和方法抽取到父类 优点&#xff1a;减少代码的冗余&#xff1b; 使类与类之间产生了关系(多态的前提) 缺点&a…

RT-Thread Studio学习(十三)DAC

RT-Thread Studio学习&#xff08;十三&#xff09;DAC 一、简介二、新建RT-Thread项目并使用外部时钟三、启用DAC四、测试五、总结 一、简介 本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下使用DAC设备。硬件及开发环境如下&#xff1a; OS WIN10STM32F40…

力扣309. 买卖股票的最佳时机含冷冻期(动态规划,Java C++解法)

Problem: 309. 买卖股票的最佳时机含冷冻期 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 Problem: 714. 买卖股票的最佳时机含手续费 该题目可以看作是上述题目的改编&#xff0c;该题目添加了一个冷冻期使得动态转移方程更加复杂&#xff0c;具体思路如下&#xf…

RK3568 android11 移植 v4l2loopback 虚拟摄像头

一&#xff0c;v4l2loopback 简介 v4l2loopback是一个Linux内核模块&#xff0c;它允许用户创建虚拟视频设备。这种虚拟视频设备可以用于各种用途&#xff0c;例如将实际摄像头的视频流复制到虚拟设备上&#xff0c;或者用于视频流的处理和分析等。v4l2loopback的主要作用是创…

Android CarService源码分析

文章目录 一、CarService的基本架构1.1、Android Automative整体框架1.2、Framework CarService1.3、目录结构1.3.1、CarService1.3.2、Car APP 二、CarService的启动流程2.1、系统启动后在SystemServer进程中启动CarServiceHelperService2.2、CarService启动 三、CarService源…

RT-Thread 15. list_timer与软定时器

1. 代码 void rt_thread_usr1_entry(void *parameter) {/* set LED2 pin mode to output */rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);while (1){rt_pin_write(LED2_PIN, PIN_HIGH);rt_thread_mdelay(2000);rt_pin_write(LED2_PIN, PIN_LOW);rt_thread_mdelay(3000);} }int ma…

Unity URP切换品质和Feature开关的性能问题

现在对我的项目进行安卓端发布&#xff0c;需要切换品质和一些Feature开关。 我是这样做的。 划分品质 首先Renerer分为2个Android和PC&#xff0c;图中其他不用参考。 每个副本的URP Asset分为pc和android&#xff0c;例如图中的 hall和hall_android。 我们可以看到hall用的…

python贪吃蛇游戏

为了实现这个游戏&#xff0c;需要用到Python的pygame模块&#xff0c;它是一个专门用于开发游戏的模块&#xff0c;提供了很多方便的功能&#xff0c;比如窗口、图形、音效、事件处理等。 用pygame来创建一个窗口&#xff0c;设置游戏的背景色&#xff0c;画出蛇和食物&#…

智慧灌区解决方案:针对典型灌区水利管理需求

​随着国家对农业水利的重视,各地积极推进智慧灌区建设,以实现对水资源的精准调度和科学化管理。下面我们针对典型灌区水利管理需求,推荐智慧灌区解决方案。 一、方案构成智慧水利解决方案- 智慧水利信息化系统-智慧水利平台-智慧水利公司 - 星创智慧水利 一、方案构成 (一)水…

RHEL8 Samba服务器详细配置用户模式

任务&#xff1a; 配置server01为samba服务器&#xff0c;samba服务器的/companydata/sales为共享目录&#xff0c;共享名为sales&#xff0c;里面创建测试文件test_share.tar&#xff0c;创建用户组sales&#xff0c;创建组内用户sale1&#xff0c;要求配置用户模式访问&#…

react umi/max 页签(react-activation)

思路&#xff1a;通过react-activation实现页面缓存&#xff0c;通过umi-plugin-keep-alive将react-activation注入umi框架&#xff0c;封装页签组件最后通过路由的wrappers属性引入页面。 浏览本博客之前先看一下我的博客实现的功能是否满足需求&#xff0c;实现功能&#xf…