创建vue3项目及基本常用配置

1、创建vue3项目

1.1 创建vue3项目

确保电脑中安装了nodejs,新建文件夹,输入以下命令:

npm create vue@latest


看是否为自己需要的vue版本,选择Y

各配置具体如下,根据自己的需求选择是或者否

npm create vue@latest
Need to install the following packages:create-vue@3.10.2
Ok to proceed? (y) y
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'create-vue@3.10.2',
npm WARN EBADENGINE   required: { node: '>=v16.20.0' },
npm WARN EBADENGINE   current: { node: 'v16.17.0', npm: '8.15.0' }
npm WARN EBADENGINE }Vue.js - The Progressive JavaScript Framework√ 请输入项目名称: ... practice-vue3
√ 是否使用 TypeScript 语法? ... 否 / 是
√ 是否启用 JSX 支持? ... 否 / 是
√ 是否引入 Vue Router 进行单页面应用开发? ... 否 / 是
√ 是否引入 Pinia 用于状态管理? ... 否 / 是
√ 是否引入 Vitest 用于单元测试? ... 否 / 是
√ 是否要引入一款端到端(End to End)测试工具? » 不需要
√ 是否引入 ESLint 用于代码质量检测? ... 否 / 是
√ 是否引入 Prettier 用于代码格式化? ... 否 / 是
√ 是否引入 Vue DevTools 7 扩展用于调试? (试验阶段) ... 否 / 是

将应用发布到生产环境时,运行以下命令:

npm run build

此命令会生成一个dist文件夹,用于生产环境

2、应用配置

在main.js中定义一个应用级的错误处理器,用来捕获所有子组件上的错误:

import vueErrorHandler from '@/utils/errorHandler'
app.config.errorHandler = vueErrorHandler

3、引入Element-UI

先安装element,然后在main.js中引入

npm i element-plus --save

在main.js中引入(全局注册)并使用

import ElementPlus from 'element-plus';
import 'element-plus/lib/theme-chalk/index.css';const app = createApp(App);
app.use(ElementPlus);
app.mount('#app');

注意:element plus 的图标需要单独安装引入:

//安装
npm install @element-plus/icons-vue//全局引入
import * as ElementPlusIconsVue from '@element-plus/icons-vue'const app = createApp(App)// 注册所有图标为全局组件
Object.keys(ElementPlusIconsVue).forEach((iconName) => {app.component(iconName, ElementPlusIconsVue[iconName])
})

4、安装scss

npm install -D sass

 在vue组件中使用:

<style lang="scss">
.example {color: blue;font-size: 20px;margin: 20px;padding: 10px;border: 1px solid #ccc;.img{width: 20px;}
}
</style>

 全局SCSS样式,可以在vite.config.js文件中配置:

// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],css: {preprocessorOptions: {scss: {additionalData: `@import "@/styles/variables.scss";`}}}
})

 vue3中scss样式穿透:

.elinput{:deep(.el-input__inner) {height: 38px;}
}

5、安装加密工具

 需要先安装jsencrypt,主要用于账号密码登录对密码加密

//安装命令
npm install jsencrypt

 在utils中新建js文件jsencrypt,内容如下

import { JSEncrypt } from 'jsencrypt'
export default function jsencrypt(data) {const encryptor = new JSEncrypt()const publicKey =`-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCs+s4mRTS8FQQo3z5ImgEDZ0xDOjqWGOJJAwwBK+P/BKbvoOiBBvnE2yGD5FN398zh7xS1QNQDGXpUS/qTpA6WLYDJr3/rMINRQGr5P5OnypYnJbJwzVgHQDf3sMH5me9LsO+Z1ZuEQT8mvA98vCQ6+z9aAc1e4RxMG+A2+266qQIDAQAB-----END PUBLIC KEY-----`// 设置公钥encryptor.setPublicKey(publicKey)// publicKey为公钥return encryptor.encrypt(data)// data就是需要加密的密码
}

 在需要使用的组件中引入jsencrypt,js

//引入
import jsencrypt from "@/utils/jsencrypt.js";//使用
password: jsencrypt(this.signInFormData.password)

6、封装axios

6.1 安装并封装request

需要先安装axios

npm install axios

在utils下创建文件request.js

配置内容如下:

