风雨同行 发表于 2024-6-26 03:47:29

vue3移动端项目构建,vue3+vant+vite+axios+pinia+sass

vue3:https://cn.vuejs.org/
vant:https://vant-contrib.gitee.io/vant/#/zh-CN
axios:https://www.axios-http.cn/docs/api_intro
vite:https://vitejs.cn/
pinia:https://pinia.vuejs.org/zh/
sass:https://blog.csdn.net/randy521520/article/details/131242242
前言:
本文主要讲解vue3移动端项目构建,在构建项目前请确保已安装node、yarn工具,node版本18+,此项目构建主要集成:axios、pinia、vant、sass、vite和vue3,其中还会先容到如何跨页面传递数据、国际化设置、rem适配等功能
本文讲解的功能代码只是扼要阐明,完备代码可点击以下链接下载,下载后请先看README.md文档阐明,已踩过大部门坑:
vue3移动端项目搭建,vue3+vant+vite+axios+pinia+sass完备版代码下载:
https://download.csdn.net/download/randy521520/88820174
vue3移动端项目构建TS,vue3+vant+vite+axios+pinia+sass+typescript完备版代码下载:
https://download.csdn.net/download/randy521520/88820178
vue3 PC端项目构建,vue3+antd+vite+pinia+axios+sass完备版代码下载:
https://download.csdn.net/download/randy521520/88820523
vue3 PC端项目构建TS,vue3+antd+vite+axios+pinia+sass+typescript完备版代码下载:
https://download.csdn.net/download/randy521520/88845681
一、初始化项目

1.cmd打开终端工具,运行:yarn create vite
https://img-blog.csdnimg.cn/direct/5dac378807e54fac8847c1d0f8fcb45e.png
2.输入项目名称,键盘方向键选择vue
https://img-blog.csdnimg.cn/direct/a1895d474c384085bd7b7bd4ffde27b7.png
3.键盘方向键选择JavaScript
https://img-blog.csdnimg.cn/direct/0b7cd3b3307b4b988a87842b3def71ca.png
4.项目创建乐成
https://img-blog.csdnimg.cn/direct/2193c917cdce4b03897fff00c86710d3.png
5.开发者工具打开项目,打开开发者工具的终端,运行yarn install,安装package.json中的依赖包
https://img-blog.csdnimg.cn/direct/f0337dc6f0c74f7db4aecd43661545df.png
6.修改package.json脚本中的dev为 vite --open,运行yarn dev,就会启动项目并在欣赏器中自动打开,不加–open不会在欣赏器中自动打开,项目初始化乐成
https://img-blog.csdnimg.cn/direct/01819da1c5764227ac5d35e79846dbf8.png
7.vite相干下令
vite :启动开发服务器,可以指定一个根目录(可选)。
build :构建生产环境的应用程序,可以指定一个根目录(可选)。
optimize :预打包依赖项,用于优化构建性能。
preview :本地预览生产环境的构建结果,可以指定一个根目录(可选)。
--open:启动开发服务器后自动打开默认浏览器并访问应用程序
--cors:启用 CORS(跨域资源共享)。
--strictPort:如果指定的端口已被占用,则退出。
--force:强制优化器忽略缓存并重新打包。
-c, --config <file>:使用指定的配置文件。
--base <path>:设置公共基础路径,默认为 /。
-l, --logLevel <level>:设置日志级别,可选值为 info、warn、error、silent。
--clearScreen:允许或禁用日志时的清屏操作。
-d, --debug :显示调试日志,可选参数为特定功能的名称。
-f, --filter <filter>:过滤调试日志的输出。
-m, --mode <mode>:设置环境模式。
-h, --help:显示帮助信息。
-v, --version:显示版本号。
二、集成vant

