搭建vue3+vant项目架构
git代码仓库,直接下载压缩包使用
1、首先要安装node.js(18.3 或更高版本)
2、创建vue3项目
npm create vue@latest
然后按照自己的需要进行选择就行

到此vue3项目创建完成,接下来是搭建项目架构
3、配置Vant (移动端ui)
vue3项目引入vant,按需引入组件
// 引入vant
npm i vant
// 辅助按需引入样式
npm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D
在文件vite.config.js,添加以下代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from '@vant/auto-import-resolver'export default defineConfig({plugins: [vue(),AutoImport({resolvers: [VantResolver()],}),Components({resolvers: [VantResolver()],}),]
})
使用
vue3中直接在使用的组件,按需引入需要用的组件就行,例如:
// test.vue
<template><van-button type="primary">按钮</van-button>
</template>
4、配置环境变量
配置各个环境的配置文件

// 例如在.env.development文件中NODE_EVN=development // 环境变量
VITE_BASE_API=http://dev.os-api.vertlet.com // 请求的地址
// package.json 文件"scripts": {"dev": "vite --open --mode development","test2": "vite --open --mode test","gray": "vite --open --mode gray","production": "vite --open --mode production","build:gray": "vite build --mode gray","build:dev": "vite build --mode development","build:test2": "vite build --mode test","build:prod": "vite build","preview": "vite preview"},
5、配置axios请求
// 创建request.ts 文件,封装axios
import axios from 'axios'
import { showToast } from 'vant'const instance = axios.create({baseURL: import.meta.env.VITE_BASE_API,timeout: 30000,headers: {'X-Requested-With': 'XMLHttpRequest',},
})// 请求拦截
instance.interceptors.request.use(function (config) {const token = localStorage.getItem('token')// 在发送请求之前做些什么if (token) {config.headers['Xl-Os-Token'] = token}if (config.method == 'get') {config.params.from_mobile = 1} else {config.data.from_mobile = 1}return config},function (error) {// 对请求错误做些什么return Promise.reject(error)},
)// 响应拦截
instance.interceptors.response.use((response) => {const { data } = responseif (data.code === 0) {// 请求成功return data}showToast(data.msg)},function (err) {console.log(err)return Promise.reject(err)},
)export function GET(url: string, params: object, config?: object) {return instance({method: 'get',url,params,...config,})
}export function POST(url: string, data: object, config?: object) {return instance({method: 'post',url,data,...config,})
}
6、pinia使用
定义store
// store/counter.tsimport { ref, computed } from 'vue'
import { defineStore } from 'pinia'export const useCounterStore = defineStore('counter', () => {const count = ref(0)const doubleCount = computed(() => count.value * 2)function increment() {count.value++}return { count, doubleCount, increment }
})
使用store
在需要的vue组件中,引入store
// views/index.vue<template><p>count:{{ count }}</p><p>doubleCount:{{ doubleCount }}</p><van-button type="primary" @click="increment">anniu</van-button>
</template><script setup lang="ts">
// import { getShopGroupList } from '@/service/index'
import { useCounterStore } from '@/stores/counter'
import { storeToRefs } from 'pinia'const store = useCounterStore()
const { count, doubleCount } = storeToRefs(store)
const { increment } = store
</script>
<style lang="scss" scoped></style>
移动端设配问题
使用amfe-flexable,postcss-pxtorem,进行移动端适配;
amfe-flexable: 是阿里发布的一套可伸缩适配方案。它能根据设备的宽高来设置页面body元素的字体大小,将1rem设置为设备宽度/10以及在页面大小转换时可以重新计算这些数值,但仅限于
<style></style>标签里设置的px,对于行内样式和百分比是不生效的。
postcss-pxtorem是postcss的一个插件,可以将对应的像素单位转换为rem。在vite中可以直接对其进行配置,因为vite已经集成了postcss。
其中最重要的配置属性为:
- rootValue:根元素的值,即1rem对应的像素值大小。一般设置为设计稿尺寸/10
以及一些其他属性:- propList:需要进行转换的css属性的值,可以使用通配符。如:*意思是将全部属性单位都进行转换;[“position”]会匹配到background-position-y
- selectorBlackList:不进行单位转换的选择器。如设置为字符串body,则所有含有body字符串的选择器都不会被该插件进行转换;若设置为[/^body$/],则body会被匹配到而不是.body
- exclude:不需要进行单位转换的文件 mediaQuery:是否允许像素在媒体查询中进行转换
//npm方式
npm install postcss-pxtorem --save-dev
npm install amfe-flexible --save-dev//pnpm方式
pnpm add postcss-pxtorem -D
pnpm add amfe-flexible -D
如果项目用的是ts,还需要安装
npm i --save-dev @types/postcss-pxtorem
由于amfe-flexible没有提供类型信息文件,所以需要自己定义一个.d.ts文件;
使用declare关键字来告诉TypeScript编译器存在一个名为amfe-flexible的模块,但是不提供具体的类型信息
// amfe-flexible.d.tsdeclare module 'amfe-flexible'
// tsconfig.app.json
{"extends": "@vue/tsconfig/tsconfig.dom.json","include": ["env.d.ts","src/**/*","./auto-imports.d.ts","./components.d.ts","./amfe-flexible.d.ts"],"exclude": ["src/**/__tests__/*"],"compilerOptions": {"composite": true,"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo","allowJs": true,"baseUrl": "./","paths": {"@/*": ["src/*"]}}
}
// main.jsimport 'amfe-flexible'
// vite.config.js 配置postcss-pxtoremimport { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import postCssPxToRem from 'postcss-pxtorem'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},css:{postcss:{plugins:[postCssPxToRem({rootValue:37.5,propList:['*'],})]}}
})
引入scss
npm i sass -D
// vite.config.tsexport default defineConfig({plugins: [// ...css: {preprocessorOptions: {scss: {// 配置全局sass变量注入additionalData: '@use "@/styles/variable.scss";',},},},
})
添加调试面板VConsole
vConsole是一个轻量、可拓展、针对手机网页的前端开发者调试面板
npm install vconsole
// main.jsimport VConsole from 'vconsole';if (import.meta.env.MODE !== "production") {
// 生产环境不展示new VConsole();
}
遇到问题
BUG:在vue文件中导入ts,会出现标红报错:Cannot find module ‘@/service/index’ or
its corresponding type declarations.Vetur(2307)
解决:在使用vue2的时候,用的插件是vetur;但是vue3推荐使用的是vue-offical。只要切换一下插件就没问题了。
BUG:配置vant后,由于插件能帮我们自动引入,因此无需手动引入组件,导致ts识别为“Cannot find name
‘showToast’”,如图:
解决:需要把生成的auto-imports.d.ts和components.d.ts引入tsconfig中,如图

