uni-app介绍(官网)

uni-app是一个使用Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOSAndroidH5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。

即使不跨端,uni-app同时也是更好的小程序开发框架。

开发工具(HBuilderX)

HBuilderX 官方下载网址:https://www.dcloud.io/hbuilderx.html

HBuilderX 提供了一些插件,可直接下载安装,具体如下图: 工具  >  插件安装

项目结构

首先我们通过 HBuilderx > 文件 > 项目,选择 uni-app项目,模板我选择的是默认模板,当然你也可以选择其他模板,接着确认创建,如果你选择的是默认模板,此时你的文件夹应该如下图:

接着我根据自己的项目需求,以及为了与vuepc项目结构保持一下,分别添加如下文件夹:

主要文件介绍:

  • api 文件夹中存放的是各个页面的请求路径,引入request.service.js暴露出来的api
  • colorui 使用了color-ui样式,个人认为样式非常好看,非常感谢!
  • common 存放全局通用的js方法
  • components 存放全局组件,包括uni-ui以及自己封装的组件
  • pages 主要页面, 其中pages文件夹中 index文件中可布局底部的tab页面,通过v-if判断显示不同的tab页
  • services 通用的服务文件(我不知道这种描述是否准确,原来用的Angular4Angular中服务概念对我有一定的影响)static 静态文件,我主要用来放图片
    • auth.service.js 通过使用uni.setStorageSync简单封装了一些保存用户的token方法
    • config.service.js 保存全局的变量 例如:apiUrl请求接口的IPstorage_key 是token 的键值,全局引用的变量都可定义在这个文件内,后期如果需要改动,只需要修改这个文件中对用的值
    • request.service.js 使用Promiseuni.request进行封装,将getpostdelete请求方式暴露出来,在api文件夹中引用这个文件即可使用getpostdelete方法
  • unpackage (在小程序模拟器运行的文件)
  • App 应用配置,用来配置App全局样式以及监听

如何自定义底部tab导航栏

本人项目中需要根据不同的角色显示不同的地图tab页,那么原来在pages.json设置的tab页,不够灵活,也不好扩展,因此自定义tab页,具体如下:

1)在pages文件夹中,新建一个index文件夹并创建一个index.vue页面,在这个页面可布局底部tab,根据点击不同的tab显示对应的tab页,如图:

注意:

2)如果每个tab点击是切换不同的view,这个就相当于首页应用了,当页面比较复杂时,切换过程存在卡顿。所以使用自定义的tabbar就尽量避免太多复杂的页面。

3)当然原生tabbar虽然体验好,但自定义性不足,这个需要开发者根据字节的需求来平衡选择。

如何使用colorui

ColorUI是一个css库!在你引入样式后根据class来调用组件

1)下载源码解压获得/Colorui-UniApp文件夹,复制目录下的/colorui文件夹到你的项目根目录

2)App.vue引入关键css、main.css、icon.css

<style>

  @import "colorui/main.css";

  @import "colorui/icon.css";

  @import "app.css"; /* 你的项目css */

  ....

</style>

此时你可以使用colorUI提供的css样式了,

因为colorUI的文档说明正在完善中,具体样式对应的类名可能不清楚,那么你可将color-ui下载下来,使用HBuilderX运行在浏览器中,打开调试工具,找到对应的节点即可获取对应的类名,(当然你也可能会有其他好的方法)。

使用colorui自定义导航栏

  • pages.json 配置取消系统导航栏
"globalStyle": {
"navigationStyle": "custom"
},
  • App.vue 获得系统信息
onLaunch: function() {
uni.getSystemInfo({
success: function(e) {
// #ifndef MP
Vue.prototype.StatusBar = e.statusBarHeight;
if (e.platform == 'android') {
Vue.prototype.CustomBar = e.statusBarHeight + 50;
} else {
Vue.prototype.CustomBar = e.statusBarHeight + 45;
};
// #endif
// #ifdef MP-WEIXIN (微信小程序)
Vue.prototype.StatusBar = e.statusBarHeight;
let custom = wx.getMenuButtonBoundingClientRect();
Vue.prototype.Custom = custom;
Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
// #endif
// #ifdef MP-ALIPAY
Vue.prototype.StatusBar = e.statusBarHeight;
Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
// #endif
}
})
},
  • main.js引入cu-custom组件
