uni-app 创建的第一个应用
本人微信公众号:前端修炼之路,欢迎关注
背景介绍
经过上一篇文章uni-app官方教程学习手记的学习之后,我就着手做这个项目了。
目前已经初步搭出了整体的框架,秉着取之于社会,回馈于社会的原则,我将这个项目开源到GitHub uni-shop,发展壮大uni-app社区。项目肯定有不足和考虑不周之处,欢迎大家指正并提出Issues。
因为这是个真实的项目,为了一名合格的程序员的职业操守,项目真实数据部分并不会开源。为了提高整体的流畅性和帮助自己开发,数据部分采用Easy Mock模拟的假数据。有需要的朋友可以自行修改接口。
这个项目就类似于一个微信,或者说模仿一个微信应用。包括聊天、群聊、朋友圈等等。因为本人水平有限,前期计划只完成一对一两人聊天功能,不包括其他功能。目前聊天的功能还没有实现,因为我并没有做过这方面的应用。
另外就是这个项目设计的本身,本人也不知道完全仿照一个微信做的目的是什么?或者说申请应用上架App Store时,是否合法?再或者是否对腾讯微信造成侵权?希望有知道的朋友,可以给我留言。
抛去这些困惑以外,单纯对这个项目而言,通过这个过程,将自己原本不会的东西,通过一段时间的学习和实践,最终实现了。我想,这才是一名程序员对程序的热情吧~ 把不可能变成可能,把不会变成学会。
目录结构
┌─components uni-app组件目录
│ └─comp-a.vue 可复用的a组件
├─hybrid 存放本地网页的目录
├─platforms 存放各平台专用页面的目
├─pages 业务页面文件存放的目录
│ ├─index
│ │ └─index.vue index页面
│ └─list
│ └─list.vue list页面
├─static 存放应用引用静态资源(如图片、视频等)的地方,注意:静态资源只能存放于此
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json 配置应用名称、appid、logo、版本等打包信息
└─pages.json 配置页面路由、导航条、选项卡等页面类信息
以上是一个uni-app工程包含的目录及文件,可以通过目录结构查看详细信息。
知识点
简单罗列出项目中使用到的组件和相关技术,详细信息查询官方手册即可。
- pages.json:用来对 uni-app 进行全局配置,决定页面文件的路径、窗口表现、设置多 tab 等。项目中包括修改标题文本、启动页修改透明标题栏、开发环境启动指定页面,设置底部tab选项卡和图标文字等,都是通过修改这个文件实现的。
- vuex:专为 Vue.js 应用程序开发的状态管理模式。因为项目模拟了用户登录的过程,所以采用vuex管理用户登录状态,并将用户信息,包括头像、昵称、账号等信息存储起来。
- uni.setStorageSync:将 data 存储在本地缓存中指定的 key 中。因为vuex不是持久化的状态,一点用户关掉程序,然后再次启动程序,就会丢失掉用户信息。这里我想到的解决办法就是使用storage,将用户信息保存在本地缓存中。
- uni.reLaunch(OBJECT):关闭所有页面,打开到应用内的某个页面。这个接口的主要区别就是关掉当前所有页面,然后新打开一个页面。与
uni.navigateTo(OBJECT)不同。navigateTo接口是在当前页面打开新的页面。 - 使用代码块直接创建组件模板:在Hbulider X中,内置了很多的代码块,灵活使用代码块可以提高不少开发效率。
- 使用 Chrome 调试:最新版本的HbuliderX已经可以开发H5程序了。并且可以在Chrome中调试程序,感觉比在微信开发者工具中调试更舒服。
- onPullDownRefresh:监听页面用户下拉刷新事件。因为我没有想明白该怎样实现微信聊天功能的,消息实时同步的过程,所以暂时让用户手动刷新获取最新消息。体验并不好~ :-(
- index-list:在hello uniapp中,有这个例子,参考使用即可做出类似微信通讯录的页面。
- qrcode二维码:参考这个页面内容,可以生成二维码。
- scan扫描二维码:参考这个例子可以实现扫描二维码。
知识点大概就这么多,剩下的都是具体的细节,看代码或者官方手册即可。
修复的bug问题
- 注册页面文字两端对齐bug。本来以为跟浏览器中一样,使用转义字符就能解决,项目中使用了
 ,但是发现在某些安卓机中,会失效。所以改成了css实现两端对齐。使用css3 justify-content实现。 - 启动页跳过按钮失效。启动页计划是不显示导航栏的,为了跳过启动页,添加了一个跳过按钮。但是我没有考虑到导航栏的高度。因为我本来以为这个导航栏已经被隐藏了,其实不然,这个导航栏一直存在,只不过变成了透明而已。如果这个跳过按钮位置是在导航栏上,会导致按钮失效。通过查找论坛文档,找到了这个导航栏高度【示例】原生标题栏titleNView使用说明,是固定高度44px。
原文地址:https://segmentfault.com/a/1190000017168549
uni-app 创建的第一个应用的更多相关文章
- Android中为APP创建快捷方式的原理(自己的理解)
我们首先来看Android中为APP创建快捷方式的原理: 从图上可以看出,Android大致分7步完成快捷方式的创建: 第一步:Android系统的launcher程序会调用它的pickShortcu ...
- 我的长大app开发教程第一弹:Fragment布局
在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...
- Android开发之 Windows环境下通过Eclipse创建的第一个安卓应用程序(图文详细步骤)
第一篇 windows环境下搭建创建的第一个安卓应用程序 为了方便,我这里只采用了一体包进行演示. 一.下载安卓环境的一体包. 官网下载:安卓官网(一般被墙了) 网盘下载: http://yunpa ...
- Django学习笔记(二)App创建之Model
通过实例学习, 构建一个投票(Polls)Application, 目标结果包含两个site, 一个site用来显示投票问题以及投票结果(即将展示出来的网站), 另一个site用来管理Poll实例的增 ...
- uni app中使用自定义图标库
项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...
- MUI框架开发HTML5手机APP(一)--搭建第一个手机APP
前 言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用HTML5开发手机APP,而随着手机硬件设备配置的不断提升,各种开发框架的不断优化,也使着H5开发的 ...
- MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
出处:http://www.cnblogs.com/jerehedu/p/7832808.html 前 言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用H ...
- uni app 零基础小白到项目实战-1
uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...
- 为Go Web App 创建一个主页面
原文地址 大多数web app都有一个相同的布局.这个布局可能包含一个header或者footer,甚至可能包含一个导航菜单.Go的标准库提供一个简单的方式来创建这些基本元素,通过被不同的页面重 ...
随机推荐
- npm install Unexpected token in JSON at position XXX
问题描述执行npm install命令时出错,查看日志发现: Unexpected token < in JSON at position 183718 解决方法删除根目录下package-lo ...
- babel6的babel-plugin-add-module-exports插件
干什么的 在 babel 5 时代, export default {}; 除了会被转译成 exports.default = {};,还会加一句 module.exports = exports.d ...
- javaScript 时间转换,将后台返回的时间为一串数字转成正常格式
js完整代码: function transferTime(cTime){ var jsonDate = new Date(parseInt(cTime)); Date.prototype.forma ...
- Unix domain socket
转载:http://www.cnblogs.com/chekliang/p/3222950.html socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是 ...
- sublime text 3和sublime text 2的 package control 插件 代码
SECURITY NOTICE: The Python code used by this method does not use SSL because Sublime Text on Linux ...
- AngularJS:实现动态添加输入控件功能
功能要求如下:1. 点击加号可以增加输入框.2. 点击减号可以减少输入框.3. 当输入框只有一个的时候,不能再减少输入框.效果图如下:只有一个输入框有多个输入框 要实现这个功能,可以 ...
- oralce中相关的概念整理
[数据库名] 概念:就是一个数据库的标识,作用等同于我们的身份证的作用,假设一台机器上安装了多个数据库,那么每一个数据库都会有一个数据库名称相应,这些数据库名称在数据库被创建的时候,数据库名称也会被 ...
- HttpClient获取Cookie的两种方式
转载:http://blog.csdn.net/zhangbinu/article/details/72777620 一.旧版本的HttpClient获取Cookies p.s. 该方式官方已不推荐使 ...
- CMake - boost - 可运行程序 - 静态库
CMake - boost 最后更新日期:2014-04-25by kagula 阅读前提:<CMake入门(二)>.Linux的基本操作 环境: Windows 8.1 64bit英文版 ...
- ASP.Net MVC开发基础学习笔记(8):新建数据页面
前言 前面解说了怎样创建一个查询页面并给查询页面加入排序.搜索及分页功能.今天我们来讲讲怎样向这个列表加入数据. 解说的顺序将依照加入数据的步骤的时间顺序来进行,方便大家理清逻辑关系. 本节将涉 ...