一个vue项目同时兼容pc和移动端
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
介绍:
公司要求vue开发的项目,既有移动端又有pc端,但是移动端和pc端展示的内容不一样,同一个组件样式也不一样,移动端展示内容比pc端少,那这个时候在一个项目种怎么做的?
解决方式:
路由写两份,一份移动端的,一份pc端的,这两份路由地址相同,对应的组件不同,在路由的入口文件里去判断渲染pc的路由还是移动端的路由
import Vue from 'vue';
import Router from 'vue-router';
import { routerM } from './routerM';
import { routerPC } from './routerPC';
Vue.use(Router);
// 是否为手机端
const ISMOBILE = function () {
let flag = navigator.userAgent.match(
/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
);
return flag;
};
// 创建路由实例
const router = new Router({
mode: 'history',
base: process.env.BASE_URL,
fallback: false,
// 这里判断后选择使用移动端的路由还是pc端的路由
routes: ISMOBILE() ? routerM : routerPC,
});
export default router;
router下routerM.js和routrPC.js代码:
// routerPC.js
import Layout from '@/layout'
export const routerPC = [
{
path: '/login',
component: () => import('@/views/pc/login/index'),
hidden: true
},
]
// routerM.js
export const routerM = [
{
path: '/login',
component: () => import('@/views/mobile/login/index.vue'),
hidden: true
},
]
可以看出是写了两份组件,导入组件时文件路径只有pc和mobile两个单词的区别。
拓展
同样的,当样式需要写两份的时候,也可以在main.js中按需引入
// 是否为手机端
const flag = navigator.userAgent.match(
/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
);
// PC端和移动端的公共样式
import '@public/css/common.less';
// 移动端引入公共样式
if (flag) {
require('@/assets/css/mobileCommon.less');
}
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)