import cuCustom from './colorui/components/cu-custom.vue'
Vue.component('cu-custom',cuCustom)
  • 在需要的页面可以直接使用了,如下:
<cu-custom bgColor="bg-gradual-blue" :isBack="true">
<block slot="backText">返回</block>
<block slot="content">导航栏</block>
</cu-custom>

跨端兼容(如何你只是开发小程序,就不需要考虑)

根据平台特性,uni-app 提供了条件编译手段,在一个工程里优雅的完成了平台个性化实现。

<view class="content">
<! -- #ifdef APP-PLUS -->
<view>仅出现在 5+App 平台下的代码</view>
<! -- #endif --> <! -- #ifndef H5 -->
<view>除了 H5 平台,其它平台均存在的代码</view>
<! -- #endif --> <! -- #ifdef H5 || MP-WEIXIN -->
<view>仅在 H5 平台或微信小程序平台存在的代码</view>
<! -- #endif -->
</view>

发布微信小程序

  • 服务器域名必须是https合法域名

  • 进入开发页面 开发 > 开发设置,设置服务器域名, 如图

服务器域名

  • 发布小程序之前需要配置appid,应用名称、logo,可登录微信公众平台进入设置页,设置小程序的基本信息

  • 使用HBuilderx找到发行 > 小程序-微信,点击后稍等片刻会启动微信开发工具,点击微信开发工具上传,填写上传信息即可,此时上传到微信公共平台是体验版,需要在版本管理>提交审核,等待后台审核,审核完成后,小程序也就上线成功了,如图:

总结

本文主要介绍了使用uni-app框架开发微信小程序,自己对默认模板的补充,包括封装request接口,引用color-ui,动态设置底部tab页,还有通过color-ui提供的导航栏组件,自定义导航栏。本人才疏学浅,表达能力有限,书写过程如有错误欢迎指正,也请点赞评论鼓励(ps: 内心怕怕的)

关于uni-app更多信息可参考官方文档 https://uniapp.dcloud.io

最新文章

  1. tornado+sqlalchemy+celery,数据库连接消耗在哪里
  2. 使用EditText的addTextChangedListener(new TextWatcher())方法
  3. .NET跨平台之旅:在Linux上将ASP.NET 5运行日志写入文件
  4. sql server 2000数据库 最近经常出现某进程一直占用资源,阻塞?死锁?
  5. 写好Hive 程序的若干优化技巧和实际案例
  6. ES6,ES2105核心功能一览,js新特性详解
  7. 《UNIX编程艺术》读书笔记
  8. thymeleaf 内联语法
  9. 利用android studio gsonformat插件快速解析复杂json
  10. 神奇的 BlocksKit(1):源码分析(下)
  11. python ATM购物程序
  12. iOS数组、字典与json字符串的转换
  13. 解决nexus下载maven索引的问题
  14. VMware中的桥接模式、NAT(网络地址转换模式)、Host-only(主机模式):转自:http://blog.chinaunix.net/uid-11798538-id-3061551.html
  15. HttpWebRequest类库注意事项以及常见问题
  16. spring的7个模块
  17. Python3+Selenium2完整的自动化测试实现之旅(一):自动化测试环境搭建
  18. java_泛型2
  19. 100-days: twenty
  20. 一、.NET Core MVC 项目结构模板

热门文章

  1. 企业信息化建PLM系统、ERP系统、MES系统是单个逐步建设好,还是同时上比较好?
  2. 关于aws的ec2实例导出成ova后在vmware中的网络配置不生效的问题
  3. 驱动开发:内核枚举ShadowSSDT基址
  4. 漫谈Entity-Component-System
  5. Codeforces Round #791(Div 2)——D
  6. Pyside2 开发框架
  7. Flask框架:运用Ajax轮询动态绘图
  8. 配置jmeter环境变量
  9. prefetch和preload
  10. java安全之CC1浅学(2)