1.终端运行:yarn add vant,安装vant
https://img-blog.csdnimg.cn/direct/8555e97539b04f4d8439b3eb68e5d071.png
2.修改mian.js,引入vant样式,注册组件
https://img-blog.csdnimg.cn/direct/16617e8336b941f58c684bc470f30074.png
3.修改App.vue,会发现vant组件已经可以在页面显示
https://img-blog.csdnimg.cn/direct/def9dfe08b704825bb5b7072b7f6c2c7.png
4.可以直接在页面导入组件使用,不消全局注册
https://img-blog.csdnimg.cn/direct/80e57501ad264e1892654fb57172e894.png
三、vant组件按需引入组件样式

常规用法无论是全局注册组件,照旧局部导入组件,照旧须要手动导入,而且明显都是vant中的组件,局部导入和全局注册定名上是不一样的,对于强迫症的我说,看起来挺别扭。按需引入可以减小项目体积、避免全局污染、使项目代码更加精简和可维护等长处,借助unplugin-vue-components插件,可以避免手动导入组件
1.终端运行:yarn add unplugin-vue-components -D,安装unplugin-vue-components
https://img-blog.csdnimg.cn/direct/445b8379b59144e7bb69bbdfabe2bee1.png
2.修改vite.config.js
https://img-blog.csdnimg.cn/direct/706984c9da3e451783b921a69f9dd5b8.png
3.修改mian.js、App.vue,组件依然可以正常显示
https://img-blog.csdnimg.cn/direct/d55b4f97e3524267a805b3291783d5bd.png
4.vant 中有个别组件是以函数的形式提供的,包括 Toast,Dialog,Notify 和 ImagePreview 组件,unplugin-vue-components无法解析自动注册组件,导致无法解析样式,办理办法就是在main.js中引入相干样式大概不使用函数形式,使用相干组件形式
https://img-blog.csdnimg.cn/direct/8c1630b6df2a486da1f99042a565ba97.pnghttps://img-blog.csdnimg.cn/direct/d54fc48599304eb5b04de9aa4225da34.pnghttps://img-blog.csdnimg.cn/direct/751ddfdf3d694a5bbc0734c696b02db2.png
四、集成sass

sass是css预处理器,可以声明变量、函数、嵌套等功能,可以减少重复的代码,使得样式表的结构更清晰、更易读##### 须要的地方举行引用,可以避免重复的样式代码,并且方便举行样式的修改和维护
1.终端运行:yarn add sass -D,安装sass
https://img-blog.csdnimg.cn/direct/87130a332ca7433aa43b340165f8cb41.png
2. 在assets中新建scss>global.scss、scss>globalMixin.scss、scss>globalVar.scss、scss>iframe.scss,global.scss用于通用的样式、globalMixin.scss用于Mixin通用的样式、globalVar.scss用于全局变量、iframe.scss用于导出scss文件,修改vite.config.js,将iframe.scss文件引入到项目中
https://img-blog.csdnimg.cn/direct/9598a203b58c411baf27e119ae72923a.png
3.修改global.scss、globalMixin.scss、globalVar.scss,globalVar.scss中相干的颜色值只管和vant保持一致,便于背面设置定制化主题时,使自己组件的样式和vant统一,如果不涉及和vant保持一致,可以根据计划写成固定值
https://img-blog.csdnimg.cn/direct/d5ec3ccaf9eb4ce7b1b145c36b0086f2.png
4.修改App.vue,div样式使用了scss变量、Mixin函数、scss通用样式已生效
https://img-blog.csdnimg.cn/direct/c6e24d86dc3e4b93b480e4f72e46721b.png
五、路由设置

1.终端运行:yarn add vue-router,安装vue-router
https://img-blog.csdnimg.cn/direct/1ce9c0f3fc8d498e82d860ce22b33052.png
2.在src下新建pages>home.vue,把之前App.vue的代码复制到home.vue中,并在vite.config.js设置pages路径别名
https://img-blog.csdnimg.cn/direct/d56071183d344648b0999b004adfcb94.pnghttps://img-blog.csdnimg.cn/direct/71399bf801ed45ffb60fb4dcf078d245.png
3.在src下新建router.js,设置home页面路由,并在main.js中使用该路由
https://img-blog.csdnimg.cn/direct/9a0626b96ad644a8b60439f26a63a756.png
4.修改App.vue,页面显示正常,阐明路由设置乐成,router-view渲染路由页面、transition路由切换过渡效果、keep-alive在组件切换时保留组件的状态,避免重新渲染和烧毁component
https://img-blog.csdnimg.cn/direct/f94159fe2bea40739779ffdfc25df4e3.png
六、ConfigProvider定制化主题

