使用uni-app开发微信小程序的实现


Posted in Javascript onDecember 13, 2019

前言

使用uni-app开发微信小程序的实现

9月份,开始开发微信小程序,也曾调研过wepy/mpvue,考虑到后期跨端的需求,最终选择使用了uni-app,本文主要介绍如何使用uni-app搭建小程序项目,以及自己对框架的补充,包括封装request接口,引用color-ui,动态设置底部tab页等,详情见下文

uni-app 介绍(官网)

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

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

好处如图:

使用uni-app开发微信小程序的实现

我使用uni-app框架主要用来开发微信小程序,我使用过程中感觉的好处是:

  • uni-app框架使用的开发工具 HBuilderX,HBuilderX 内置相关环境,开箱即用,无需配置nodejs, 需要什么插件可直接下载,测试、打包、发布特别方便。
  • uni-app采用Vue.js语法,基本支持vue大部分语法(vue的动态组件component不支持)。
  • PC端使用vue封装的一些js方法,以及建构思想,可直接移植到uni-app中,比如:本人pc项目中api接口js文件,可直接复制到小程序框架api文件夹中(PS:api文件夹维护后端请求路径)
  • uni-app 周边生态丰富,插件市场可用的组件特别多,也可使用vue语法自己封装一些组件。

开发工具(HBuilderX)

  • HBuilderX: 官网IDE下载地址;
  • HBuilderX是通用的前端开发工具,但为uni-app做了特别强化。
  • HBuilderX提供了一些插件,可直接下载安装,具体如下图: 工具 > 插件安装

使用uni-app开发微信小程序的实现

项目结构

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

使用uni-app开发微信小程序的实现

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

具体代码可参考GitHub:weixin-start

使用uni-app开发微信小程序的实现

+-- api -- (页面接口路径)
|  +-- login.js
|  +-- tools.js
+-- colorui -- (color-ui 样式)
+-- common -- (通用的js方法)
+-- components -- (通用的组件)
+-- pages -- (主要页面)
+-- services -- (通用的服务)
|  +-- auth.service.js -- (主要封装了一些保存用户的token方法)
|  +-- config.service.js -- (存放全局通用的变量)
|  +-- request.service.js -- (封装了uni.request的方法)
+-- static -- (静态文件)
+-- unpackage -- (在小程序模拟器运行的文件)
+-- App.vue -- (应用配置,用来配置App全局样式以及监听 )
+-- main.js -- ( Vue初始化入口文件)
+-- manifest.json -- (配置应用名称、appid、logo、版本等打包信息)
+-- pages.json -- (配置页面路由、导航条、选项卡等页面类信息)
+-- uni.scss -- (这里是uni-app内置的常用样式变量)

主要文件介绍:

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

如何自定义底部tab导航栏

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

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

使用uni-app开发微信小程序的实现

注意:

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

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

如何使用colorui

引入

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

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

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 获得系统信息

"globalStyle": {
  "navigationStyle": "custom"
},

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合法域名

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

使用uni-app开发微信小程序的实现

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

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

使用uni-app开发微信小程序的实现

总结

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype 学习 Prototype对象
Jul 12 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
Jun 12 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
Javascript vue.js表格分页,ajax异步加载数据
Oct 24 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
JS实现微信摇一摇原理解析
Jul 22 Javascript
在vue中根据光标的显示与消失实现下拉列表
Sep 29 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
Vue的props父传子的示例代码
May 20 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 #Javascript
微信小程序关键字变色实现代码实例
Dec 13 #Javascript
Servlet返回的数据js解析2种方法
Dec 12 #Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 #Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 #Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 12 #Javascript
JavaScript实现文件下载并重命名代码实例
Dec 12 #Javascript
You might like
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php截取视频指定帧为图片
2016/05/16 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
原生JS实现留言板
2020/03/26 Javascript
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python中psutil的介绍与用法
2019/05/02 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
使用索引有什么好处
2016/07/27 面试题
《维生素c的故事》教学反思
2014/02/18 职场文书
丧事主持词大全
2014/04/02 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
律师函格式范本
2015/05/27 职场文书
大学生受助感言
2015/08/01 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
redis cluster支持pipeline的实现思路
2021/06/23 Redis