import { getToken } from '@/utils/auth';
import axios from 'axios';
import { Message } from 'element-ui';if (import.meta.env.MODE === 'production') {const origin = window.location.originconst { serveIp, serveUrl, userCenterIp } = window.configwindow.config.serveIp = `${origin}${serveIp}`window.config.serveUrl = `${origin}${serveUrl}`window.config.userCenterIp = `${origin}${userCenterIp}`// window.config.redirectUrl = origin
}
// create an axios instance
const service = axios.create({baseURL: window.config.serveUrl,timeout: 600000 // request timeout
})
// 存储的HTTP请求
const pending = []
const cancelToekn = axios.CancelToken
let removeP = false
const removePending = (config, isAll) => {for (let i = 0; i < pending.length; i++) {if (isAll) {pending[i].fun()pending.splice(i, 1)i--} else {if (pending[i].name === config.url + JSON.stringify(config.data) + '&' + config.method) {pending[i].fun()pending.splice(i, 1)break}}}
}
// request interceptor
service.interceptors.request.use(config => {// 在HTTP请求前取消前面的所有请求removeP = config.removePif (removeP) removePending(config, true)// 记录本次HTTP请求// eslint-disable-next-line new-capconfig.cancelToken = new cancelToekn((c) => {pending.push({name: config.url + JSON.stringify(config.data) + '&' + config.method,fun: c})})// do something before request is sentif (getToken()) {}return config},error => {// do something with request errorconsole.log(error) // for debugreturn Promise.reject(error)}
)
let errNum401 = 0
let errNum403 = 0
// let errNum404 = 0
// response interceptor
service.interceptors.response.use(response => {const data = response.dataconst codeList = [200, 201]if (!codeList.includes(data.code)) {switch (data.code) {case 401:breakcase 402:// 找不到资源breakcase 403:if (errNum403) {break}errNum403++// Message.error(data.msg)breakcase 404:breakcase 407:// 没有权限breakcase 502:// 连接服务器失败break}}return data},error => {console.log(error, 'error')if (error.response) {console.log('err' + error.response) // for debugswitch (error.response.status) {case 401:breakcase 400:error.message = '请求错误'breakcase 403:error.message = '拒绝访问'breakcase 404:error.message = `请求地址出错: ${error.response.config.url}`breakcase 408:error.message = '请求超时'breakcase 422:Message.error('参数错误')breakcase 500:error.message = '服务器内部错误'breakcase 501:error.message = '服务未实现'breakcase 502:// 连接服务器失败Message.error('服务器内部错误')error.message = '网关错误'breakcase 503:error.message = '服务不可用'breakcase 504:error.message = '网关超时'breakcase 505:error.message = 'HTTP版本不受支持'breakdefault:error.message = '连接服务器异常'}return error} else {if (removeP) {return}error.message = '连接服务器失败'Message.error('连接服务器失败')console.log(error.message)}return Promise.reject(error.message) // 返回接口返回的错误信息}
)export default service

6.2 使用封装的request

在src根目录下新建api的文件夹,对接口进行分类(例如user.js、login.js等)

以user.js为例:

// 先引入封装的request
import request from '@/utils/request'// 用户信息
export function userInfo(data) {return request({url: '/api/userinfo',method: 'post',data,})
}

在需要使用该接口的组件中引入方法,可以直接使用:

<script>  
import { userInfo } from "@/api/user";methods: { getuserInfo() {let params = {id: this.userId,};const res = await userInfo(params)console.log(res,code,data,'res');},
}</script>

以上就是新建vue3项目的流程以及基本配置

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

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

相关文章

阿里云数据库服务器价格表查询,一键查询报价

阿里云数据库服务器价格表&#xff0c;优惠99元一年起&#xff0c;ECS云服务器2核2G、3M固定带宽、40G ESSD Entry云盘&#xff0c;优惠价格99元一年&#xff1b;阿里云数据库MySQL版2核2G基础系列经济版99元1年、2核4GB 227.99元1年&#xff0c;云数据库PostgreSQL、SQL Serve…

OpenHarmony实战:标准系统移植指南

本文描述了移植一块开发板的通用步骤&#xff0c;和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开发者参考。 定义开发板 本文以移植名为MyProduct的开发板为例讲解移植过程&#xff0c;假定MyProduct是MyProductVendor公司的开发板…

RC滤波电路

RC滤波电路 综述&#xff1a;本文简单讲述了RC低通滤波电路和RC高通滤波电路。 滤波电路是指过滤输入信号中不需要的信号&#xff0c;保留需要的信号。 一、RC低通滤波电路 1.定义&#xff1a;RC低通滤波电路&#xff1a;保留低频信号&#xff0c;衰减高频信号。 2.截止频率…

突破校园网限速:使用 iKuai 多拨分流负载均衡 + Clash 代理(内网带宽限制通用)

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 3. Clash 部署3.1 准备工作(1) 配置磁盘分区(2) 安装 Docker(3) 安装 Clash(4) 设置代理 1. 简介 由于博主…

014——超声波模块驱动开发Plus(基于I.MX6uLL、SR04和poll机制)

目录 一、基础知识 二、分析为什么打印会影响中断 三、驱动程序 四、应用程序 五、验证及其它 一、基础知识 013——超声波模块驱动开发&#xff08;基于I.MX6uLL与SR04&#xff09;-CSDN博客 二、分析为什么打印会影响中断 asmlinkage __visible int printk(const ch…

一条SQL查询语句是如何执行的

这是专栏的第一篇文章&#xff0c;我想来跟你聊聊 MySQL 的基础架构。我们经常说&#xff0c;看一个事儿千万不要直接陷入细节里&#xff0c;你应该先鸟瞰其全貌&#xff0c;这样能够帮助你从高维度理解问题。同样&#xff0c;对于 MySQL 的学习也是这样。平时我们使用数据库&a…

Windows11安装MySql-8.0.36安装详细教程(保姆级教程)

之前一直用的mysql5.7&#xff0c;最近导入一个项目一直报错&#xff0c;经查阅发现数据库mysql版本太老&#xff0c;今天特地重头下载安装配置一下&#xff0c;做个记录供大家参考。 下载安装包&#xff1a; 下载地址&#xff1a;https://dev.mysql.com/downloads/ 进入后选…

C++STL--排序算法

sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序对于支持随机访问的迭代器的容器&#xff0c; 都可以利用sort算法直接对其进行排序…

基于SSM的师生交流平台

目录 背景 技术简介 系统简介 界面预览 背景 传统的师生互动平台主要依赖于面对面的线下交流&#xff0c;用户必须亲自到场以获取和交流相关信息。然而&#xff0c;随着信息技术的广泛传播&#xff0c;众多教育机构开始转向线上发展&#xff0c;寻求更多样化的发展途径。线…

C++11:声明 初始化

C11&#xff1a;声明 & 初始化 初始化{ }初始化initializer_list 声明autodecltypenullptr 初始化 { }初始化 在C98中&#xff0c;允许使用花括号{ }对数组或者结构体元素进行统一的列表初始化。 用{ }初始化数组&#xff1a; int arr[] { 1, 2, 3, 4, 5 };用{ }初始化…

详解2024年阿里云服务器租用价格表,最新报价

阿里云服务器租用价格表2024年最新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核…

C++中的List容器用法详解

文章目录 C中的List容器用法详解List 的特点List 的重要接口用法介绍1.创建和初始化Listlist 2.插入元素push_backpush_forntinsert 删除元素pop_backpop_fontclearerase 遍历List迭代器遍历范围for遍历 排序Listsort 反转Listreverse 转移Listsplice 去重unique 合并merge 总结…

网站可扩展架构设计——中台

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、中台简介 1.传统项目架构的痛点 (1)重复造轮子 各项目相对独立&#xff0c;许多项目在重复造轮子&#xff0c;让项目本身越来越臃肿&#xf…

[Leetcode笔记] 动态规划相关

前言 写题目写到了一些和动态规划相关的内容&#xff0c;所以在这里记录一下 LCR 089 题解思路 总的来说&#xff0c;就是用一个数组去存储当前的最优解&#xff0c;然后从0开始一路向上顺推过去&#xff0c;求得最后一位的最优解。 class Solution { public:int rob(vect…

检测头篇 | 利用RT-DETR模型的检测头去替换YOLOv8中的检测头

前言:Hello大家好,我是小哥谈。RT-DETR号称是打败YOLO的检测模型,其作为一种基于Transformer的检测方法,相较于传统的基于卷积的检测方法,提供了更为全面和深入的特征理解,将RT-DETR检测头融入YOLOv8,我们可以结合YOLO的实时检测能力和RT-DETR的深度特征理解能力,打造出…

VLAN基础讲解+不同VLAN间通信(实验)

第一章 VLAN基础 1.1 什么是VLAN 随着网络中计算机的数量越来越多&#xff0c;传统的以太网络开始面临广播泛滥以及安全性无法保证等各种问题。 VLAN即虚拟局域网&#xff0c;是将一个物理的局域网在逻辑上划分成多个广播域的技术。通过在交换机上配置VLAN&a…

基于深度学习的吸烟检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的吸烟行为检测系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及…

从0配置React

在本地安装和配置React项目&#xff0c;您可以使用create-react-app这个官方推荐的脚手架工具。以下是安装React的步骤&#xff0c;包括安装Node.js、使用create-react-app创建React应用&#xff0c;以及启动开发服务器。 下载安装node.js运行以下命令&#xff0c;验证Node.js…

【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 开发环境的搭建 | Qt 安装教程 文章编号&#xff1a;Qt 学习笔记 /…

外贸建站:WordPress搭建外贸独立站零基础自建站完整教程(2024)

对于做外贸来说&#xff0c;拥有自己的外贸独立网站真的非常重要。在外贸领域&#xff0c;如今各平台竞争激烈&#xff0c;规则多&#xff0c;成本高&#xff0c;价格战、政策变化快&#xff0c;还存在封店风险等等因素。在这种情况下&#xff0c;拥有外贸独立站就能很好规避上…