1.在src下新建hooks>useTheme.js,并在vite.config.js设置路径别名,之以是采用useTheme.js设置主题,是为了写内联样式时可以使用一样的主题设置
https://img-blog.csdnimg.cn/direct/dd4c8ed27f9349c9acbeea04e5ff2a80.png
2.修改App.vue,查看页面会发现主色都酿成赤色了,primaryColor会被编译成–van-primary-color
https://img-blog.csdnimg.cn/direct/2d28b9cb29cf4114ad5b4d5aa675a0c0.png
3.这样设置主题还能办理另外一个问题,之前已经设置按需加载,如果没有引入相干的组件,globalVar.scss中的–van-primary-color是没有值的,因为是按需加载,又没有用–van-primary-color相干的组件,以是–van-primary-color是不会加载的,修改App.vue表明掉ConfigProvider、home.vue表明掉van-button后会发现页面中没使用van-button,div的背景色是没有的
https://img-blog.csdnimg.cn/direct/2b98a952ef584474b5df21d5cf3b6c29.png
4.使用van-config-provider,就算页面没使用相干的组件–van-primary-color也是可以加载出来的,这里没使用themeVars,以是是默认的蓝色
https://img-blog.csdnimg.cn/direct/fe470f58a6014583a0b6169bb3de9bbb.png
七、集成postcss,适配

1.终端运行:yarn add postcss-px-to-viewport-8-plugin -D,安装postcss-px-to-viewport-8-plugin
https://img-blog.csdnimg.cn/direct/31aaf397ba5e4daba7563049181083d1.png
2.在根目录上新建postcss.config.js,重新运行项目,会发现之前div中的px已转换为vw,vant框架内部定义的变量也转为vw
https://img-blog.csdnimg.cn/direct/3e058ae6c3374cb293496c589fb77691.pnghttps://img-blog.csdnimg.cn/direct/fde6b20a42274fceb1ed06a5b2eaf3fc.png
3.不使用postcss.config.js,修改vite.config.js也可以设置postcss
https://img-blog.csdnimg.cn/direct/92af4c601a1349f18fd8288adb57c00b.png
4.只使用postcss.config.js是无法转换内联样式中的像素,可以自己写个插件转换
https://img-blog.csdnimg.cn/direct/82760d6e0d0c4460a4ca6128066b4070.png
5.在src下新建plugin>style-pxtovw-loader.js,并在vite.config.js中引入该插件,之以是匹配useTheme.js,是因为如果useTheme.js中有设置像素单位,写内联样式时用到里面的像素,里面的px是无法转换的,再看页面之前的16px已转为vw;也可以把插件中的px转换vw的方法封装成hook,内联样式直接调用hook就行
https://img-blog.csdnimg.cn/direct/eeee49a6d4494e0d80278ea10cbf7f12.pnghttps://img-blog.csdnimg.cn/direct/9684488fe14b43fa966f5c7a6f92e86e.png
6.修改style-pxtovw-loader.js
https://img-blog.csdnimg.cn/direct/063b807827d643de864516f1b0308eaf.png
八、集成pinia,状态管理

