Vue3项目初始化:

紧接着前面的文章:https://blog.csdn.net/weixin_51416826/article/details/138679863?spm=1001.2014.3001.5502

当我们生成一个Vue3项目后必须要增加一些依赖和配置,比如安装组件库、配置ESLint和Prettier、接下来咱一步步推进~

安装组件库

一般开发为了提高效率都会用一个开源组件库,这里当然少不了,至于用什么,全凭老板拍板。这里咱选用Element Plus,下面开始讲必备配置~

配置按需加载

所谓“按需”便是用啥导啥!

先安装两个插件: unplugin-vue-components 和 unplugin-auto-import 这两款 vite 插件来开启按需加载及自动导入,插件会自动解析模板中的使用到的组件,并导入组件和对应的样式文件。

npm i unplugin-vue-components -D
npm i -D unplugin-auto-import# orpnpm add -D unplugin-vue-components
pnpm add -D unplugin-auto-import

然后在 vite.config.js 文件中配置使用一下插件(如果没有使用vite,就要找Webpack.config.js文件)

// vite.config.ts
import { defineConfig } from 'vite'
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: [// ...AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],
})
// webpack.config.js
const AutoImport = require('unplugin-auto-import/webpack')
const Components = require('unplugin-vue-components/webpack')
const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')module.exports = {// ...plugins: [AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],
}

配置项目内组件 & API 的自动引入

在使用 Vue 的过程中,每个 script 以及 js 文件中或多或少需要引入一些像 ref、reactiveVueAPI,包括 VueRouter、Pinia 等都要引入一些 API,还有我们自己写的组件也都需要我们手动去引入使用。那既然配置了组件库自动引入,我们接下来也配置API、以及页面组件的自动引入。

还是在vite.config.js 文件中

// vite.config.ts
import { defineConfig } from 'vite'
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: [// ...AutoImport({// 需要去解析的文件include: [/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx/\.vue$/,/\.vue\?vue/, // .vue/\.md$/ // .md],// imports 指定自动引入的包位置(名)imports: ['vue', 'pinia', 'vue-router'],resolvers: [ElementPlusResolver()],}),Components({// imports 指定组件所在目录,默认为 src/componentsdirs: ['src/components/', 'src/view/'],// 需要去解析的文件include: [/\.vue$/, /\.vue\?vue/, /\.md$/],resolvers: [ElementPlusResolver()],}),],
})

配置 ESLint 和 Prettier

前面的文章已经介绍了这个,请移步:

https://blog.csdn.net/weixin_51416826/article/details/139156237?spm=1001.2014.3001.5502

Pinia构建用户仓库和持久化

首先安装Pinia

pnpm add pinia-plugin-persistedstate -D

封装pinia并持久化

在src目录下创建stores文件夹,在文件夹下创建index.js文件

import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'const pinia = createPinia()
pinia.use(persist)export default pinia// 仓库统一导出
export * from './modules/user'

在stores/modules/下创建user.js

// pinia 替代 Vuex 的具体用法
import { userGetInfoService } from '@/api/user'
import { defineStore } from 'pinia'
import { ref } from 'vue'// 用户模块
export const useUserStore = defineStore('big-user',() => {const token = ref('')const user = ref({})return {token,user,}},{persist: true // 持久化}
)

main.js中引入使用

import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'
import router from '@/router/index'
import pinia from './stores/index'const app = createApp(App)app.use(pinia)
app.use(router)app.mount('#app')

配置路由

创建src/router/index.js,同时配置拦截规则

import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{ path: '/login', component: () => import('@/views/login/LoginWeb.vue') },{path: '/',component: () => import('@/views/layout/LayoutPage.vue'),redirect: '/article/manage',children: [{path: '/article/manage',component: () => import('@/views/article/ArticleManage.vue')},{path: '/article/channel',component: () => import('@/views/article/ArticleChannel.vue')},{path: '/user/info',component: () => import('@/views/user/UserInfo.vue')},{path: '/user/avatar',component: () => import('@/views/user/UserAvatar.vue')},{path: '/user/password',component: () => import('@/views/user/UserPassword.vue')}]}]
})//登录访问拦截
router.beforeEach((to) => {// 如果没有token or 非登录页 拦截到登录const userStore = useUserStore()if (!userStore.token && to.path !== '/login') return '/login'return true
})
export default router

此项目大家仅供参考,照搬不可取~

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

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

相关文章

【基础篇】1.7 C语言基础(一)

一,为什么是C语言? C语言是嵌入式系统开发领域广泛使用的编程语言。STM32作为一种嵌入式系统的微控制器,需要精确控制硬件资源,那么C语言能够满足这一需求。 二,STM32 C语言常用基础知识 下面是我们在日常STM32开发中必备的C语言基础要点,掌握这些C语言的基础知识要点…

llama3

Llama 3是由Meta公司发布的一款大型语言模型(LLM),该模型在发布后迅速引起了业界的广泛关注。以下是对Llama 3的详细介绍: 一、基本信息 发布单位:Meta公司 发布时间:当地时间2024年4月18日 主要特点&…

上海外贸建站公司wordpress模板推荐

Sora索啦高端制造业wordpress主题 红色高端制造业wordpress主题,适合外贸企业出海建独立站的wordpress模板。 https://www.jianzhanpress.com/?p5885 Yamal外贸独立站wordpress主题 绿色的亚马尔Yamal外贸独立站wordpress模板,适用于外贸公司建独立站…

Redis 中 Set 和 Zset 类型

目录 1.Set类型 1.1 Set集合 1.2 普通命令 1.3 集合操作 1.4 内部编码 1.5 使用场景 2.Zset类型 2.1 Zset有序集合 2.2 普通命令 2.3 集合间操作 2.4 内部编码 2.5 使用场景 1.Set类型 1.1 Set集合 集合类型也是保存多个字符串类型的元素,但是和列表类型不同的是&…

