使用vue构建移动应用实战代码
发布时间 - 2026-01-11 02:37:05 点击率:次在移动应用中很多功能都是必不可少的,使用vue构建移动应用自然也就需要实现这些功能。之所以写这篇文章,是希望大家能更多的将注意力放在项目的核心业务上,而不是过多的关注通用功能。

基础设置
- 使用vue-cli搭建项目框架
- 在index.html文件中添加<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">,在移动端设置禁止缩放,以便显示合适大小的页面。
- 如果要将页面封装为app,那么需要将config/index.js中build的assetsPublicPath设置为'./',build获得的页面可以直接打开,而不需要使用服务器。
通用功能
一、页面跳转
一般应用都会拥有多个页面,在vue中通过vue-router来管理页面。移动应用页面跳转时,都有转场效果,在vue中我们也可以实现。
在路由文件中设置meta为数字,meta表示其路由的深度,然后在App.vue中设置:
<template>
<transition :name="transitionName">
<router-view></router-view>
</transition>
</template>
<script>
export default {
name: 'app',
data () {
return {
transitionName: 'fade'
}
},
watch: {
'$route' (to, from) {
let toDepth = to.meta
let fromDepth = from.meta
if (fromDepth > toDepth) {
this.transitionName = 'fade-left'
} else if (fromDepth < toDepth) {
this.transitionName = 'fade-right'
} else {
this.transitionName = 'fade'
}
}
}
}
</script>
<style>
</style>
监听$route,根据to、from meta值的大小设置不同的跳转动画。如果应用到多种跳转动画,可以根据详情,具体情况具体应用。
登录跳转
PS:这里的动画效果引用自animate.scss;
二、底部导航
直接引用Tabbar组件即可,如果需要添加跳转动画可以在<router-view></router-view>外设置:
<template>
<div class="content">
<!--<transition name="fade" mode="out-in">-->
<router-view></router-view>
<!--</transition>-->
<Tabbar
:routers="[
{path: '/index/home', icon: 'icon-home', name: '首页'},
{path: '/index/loading', icon: 'icon-course', name: '加载'},
{path: '/index/message', icon: 'icon-info', name: '信息'}
]"
>
</Tabbar>
</div>
</template>
<script>
export default {
name: 'Index',
components: {Tabbar: require('components/Tabbar')},
data () {
return {
}
}
}
</script>
<style lang="scss" scoped>
.content{
background-color: #eee;
}
</style>
三、数据加载
加载数据与加载页面是存在先后顺序的,比较通用方法是先加载页面,显示数据加载效果,在数据加载完成之后显示完整的页面。数据加载效果作为组件添加到应用中,比较繁琐,所以使用自定义指令的方式实现数据加载效果的显示。
数据加载效果
四、接口文件
import fetch from 'isomorphic-fetch'
import store from 'store'
import router from './router'
var env = process.env.NODE_ENV
var rootUrl
if (env === 'development') {
rootUrl = ''
}
if (env === 'production') {
rootUrl = ''
}
const post = function (url, params = {}) {
return fetch(rootUrl + url, {
method: 'post',
headers: {
'Content-type': 'application/json; charset=utf-8',
'Authorization': store.get('token')
},
body: JSON.stringify(params)
}).then(function (res) {
if (res.status === 401) {
// 没有权限
api.logout()
} else {
return res.json()
}
})
}
const urls = [
'classAtCurDate' // 普通接口列表
]
var api = {}
for (var url of urls) {
(function (url) {
api[url] = (params) => {
console.log(url)
return post('course/' + url, params)
}
})(url)
}
// 需要特殊处理的接口
api.logout = () => {
store.clearAll()
router.push('login')
}
api.login = (params) => {
store.set('id', 1)
store.set('token', 2)
return Promise.resolve({params})
}
export default api
可以在全局设置,也可以在需要时导入
// 在main.js中导入api接口 import api from '../src/api' Vue.$api = Vue.prototype.$api = api
五、登录权限设置
路由加载前,检查是否有登录权限(判断用户id是否存在),如果存在直接跳过登录页进入首页,如果不存在在跳转登录页。
router.beforeEach((to, from, next) => {
if (cache.get('id') && to.path === '/login') {
next('/index')
} else if (!cache.get('id') && to.path !== '/login') {
next('/login')
} else {
next()
}
})
六、常用第三方组件
许多常用组件都已经有了很好的实现,在项目开发中重复造轮子是一件很不明智的事情。vue移动应用有很多合适的库可以选择,如mint-ui、vux,这里不一一列举,想了解更多的可以自行谷歌,或直接到GitHub上搜索,这里已mint-ui为例,讲一下比较常用的一些组件。
提示组件
提示组件即显示信息、提示用户的组件,toast、alert、 prompt皆为此类。
加载数据
如上拉加载数据、下拉加载(刷新)数据、滚动加载数据;这些在mint-ui中有较好的实现
日期选择
比较通用的功能,但自己实现起来还是相对麻烦的,借助第三方组件就可以很快的实现了。
使用第三方组件虽然能够快速完成项目,但是不建议过度使用,一些常用的组件如按钮、表单还是应该自己实现,一是因为这些组件实现不是很复杂,二是因为往往对这些组件每个应用都有自己的设计要求,使用第三方然后修改样式,不但比自编写更复杂而且增加冗余文件。
使用第三方组件库,一般有两种导入方式:一是全部导入,这样会引入很多不必要的文件;二是只导入使用的组件和样式。建议使用第二种方式,避免导入多余组件,mint-ui可以使用Use babel-plugin-component简化单独导入组件的写法。
GitHub地址:https://github.com/x007xyz/vue-mobile
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue构建移动应用
# vue构建应用
# 用Webpack构建Vue项目的实践
# vue-cli构建项目使用 less的方法
# 用vue构建多页面应用的示例代码
# vue基于Element构建自定义树的示例代码
# 新手vue构建单页面应用实例代码
# 详解vue-cli构建项目反向代理配置
# 详解vue-cli 构建Vue项目遇到的坑
# 用Vue.extend构建消息提示组件的方法实例
# webpack构建vue项目的详细教程(配置篇)
# nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
# 使用vue构建一个上传图片表单
# 详解如何提高 webpack 构建 Vue 项目的速度
# 详解vue项目构建与实战
# 详解vue项目的构建
# 打包
# 发布全过程
# 加载
# 跳转
# 第三方
# 都有
# 一是
# 首页
# 自己的
# 都是
# 很好
# 是因为
# 放在
# 也就
# 多个
# 有很多
# 中有
# 而不
# 较好
# 不存在
# 想了
# 此类
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何获取免费开源的自助建站系统源码?
Laravel如何使用Livewire构建动态组件?(入门代码)
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
如何快速搭建高效WAP手机网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel如何实现API资源集合?(Resource Collection教程)
如何在建站之星网店版论坛获取技术支持?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何登录建站主机?访问步骤全解析
独立制作一个网站多少钱,建立网站需要花多少钱?
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
如何快速打造个性化非模板自助建站?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
如何在阿里云虚拟主机上快速搭建个人网站?
微信小程序 require机制详解及实例代码
Laravel API资源类怎么用_Laravel API Resource数据转换
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
如何为不同团队 ID 动态生成多个“认领值班”按钮
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何快速完成中国万网建站详细流程?
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何在建站宝盒中设置产品搜索功能?
音响网站制作视频教程,隆霸音响官方网站?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel如何升级到最新版本?(升级指南和步骤)
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Java遍历集合的三种方式
iOS中将个别页面强制横屏其他页面竖屏
EditPlus中的正则表达式 实战(2)
Laravel怎么判断请求类型_Laravel Request isMethod用法
如何基于PHP生成高效IDC网络公司建站源码?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
简单实现jsp分页
佛山网站制作系统,佛山企业变更地址网上办理步骤?
文字头像制作网站推荐软件,醒图能自动配文字吗?
javascript基于原型链的继承及call和apply函数用法分析