1.终端运行:yarn add pinia pinia-plugin-persist,安装pinia、pinia-plugin-persis
https://img-blog.csdnimg.cn/direct/c098dc11730242b680d05e41159c6c63.png
2.在src下新建store>pinia.js、store>initStore.js、store>useDemoStore.js,在vite.config.js设置路径别名,并在main.js中使用该设置
https://img-blog.csdnimg.cn/direct/2dd4f4d3c3b8499cbe00e705be6ae7ec.pnghttps://img-blog.csdnimg.cn/direct/5d62c02458cc4c1fa2d099a3bd0927ba.pnghttps://img-blog.csdnimg.cn/direct/0d15a84c07394fbfb5773bb51205f401.pnghttps://img-blog.csdnimg.cn/direct/4d4cb11969b640d6977f1db26d973ed0.pnghttps://img-blog.csdnimg.cn/direct/24e18b2a6eba4ea28adfa3fb0e4e2e46.png
3.修改home.vue,使用useDemoStore,乐成拿到userName,初始化的store是不会存在storage的
https://img-blog.csdnimg.cn/direct/7861328aa67144ca98c37c6c58608f24.png
4.修改demoStore中userName为 李四,可以的调用useDemoStore中的updateState方法,这个方法须要自己写,更新完之后会发现storage中已持久化储存该数据
https://img-blog.csdnimg.cn/direct/24e2dddbc0ab4da3a2ab64251bc31485.png
九、国际化设置

1.终端运行:yarn add vue-i18n,安装vue-i18n
https://img-blog.csdnimg.cn/direct/59db3496a44845edb3df93319fd3cf53.png
2.在src下新建common>commonEnum.js,commonEnum.js公共罗列文件,并在vite.config.js中设置路径别名
https://img-blog.csdnimg.cn/direct/2a667994ff88418eb01903251943e149.png
3.在src下新建lang>en_us.js、lang>zh_cn.js、lang>index.js,用于创建国际化,并在main.js中使用该设置,在vite.config.js中设置路径别名,把语言设置存入localStorage是为了保证语言改变之后,革新页面之后也可以使用之前改变后的语言
https://img-blog.csdnimg.cn/direct/de9a93efffb2477cb0a9236914709ba9.pnghttps://img-blog.csdnimg.cn/direct/0484897fb13142b298f8c0ad58e76331.pnghttps://img-blog.csdnimg.cn/direct/86a57a8fac134dab81bffd2708e989dd.png
4.修改home.vue后,页面切换中英文都可以生效,革新页面后之前切换的语言也不会改变
https://img-blog.csdnimg.cn/direct/58b97a7ca93d452ea50745af72b06270.pnghttps://img-blog.csdnimg.cn/direct/1b257899056d4811b9d29b5f0696661a.png
十、创建page.vue组件作为项目的页面组件

1.在components下新建layout>Page.vue,并把src/components在vite.config.js中设置路径别名
https://img-blog.csdnimg.cn/direct/87c8c7f2eca541688151e8ce3ff5ec54.pnghttps://img-blog.csdnimg.cn/direct/e69a61bf15804ad79aff833cf1c2aeca.pnghttps://img-blog.csdnimg.cn/direct/ec00cb71dfba4905a8fc4b3a2403bf33.png
2.删除style.css,增长style.scss,并在main.js中引入该scss
https://img-blog.csdnimg.cn/direct/e1a61007dc87449fa37c843e9761fcdb.png
3.修改home.vue,再看页面可以正常显示,这个组件除了是页面组件之外,还办理了之前transition的报警信息,之前的报警是因为transition只能有一个root节点,没有这个组件包括的时候van-button、div都是transition的root节点。这个组件目前只封装了导航、top、body、footer,背面可以根据须要增长下拉革新、滚动加载、暂无数据、以及底部tab等扩展功能
https://img-blog.csdnimg.cn/direct/b37f30d6bc384a888c6f6a0fa8c82b3c.pnghttps://img-blog.csdnimg.cn/direct/6887f35b9fda4731bd76b76df8928874.png
十一、集成字体图标