【Go】excelize库实现excel导入导出封装(四),导出时自定义某一列或多列的单元格样式

大家好,这里是符华~ 查看前三篇: 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头 【Go】excelize库实现excel导入导出封装(二&…

WY-35A4T三相电压继电器 导轨安装 约瑟JOSEF

功能简述 WY系列电压继电器是带延时功能的数字式交流电压继电器。 可用于发电机,变压器和输电线的继电保护装置中,作为过电压或欠电压闭锁的动作元件 LCD实时显示当前输入电压值 额定输入电压Un:100VAC、200VAC、400VAC产品满足电磁兼容四级标准 产品…

【Rust入门】猜数游戏

文章目录 前言Rust的变量Rust占位符读取一行数据到变量里面示例代码总结 前言 Rust是一种系统编程语言,它专注于速度、内存安全和并行性。学习Rust可以为你的编程技能库增添新的一笔。在这篇文章中,我们将通过一个简单的猜数游戏来介绍Rust的基本概念。…

VBA初学:零件成本统计之一(任务汇总)

经过前期一年多对金蝶K3生产任务流程和操作的改造和优化,现在总算可以将零件加工各个环节的成本进行归集了。 原本想写存储过程,通过直接SQL报表做到K3中去的,但财务原本就是用EXCEL,可以方便调整和保存,加上还有一部分…

便携式气象站:探索自然的智慧伙伴

在探索自然奥秘、追求科学真理的道路上,气象数据始终是我们不可或缺的指引。然而,传统的气象站往往庞大而笨重,难以在偏远地区或移动环境中灵活部署。 便携式气象站,顾名思义,是一种小巧轻便、易于携带和安装的气象观测…

模拟面试002-Java开发工程师+简历+问题+回答

模拟面试002-Java开发工程师简历问题回答 目录 模拟面试002-Java开发工程师简历问题回答面试简历面试官题问Java基础与编程框架与工具数据库与性能优化项目经验与实践团队合作与沟通 求职者回答Java基础与编程框架与工具数据库与性能优化项目经验与实践团队合作与沟通 参考资料…

由于找不到xinput1 3.dll无法继续执行重新安装程序

如果您的计算机提示无法找到xinput1_3.dll文件,这可能表明您的计算机存在问题。在这种情况下,您需要立即对xinput1_3.dll文件进行修复,否则您的某些程序将无法启动。以下是解决无法找到xinput1_3.dll文件的方法。 一、关于xinput1_3.dll文件的…

你要允许此应用对你的设备进行更改吗

在Windows 11中,当你看到提示“你要允许此应用对你的设备进行更改吗?”时,这是系统检测到某个应用或软件试图对你的设备进行更改或安装的提醒。这个提示是为了保护你的系统免受潜在恶意软件的侵害。如果你选择“是”,则应用可以继…

Elasticsearch 实现 Word、PDF,TXT 文件的全文内容提取与检索

文章目录 一、安装软件:1.通过docker安装好Es、kibana安装kibana:2.安装原文检索与分词插件:之后我们可以通过doc命令查看下载的镜像以及运行的状态:二、创建管道pipeline名称为attachment二、创建索引映射:用于存放上传文件的信息三、SpringBoot整合对于原文检索1、导入依赖…

安全及应用(更新)

一、账号安全 1.1系统帐号清理 #查看/sbin/nologin结尾的文件并统计 [rootrootlocalhost ~]# grep /sbin/nologin$ /etc/passwd |wc -l 40#查看apache登录的shell [rootrootlocalhost ~]# grep apache /etc/passwd apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin#改变…

Android增量更新----java版

一、背景 开发过程中,随着apk包越来越大,全量更新会使得耗时,同时浪费流量,为了节省时间,使用增量更新解决。网上很多文章都不是很清楚,没有手把手教学,使得很多初学者,摸不着头脑&a…

2011年的数字IC设计面经

2011年老罗写的面经,转眼间2024年了,大家凑合着看吧,可以顺便看看2011年的应届生薪资。 本人通信工程硕士,非电子科班出身,主要找数字IC设计的工作,找工作找了一个月左右,还算满意吧&#xff0…

边缘概率密度、条件概率密度、边缘分布函数、联合分布函数关系

目录 二维随机变量及其分布离散型随机变量连续型随机变量边缘分布边缘概率密度举例边缘概率密度 条件概率密度边缘概率密度与条件概率密度的区别边缘概率密度条件概率密度举个具体例子 参考资料 二维随机变量及其分布 离散型随机变量 把所有的概率,都理解成不同质量…

R迅速切换目录 -R语言002

实用小操作系列 R定位当前目录 getwd() [1] "/data/Rprofile1" #当前工作目录,因为他读取文件都是相对路径,进当前目录,一般不考虑绝对路径,写代码容易乱呀,切目录最简单完善 R切换工作目录 setwd(&q…

逻辑图框架图等结构图类图的高效制作方式不妨进来看看

**逻辑图框架图等结构图类图的高效制作方式不妨进来看看** 基于我们每天都在处理大量的数据和信息。为了更清晰地理解和传达这些信息,结构图、逻辑图和框架图等可视化工具变得越来越重要。然而,如何高效地制作这些图表并确保其准确性和易读性呢&#xf…

RedHat运维-LinuxSELinux基础4-端口绑定SELinux上下文

1. SELinux将一个_________与一个SELinux上下文相连接; 2. SSH协议将22/tcp端口与__________SELinux上下文相联系; 3. HTTP协议将80/tcp、443/tcp端口与____________SELinux上下文相联系; 4. 列出所有端口的SELinux上下文信息的方法是_______…