当前位置:   article > 正文

Vue 3.x + Vant 3.x + Vue-Router 4.x 快速上手_vue3 + vant + veu-router

vue3 + vant + veu-router

前提

安装node.js。                                                                                                                           

Node 版本要求:
Vue CLI 4.x 需要 Node.js v8.9 或更高版本 (推荐 v10 以上)。你可以使用 n,nvm 或 nvm-windows 在同一台电脑中管理多个 Node 版本。

创建项目

创建项目有三种形式

  • Vue-Cli
  • Vite
  • Webpack

虽然Vite很好用,快速的创建项目。但是我选择了Vue-Cli,因为本人比较懒,Vue-Cli基本的配置都弄好,不用自己在动手配置。

已经安装vue-cli的老板们执行命令

npm update -g @vue/cli

未安装vue-cli 执行命令:

npm install -g @vue/cli

安装完最新版vuecli后,执行命令

vue create (项目名称)

接下来选项

Defdult (Vue 3 Preview)

后面选项看你个人喜好,以下是我的选项,开发用到的基本配置

安装vant3

npm i vant@next -S

引入组件

babel-plugin-import 是一款 babel 插件,它会在编译过程中将 import 语句自动转换为按需引入的方式。

npm i babel-plugin-import -D

在.babelrc 或 babel.config.js 中添加配置,没有文件的可自己创建一个。配置如下:

  1. {
  2. "plugins": [
  3. [
  4. "import",
  5. {
  6. "libraryName": "vant",
  7. "libraryDirectory": "es",
  8. "style": true
  9. }
  10. ]
  11. ]
  12. }

接着你可以在代码中直接引入 Vant 组件,插件会自动将代码转化为按需引入的形式

import { Button } from 'vant';

也可以导入所有组件,Vant 支持一次性导入所有组件,引入所有组件会增加代码包体积,因此不推荐这种做法。

  1. import { createApp } from 'vue';
  2. import Vant from 'vant';
  3. import 'vant/lib/index.css';
  4. const app = createApp();
  5. app.use(Vant);

路由配置

没有安装的自行安装,安装好后在src文件夹下创建router文件夹,然后创建index.js

  1. // src/router/index.js
  2. import { createRouter, createWebHistory } from 'vue-router'
  3. import Home from '../views/index.vue'
  4. const routes = [
  5. {
  6. path: '/',
  7. component: Home
  8. },
  9. {
  10. path:'/Product',
  11. component: () => import('../views/product/product.vue')
  12. }
  13. ]
  14. // createRouter 创建路由实例
  15. const router = createRouter({
  16. history: createWebHistory(),
  17. routes
  18. })
  19. // 抛出路由实例, 在 main.js 中引用
  20. export default router

在main.js引入

import router from './router'

在 App.vue 文件下添加 router-view 组件,渲染路由匹配到的页面组件:

  1. <template>
  2. <!-- 和 vue-router3 一样,展示路由的组件的地方 -->
  3. <router-view />
  4. </template>
  5. <script>
  6. export default {
  7. name: 'App'
  8. }
  9. </script>

怎么使用呢,首先我创建了两个组件

在index.vue添加个点击事件跳转到其他页面,如下:

  1. <template>
  2. <div>
  3. <div @click="product()" class="title">首页</div>
  4. <list></list>
  5. </div>
  6. </template>
  7. <script>
  8. import list from "../components/list.vue";
  9. import { useRouter } from "vue-router";
  10. export default {
  11. name: "index",
  12. components: { list },
  13. setup() {
  14. const router = useRouter();
  15. function product(){
  16. router.push({
  17. path:"/Product",
  18. params: { userId: '123' }
  19. })
  20. }
  21. return { product }
  22. },
  23. methods: {
  24. },
  25. };
  26. </script>
  27. <style>
  28. .title{
  29. font-size: 18px;
  30. }
  31. </style>

 setup函数是一个新的组件选项。作为在组件内使用Composition API的入口点。创建组件实例,然后初始化props,紧接着就调用setup函数,从生命周期钩子的视角来看,它会在beforeCreate钩子之前被调用

移动端 rem 适配

如果是做 PC 端的网页,无需做 rem 适配,但是做 H5 开发,rem 是需要做一下的,Vant 官方也为我们提供了方案,如下图所示:

 Vant 中的样式默认使用px作为单位,如果需要使用rem单位,需要安装postcss-pxtorem、lib-flexible两个插件,postcss-pxtorem 是一款 postcss 插件,用于将单位转化为 rem

  1. npm install postcss-pxtorem --save-dev
  2. npm i -S amfe-flexible

postcss 配置:创建vue.config.js配置:

  1. const AutoPrefixer = require('autoprefixer')
  2. const pxtorem = require('postcss-plugin-px2rem')
  3. module.exports = {
  4. devServer: {
  5. disableHostCheck: true,
  6. // 设置代理
  7. proxy: {
  8. "/api": {
  9. target: "http://192.168.xxx.xxx", // 域名
  10. ws: true, // 是否启用websockets
  11. changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
  12. pathRewrite: {
  13. "^/api": "/"
  14. }
  15. }
  16. }
  17. },
  18. lintOnSave: true,
  19. css: {//用于将单位转化为 rem
  20. loaderOptions: {
  21. css: {},
  22. postcss: {
  23. plugins: [
  24. AutoPrefixer({
  25. browsers: ['last 20 versions', 'android >= 4.0']
  26. }),
  27. pxtorem({
  28. rootValue: 37.5,
  29. propList: ['*'],
  30. selectorBlackList: ['.norem']
  31. })
  32. ]
  33. }
  34. }
  35. }
  36. }

这段配置就算是css的预加载配置。rootValue 中设置37.5的值结合UI设计稿2x的设计图开发,引用的时候css直接写宽375px就相当于100%,它会自动根据屏幕进行计算成rem。如果rootValue 设置为75,则引用时写宽750px就相当于100%(这是因为Vant组件默认10rem为100%)。selectorBlackList中写不想被转成rem的类名。

在main.js中引入lib-flexible/flexible.js

import 'lib-flexible/flexible.js'

这样整个rem适配就完成了。

以上是搭建 Vue3.0 + Vant3.0 + Vue-Router4.0 移动端项目的内容

最近项目 微信小程序实现水果转盘游戏-小程序文档类资源-CSDN下载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/379241
推荐阅读