1.字体图标集成以阿里icon为例,访问:https://www.iconfont.cn/ 图标库,搜刮返回,任选一个图标加入购物车
https://img-blog.csdnimg.cn/direct/b285291d14884195b1d1339651075712.png
2.去购物车中,选择下载代码
https://img-blog.csdnimg.cn/direct/0d2ac683ea7a4fb6ba7961dfca2e628a.png
3.在assets下新建font文件,把下载好的字体图标解压到该文件,然后在style.scss中引入iconfont.css
https://img-blog.csdnimg.cn/direct/c2e4ce6c50244b75a2fbb833fe9904dd.png
4.修改Page.vue,增长返回图标
https://img-blog.csdnimg.cn/direct/a5f75a1fcb3245e7987b12bc2abf244d.png
十二、集成axios

1.终端运行:yarn add axios,安装axios
https://img-blog.csdnimg.cn/direct/3578bb98bc0546269f4e6aa516a9e303.png
2.在common下新增requests.js
https://img-blog.csdnimg.cn/direct/e3b4489367fe4294a74eb09d009a7c5c.png
3.修改home.vue,查看页面会发现已请求到数据;这只是简单的用法,至于项目中须要的加密、返回的结果、怎么去管理api等问题须要根据详细的项目去调解
https://img-blog.csdnimg.cn/direct/04198a2ed81243ea99fe8603c98097f0.png
十三、开发环境设置

1.在根目录下新建.env.development、.env.production
https://img-blog.csdnimg.cn/direct/a495e32954b04f02b6e42c84bc3bbf90.png
2.修改package.json中的脚本下令
https://img-blog.csdnimg.cn/direct/051d3ee40ba24b12b1c5bab5c9123c9c.png
3.在hook下新建useCommon.js
https://img-blog.csdnimg.cn/direct/028a7fce6a314cd2acdede52fb68ccc9.png
4.运行yarn dev重新启动项目
https://img-blog.csdnimg.cn/direct/67770eb5a359482291d92d3ec7987fd5.png
5.修改home.vue,乐成拿到环境设置
https://img-blog.csdnimg.cn/direct/02e57b9b16d04d949e268fb50b79a0e0.png
十四、路由跳转

1.因为Page.vue是每个页面都能用到的,通过main.js注册成全局组件
https://img-blog.csdnimg.cn/direct/775a7e588dcc4b4b8329f3c5f4bbc84d.png
2.在pages下新建三个页面:list.vue、add.vue、detail.vue,分别为列表页、添加页、详情页,并设置路由
https://img-blog.csdnimg.cn/direct/cda5ca7723c54972a6965fdad8080565.pnghttps://img-blog.csdnimg.cn/direct/468e25543bc5477aa2a79619c8cc3ae5.png
3.给页面添加跳转:home>list>add >detail 或 home>list>detail,下图中演示了三种路由跳转传参的方式,第一种params传参:须要提前在路由上设置相干参数,跳转成之后url上会显示参数,页面革新之后不会丢失;第二种query传参:不须要提前在路由设置参数,跳转成之后url上会显示参数,页面革新之后不会丢失;第三种state传参,是通过window.history传参,页面革新之后不会丢失;第一种第二种传参固然页面革新之后不会丢失,但是会显示在url上,如果传递一些隐私数据或大量的数据显然不合适,第三种页面革新之后不会丢失,不会显示在url上可以传递隐私数据,不过获取时候是通过history获取的,对于我来说无论是什么跳转传参,获取参数时是盼望通过同一种方式获取,觉得不要紧的可以忽略,纯属个人习惯
https://img-blog.csdnimg.cn/direct/ef0602033c8b45deb68695a43dc3dd30.pnghttps://img-blog.csdnimg.cn/direct/24e72fa981164931b98b33a5327092af.pnghttps://img-blog.csdnimg.cn/direct/61263b1be8734272a608e40d5a682bc6.png
4.修改Page.vue,返回上一页功能,返回上一页可以使用router.go(-1)、router.back()无论哪一种都是基于欣赏器的返回,欣赏器的返回缺点儿在于不能传参、根据跳转历史记载返回,如果home>list>detail这样跳转返回天然没问题,如果home>list>add >detail这样跳转就会导致从详情页返回时返回到add页面,正常业务数据添加乐成,跳转到查看详情,在详情页大部门时返回的list页面,固然可以通过router.go(-1),指定返回页面层数,但是路由跳转过多难免不出问题,而且在返回是无法传递参数,以是路由这块儿须要重新封装,弥补这些弱势
https://img-blog.csdnimg.cn/direct/4d540054f6c647b19cb80bac3ac99616.png
十五、路由封装