相关文章:
搭建vue3+vant项目架构
git代码仓库,直接下载压缩包使用 1、首先要安装node.js(18.3 或更高版本) 2、创建vue3项目 npm create vuelatest然后按照自己的需要进行选择就行 到此vue3项目创建完成,接下来是搭建项目架构 3、配置Vant (移动端ui) vue3项目引入vant,…...
【Linux】进程间通信 -> 匿名管道命名管道
进程间通信的目的 数据传输:一个进程许需要将它的数据发送给另外一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程…...
大数据开发学习路线
编程语言: Python:数据分析、数据预处理 Java:Hadoop和许多大数据工具的基础 Scala:用于Apache Spark数据库知识: SQL和NoSQL数据库的基本概念 数据库系统如MySQL、MongoDB等操作系统: Linux基础命令和脚本…...
华为云计算HCIE笔记05
第七章:其它模式 灾备组网 高可用性组网,单核心场景下,直接在两个站点中设置一个第三方仲裁站点,两个站点同时连接到仲裁,并且连接到对方。一旦出现问题,则由仲裁站点进行判断,进行业务切换 双核…...
wordpress网站用token登入开发过程
生成跳转token 示例: function generate_login_token($user_id, $secret_key) {$payload [user_id > $user_id,timestamp > time(),];$payload_json json_encode($payload);$signature hash_hmac(sha256, $payload_json, $secret_key);return base64_en…...
Python基础知识回顾
数据类型 Python可以区分整数(integers、下文简写为int)、浮点数(float)、字符串(string)和布尔值(Boolean)等数据类型。 1)int是可正可负的整数 2)float包…...
C++--------效率和表示
C 效率和表示 效率 时间效率:在 C 中,不同的数据结构和算法有着各异的时间复杂度。例如,访问数组元素的时间复杂度是 O ( 1 ) O(1) O(1),而遍历链表查找元素的时间复杂度最坏情况下是 O ( n ) O(n) O(n)。选择合适的算法与数据…...
在 Ubuntu 服务器上添加和删除用户
在 Ubuntu 服务器上添加和删除用户通常使用命令行工具,如 adduser、useradd、deluser 等。以下是详细的步骤和说明: 添加用户 使用 adduser 命令 adduser 是一个更为友好的脚本,用于创建新用户并设置相关信息。 添加新用户 sudo adduser 用…...
安卓 SystemServer 启动流程
目录 引言 Android系统服务启动顺序 zygote fork SystemServer 进程 SystemServer启动流程 1、SystemServer.main() 2、SystemServer.run() 3、初始化系统上下文 4、创建系统服务管理 5、启动系统各种服务 总结 引言 开机启动时 PowerManagerService 调用 AudioSer…...
深度分析 es multi_match 中most_fields、best_fields、cross_fields区别
文章目录 1. multi_match 查询的类型1.1 best_fields(默认)1.2 most_fields1.3 cross_fields 2. 不同类型的示例查询示例数据: 3. 示例 1: 使用 best_fields查询:说明: 4. 示例 2: 使用 most_fields查询:说…...
中职计算机网络技术理实一体化实训室建设方案
构建理实一体化教学模式对于改善中等职业学校计算机网络技术课程的教学现状、提升教学质量和效率具有重要意义。在中职教育不断深化改革的背景下,积极推进理实一体化教学模式的发展,不仅能够提高计算机网络技术课程的教学水平,满足教育改革的…...
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
引言 在大厂架构中,提升系统性能和稳定性是技术团队的首要任务。SQL优化与批处理作为两大关键技术手段,对于处理大规模数据和高并发请求具有重要意义。本文将从Java技术专家的视角出发,深入探讨SQL优化与批处理在大数据处理中的应用及原理&a…...
数据结构(Java版)第六期:LinkedList与链表(一)
目录 一、链表 1.1. 链表的概念及结构 1.2. 链表的实现 专栏:数据结构(Java版) 个人主页:手握风云 一、链表 1.1. 链表的概念及结构 链表是⼀种物理存储结构上⾮连续存储结构,数据元素的逻辑顺序是通过链表中的引⽤链接次序实现的。与火车…...
云边端一体化架构
云边端一体化架构是一种将云计算、边缘计算和终端设备相结合的分布式计算模型。该架构旨在通过优化资源分配和数据处理流程,提供更高效、更低延迟的服务体验。 下面是对这个架构的简要说明: 01云计算(Cloud Computing) — 作为中心…...
人工智能之基于阿里云进行人脸特征检测部署
人工智能之基于阿里云进行人脸特征检测部署 需求描述 基于阿里云搭建真人人脸68个关键点检测模型,模型名称:Damo_XR_Lab/cv_human_68-facial-landmark-detection使用上述模型进行人脸关键点识别,模型地址 业务实现 阿里云配置 阿里云配置…...
基于高云GW5AT-15 FPGA的SLVS-EC桥MIPI设计方案分享
作者:Hello,Panda 一、设计需求 设计一个4Lanes SLVS-EC桥接到2组4lanes MIPI DPHY接口的电路模块: (1)CMOS芯片:IMX537-AAMJ-C,输出4lanes SLVS-EC 4.752Gbps Lane速率; (2&…...
MPLS小实验:利用LDP动态建立LSP
正文共:1234 字 19 图,预估阅读时间:2 分钟 通过上个实验(MPLS小实验:静态建立LSP),我们了解到静态LSP不依靠标签分发协议,而是在报文经过的每一跳设备上(包括Ingress、T…...
C++ 面向对象编程
面向对象编程(Object-Oriented Programming, OOP)是C语言的一个重要特性,它允许开发者以更直观和模块化的方式来设计和构建程序。OOP的四个主要原则是:封装(Encapsulation)、继承(Inheritance&a…...
我的Serverless实战——引领云计算的下一个十年,附答案
(Serverless模式下,按照实际消耗资源及使用存储进行计费) 4.更少的代码,更快的交付速度。 (Serverless提供成熟的代码构建发布、版本切换等特性,交付速度更快) Serverless由开发者实现的服务端逻…...
有哪些其他方法可以实现数据一致性验证?
数据库约束 主键约束: 主键是表中用于唯一标识每条记录的一列或一组列。例如,在一个“用户表”中,用户ID可以作为主键。当插入或更新数据时,数据库会自动检查主键值是否唯一。如果试图插入一个已存在主键值的记录,数据…...
生态廊道构建实战指南(1)—Linkage Mapper与Circuitscape环境部署详解
1. 生态廊道构建工具入门指南 第一次接触生态廊道分析的朋友可能会被各种专业术语吓到,其实没那么复杂。简单来说,Linkage Mapper和Circuitscape就是帮我们在数字地图上找出动物迁徙"高速公路"的神器。想象一下,你是一位城市规划师…...
electron+ruoyi-vue深度整合指南:从web到桌面的完整改造方案
ElectronRuoYi-Vue企业级桌面应用深度整合实战 企业级应用从Web向桌面端迁移已成为提升用户体验的重要路径。作为国内广泛使用的开源后台管理系统,RuoYi-Vue与Electron的结合能够快速构建跨平台桌面应用。但真正实现企业级稳定运行,需要解决主进程通信、…...
YOLOv11卷积模块深度剖析:从参数解析到实战应用
1. YOLOv11卷积模块设计精要 第一次接触YOLOv11的配置文件时,我和大多数开发者一样被那些看似简单却暗藏玄机的参数搞得一头雾水。特别是当我在backbone部分看到[-1, 1, Conv, [64, 3, 2]]这样的配置时,直觉告诉我输出通道数应该是64,但实际运…...
AI建站工具避坑指南:10个高频问题与真相解答
面对AI建站这个新事物,心动的人多,但真正敢下手的人,心里都藏着不少问号。“这东西靠谱吗?”“我的数据会不会丢了?”“用这个做了网站,以后会不会被圈住?”这些顾虑非常正常。今天这篇文章&…...
HTML5语义化元素完全解析:提升SEO与可访问性的最佳实践
HTML5语义化元素完全解析:提升SEO与可访问性的最佳实践 【免费下载链接】awesome-html5 :memo: A curated list of awesome HTML5 resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-html5 HTML5语义化元素是现代Web开发的核心技术,…...
PointPillars:面向自动驾驶的高效3D点云目标检测技术实现
PointPillars:面向自动驾驶的高效3D点云目标检测技术实现 【免费下载链接】PointPillars 项目地址: https://gitcode.com/gh_mirrors/po/PointPillars 1. 技术挑战与解决方案 自动驾驶系统面临的核心挑战之一是实时感知复杂的三维环境。激光雷达(LiDAR)作为…...
SEO接单平台怎么选
SEO接单平台怎么选?详细指南解析 在当今数字化时代,SEO接单平台已经成为许多企业和自由职业者获取客户资源的重要途径。市场上充斥着各种SEO接单平台,如何选择一个合适的平台对于提升工作效率和业务发展至关重要。本文将详细介绍如何选择SEO…...
Path of Building 全面指南:从零开始的流放之路角色构建工具精通教程
Path of Building 全面指南:从零开始的流放之路角色构建工具精通教程 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building 是《流放之路》玩家不…...
Cesium实战指南4-Polylines图元高级应用解析
1. Polylines图元基础概念与核心价值 在三维地理可视化领域,Polylines(折线)是最基础也最常用的图元之一。简单来说,它就是连接多个点的线段集合,但千万别小看这个基础功能——从飞机航线到河流走向,从城市…...
StructBERT中文相似度模型实操手册:如何扩展为‘单句vs百句’本地向量检索服务
StructBERT中文相似度模型实操手册:如何扩展为‘单句vs百句’本地向量检索服务 1. 项目简介与核心价值 StructBERT中文相似度模型是基于阿里达摩院开源的大规模预训练模型开发的本地化语义匹配工具。这个工具能够将中文句子转化为高质量的特征向量,通过…...

