vue项目PC、移动端适配方案

本方案的核心主要是采用vue-router来实现的。

首先我们需要有pc端和移动端的两种版本的vue文件,然后配置好自己的路由,下面是我的路由配置。

import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter);

//默认路由
export const routes = [
  {
    path: "/",
    redirect: "/home",
  },
];
//pc端的路由
export const pcRoutes = [
  {
    path: "/",
    redirect: "/home",
  },
  {
    path: "/home",
    name: "Home",
    component: () =>
      import(/* webpackChunkName: "about" */ "../views/home/pc.vue"),
  },
];
//移动端设备路由
export const mobileRoutes = [
  {
    path: "/",
    redirect: "/home",
  },
  {
    path: "/home",
    name: "Home",
    component: () =>
      import(/* webpackChunkName: "about" */ "../views/home/mobile.vue"),
  },
];

const createRouter = () =>
  new VueRouter({
    scrollBehavior: () => ({ y: 0 }),
    mode: "history",
    routes: routes,
  });

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter();
  router.matcher = newRouter.matcher; // reset router
}

export default router;

配置好路由之后我们就可以先写一个判断是否为移动端的方法,我默认放置的位置为 src/utils/index.js中,具体实现代码为:

// 判断设备是否为移动端的方法
export const isMobile = () => {
  return /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(
    navigator.userAgent
  );
};

写好工具之后,再到src目录下创建一个init.js文件用于判断机型从而添加相应的路由,具体实现代码如下。

import router from "./router";
import { isMobile } from "./utils";
import { pcRoutes, mobileRoutes } from "./router";

// 判断当前设备的型号从而改变当前路由
router.addRoute(isMobile() ? mobileRoutes[1] : pcRoutes[1]);

这里统一回答下部分小伙伴的疑问: 有多个页面都需要做适配该怎么实现?

import router from "./router";
import { isMobile } from "./utils";
import { pcRoutes, mobileRoutes } from "./router";

// 判断当前设备的型号从而改变当前路由,遍历所有路由并加入router
// 注意:索引值为0的路由为默认路由(重定向路由)可以不用重复加入
isMobile() 
    ? mobileRoutes.forEach((item,index) => {
        if (index === 0) return;
        router.addRoute(item);
    })
    : pcRoutes.forEach((item,index) =>{
        if (index === 0) return;
        router.addRoute(item);
    })

最后在vue项目的入口文件main.js文件中引入init.js。

import "./init.js";

 以上,有啥不对的还请指教,祝少掉头发。

  • 7
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
要将Vue PC项目适配移动端,可以使用以下步骤: 1. 首先,在开发环境中安装postcss-px-to-viewport插件。可以通过以下命令进行安装:`npm install postcss-px-to-viewport --save-dev`。这个插件可以帮助将像素单位转换为视口单位,实现移动端适配。 2. 在项目根目录中添加postcss.config.js配置文件。可以在配置文件中设置插件的相关参数,如需要转换的单位、设计稿的视口宽度、单位转换后保留的精度等。配置如下: ```javascript module.exports = { plugins: { 'postcss-px-to-viewport': { unitToConvert: 'px', viewportWidth: 1920, unitPrecision: 5, propList: ['*'], viewportUnit: 'vw', fontViewportUnit: 'vw', selectorBlackList: [], minPixelValue: 1, mediaQuery: false, replace: true, exclude: undefined, include: undefined, landscape: false, landscapeUnit: 'vw', landscapeWidth: 1920 } } }; ``` 这个配置会将指定的CSS属性值转换为vw单位,从而实现移动端适配。 3. 在Vue项目的main.js文件中引入lib-flexible库。可以通过以下代码进行引入:`import 'amfe-flexible';`。这个库可以自动设置页面的根字体大小,以适应不同设备的屏幕尺寸。 4. 在vue.config.js文件中配置postcss-pxtorem插件,用于将像素单位转换为rem单位。可以按照以下配置进行设置: ```javascript module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('postcss-pxtorem')({ rootValue: 37.5, propList: ['*'] }) ] } } }, }; ``` 这个配置会将像素单位转换为rem单位,其中rootValue设置为37.5可以方便地将设计稿的像素值转换为rem值。 通过以上步骤,你的Vue PC项目就可以适配移动端了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue移动端 / PC适配解决方案](https://blog.csdn.net/weixin_48862362/article/details/121518364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [手把手教你实现VuePC端,移动端适配](https://blog.csdn.net/Orange71234/article/details/131329898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值