在刚才的路由跳转中,分析了一些路由跳转的弱势,而且路由的封装可以完善Page.vue的返回功能。可以参考微信小程序的路由跳转功能,通过消息变乱发布和订阅(变乱发射器)来封装路由,再由状态管理器储存路由。变乱发射器有三个基本的功能:注册变乱、移除变乱、触发变乱
1.在hooks下新建useEventEmitter.js
https://img-blog.csdnimg.cn/direct/d4eab3aa4859407b815abe9c8ee2adc8.png
2.在根目录下创建tabBar.js,可使用该js扩展Page.vue组件增长tabbar功能
https://img-blog.csdnimg.cn/direct/7e6bacb4405c42b081c923f7b1efae1c.png
3.修改store>initStore.js,增长routerStore
https://img-blog.csdnimg.cn/direct/5bf1d40511984e08bc7fbe25200644e5.png
4.在store下增长useRouterStore.js,目前只封装了navigateTo、navigateBack
https://img-blog.csdnimg.cn/direct/446accc60f9747958ed175b1306a53ac.pnghttps://img-blog.csdnimg.cn/direct/7c9f775014744a22879a9ded43bdfd03.png
https://img-blog.csdnimg.cn/direct/c3b0db902a5746c1b9eac8d46f1e5548.pnghttps://img-blog.csdnimg.cn/direct/65571247c2c645078a1c6356759470ac.pnghttps://img-blog.csdnimg.cn/direct/2263f46ab07745dabf8a50754d1711a7.png
5.修改router.js增长历史路由监听和路由跳转监听变乱,去除list路由上的参数
https://img-blog.csdnimg.cn/direct/f405dba6d9184972b0ca50e98680c927.pnghttps://img-blog.csdnimg.cn/direct/45a901bd95074b37a0a13c36b5a5ae2f.png
6.修改Page.vue返回上一页
https://img-blog.csdnimg.cn/direct/0bb971096efd4f9b9b8207b0da07002a.png
7.修改home.vue、list.vue、add.vue、detail.vue跳转
https://img-blog.csdnimg.cn/direct/d06c3d6e4225435c8bd141b8333203bc.pnghttps://img-blog.csdnimg.cn/direct/11e7a30590e341e292b249fea3ea127a.pnghttps://img-blog.csdnimg.cn/direct/16ba58458f3d4bbca2fcfc0de80d30e0.pnghttps://img-blog.csdnimg.cn/direct/efaa35679ff94b6ba63bbfdbf66c1cd0.png
8.页面效果
https://img-blog.csdnimg.cn/direct/8612c4d187b5408ab4bb48eba59d8344.pnghttps://img-blog.csdnimg.cn/direct/e80ac597ca6346a782e56f3dfc8f870d.pnghttps://img-blog.csdnimg.cn/direct/73bc11ff1b5b4bfd8faf7cb102eb37bd.pnghttps://img-blog.csdnimg.cn/direct/e7a5ed21a08d47f6a8dc61073de4ee17.png
十六、结语

本文只是大致讲了下vue3移动端项目搭建,详细的细节照旧须要根据自己项目的须要举行调解。路由只封装了navigateTo、navigateBack,可以根据微信小程序路由api的逻辑https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab.html 封装switchTab、reLaunch、redirectTo,如果有更好的方法可以忽略该路由封装,个人觉得小程序路由做的挺好。路径别名可配可不配,根据自己喜好就行
https://img-blog.csdnimg.cn/direct/c7dbb458890541e9aa885158c26768f4.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: vue3移动端项目构建,vue3+vant+vite+axios+pinia+sass