之前我胖汾公司年会、问我能不能帮忙搞个小程序方便他们进行游戏后的惩罚/抽奖使用、出了个简单的设计图、大概三天左右做了个简单的小程序、目前提交审核了。对于写过一小段时间vue来说小程序很容易上手、写法和结构差不多。

-----------------

这里整理的内容大致划分四个部分

①常规选型

②静态页面

③接入Bmob数据库

④发布小程序

⑤个人开发过程的笔记。

------------------

小程序-萌小福团建(密钥:20190101)

静态完整代码:https://github.com/GugaLiz/GamePunishment/tree/master

接入Bmob数据库后的完整代码:https://github.com/GugaLiz/GamePunishment/tree/br/2.x

===============================常规选型===============================

1.小程序开发官方文档

①简易教程(第一次开发小程序请务必看完简易教程这一页好吗?答应我!主要是看看怎么申请小程序和安装上开发工具,有公众号的注意,登录页面跟公众号是一样的,根据你的登录账户区分登录公众号还是小程序的!!!):https://developers.weixin.qq.com/miniprogram/dev/

②组件:https://developers.weixin.qq.com/miniprogram/dev/component/

③API:https://developers.weixin.qq.com/miniprogram/dev/api/

2.WEUI(UI组件这里选的WEUI)

①样式浏览:https://weui.io/

②对应样式的源码:https://github.com/Tencent/weui-wxss

3.Iconfont(没有正式美工,在这里偷几个图标用下了):https://www.iconfont.cn

4.Bmob数据库

①如何在小程序中使用文档:http://doc.bmob.cn/data/wechat_app_new/index.html

②Bmob后端云(登录进去就可以建项目的数据库了):https://www.bmob.cn/

③Bmob使用实例:https://www.jianshu.com/p/4894bd07fa31

===============================着手开发静态页面===============================

1.使用WEUI准备工作(参考资料,非常详细:https://blog.csdn.net/chq1988/article/details/73549027)

①到官网https://github.com/Tencent/weui-wxss把weui项目clone到本地。

②解压缩-进入weui-wxss-master\dist\style文件夹-找到weui-wxss-master\dist\style\weui.wxss文件

③把weui.wxss文件复制到你的小程序项目根目录下面即可,开发工具上就可以看到

④在项目中引用:在app.wxss中加入weui.wxss的引用  @import ‘weui.wxss’;

⑤在项目中使用即可(可以打开https://weui.io/找到自己要的样式,对应https://github.com/Tencent/weui-wxss这里可以找到参考代码)

比如:我要使用button在https://weui.io/#button看我要哪种,然后我去https://github.com/Tencent/weui-wxss/tree/master/src/example/button这里就查看到代码咯。ctrl +C  -- ctril+V晓得了吧。

2.使用iconfont准备工作(参考资料,推荐:https://blog.csdn.net/YZi_Angel/article/details/80582166)

①进入官网https://www.iconfont.cn

②iconfont使用手册

搜图标

-添加入库

-点击右上角的购物车-添加至项目

-点击下载到本地

③将下载的download解压缩-找到 iconfont.css 文件,将里面的内容全部复制到小程序的app.wxss里面

!注意:如果你又在iconfont里面添加了新的图标、是要更改这个文件的!!

首先是在你的项目里面查看代码,会提示你新增了图标要刷新看代码了

把这段代码复制到app.wxss中,位置就是@font-face{..}这段,同时下面要添加你的图标定义。

④使用iconfont

<text class='iconfont icon-hongbao'>抽奖</text>
效果如图:

3.目录结构。(images存放静态图片等,pages就是你的功能页面【xx.js文件写事件数据逻辑、xx.wxml写页面、xx.wxss写样式】)

4.写代码逻辑

我的静态的代码在这里,可以参考借鉴(顺手求个start感谢):https://github.com/GugaLiz/GamePunishment/tree/master

===============================接入Bmob数据库实现动态数据===============================

1.注册登录Bmob后端云-->创建数据库(添加应用)-->添加表(都是傻瓜式添加操作,务必按下面参考资料走,非常详细简单)

参考资料走一波:http://docs.bmob.cn/data/wechatApp/a_faststart/doc/index.html#注册Bmob帐号

2.查看官方操作文档(http://doc.bmob.cn/data/wechat_app_new/index.html#_15)把要增删查改到数据库的数据打通

 我的使用案例:

①引入Bmob.js到小程序项目

②在要用Bmob的页面声明及使用

比如在我的redPackagesDetail.js

声明:

var Bmob = require("../../utils/dist/Bmob-1.6.7.min.js");
var query = Bmob.Query("result");
查找数据:
query.equalTo("userName", "==", options.userName);
query.find().then(res => {
me.setData({
details: res
})
});
附上该js页完整代码
// pages/redPackagesDetail/redPackagesDetail.js
var Bmob = require("../../utils/dist/Bmob-1.6.7.min.js");
var query = Bmob.Query("result");
Page({ /**
* 页面的初始数据
*/
data: {
details:[] }, /**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var me = this;
if(options.userName){
query.equalTo("userName", "==", options.userName);
query.find().then(res => {
//res.map((item) => (item.updatedAt = (item.updatedAt.split(' ')[1])));
me.setData({
details: res
})
});
}
}, /**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () { }, /**
* 生命周期函数--监听页面显示
*/
onShow: function () { }, /**
* 生命周期函数--监听页面隐藏
*/
onHide: function () { }, /**
* 生命周期函数--监听页面卸载
*/
onUnload: function () { }, /**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () { }, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () { }, /**
* 用户点击右上角分享
*/
onShareAppMessage: function () { }
})

redPackagesDetail.js

接入Bmob以后的小程序完全代码在这里(求个顺手start):https://github.com/GugaLiz/GamePunishment/tree/br/2.x

===============================发布小程序===============================

1.提交代码

小程序开发工具-右上角“上传”

2.提交审核

①设置你的小程序信息

小程序页面-设置-基本设置

②提交审核(要填你的功能页面信息,尽量把大页面的填好填满,不然会打回重新审核)

小程序页面-管理-版本管理-审核版本

③如果有打回,按照他反馈信息进行修改,再提交审核即可。

===============================过程中遇到琐碎笔记===============================

1.tabBar添加(我写的这个后来修改了设计就没有使用tarBar)

在app.json文件中添加代码

"tabBar": {
"color": "#dddddd",
"selectedColor": "#13227a",
"borderStyle": "white",
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "images/index.png",
"selectedIconPath": "images/indexSel.png",
"text": "首页"
},
{
"pagePath": "pages/setting/setting",
"iconPath": "images/setting.png",
"selectedIconPath": "images/settingSel.png",
"text": "设置"
}
]
}
 {
"pages": [
"pages/index/index",
"pages/logs/logs",
"pages/setting",
"pages/setting/setting"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#dddddd",
"selectedColor": "#13227a",
"borderStyle": "white",
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "images/index.png",
"selectedIconPath": "images/indexSel.png",
"text": "首页"
},
{
"pagePath": "pages/setting/setting",
"iconPath": "images/setting.png",
"selectedIconPath": "images/settingSel.png",
"text": "设置"
}
]
}
}

app.json

2.页面跳转的方式:

方式一:wx.navigationTo({url:''});自带后退功能的
页面 index.wxml

<button class="weui-btn" type="default" plain="true" bindtap="packageEnter">抽奖</button>

页面 index.js

packageEnter:function(){
wx.navigateTo({
url: '../redPackage/redPackage'
})
},

方式二:在.wxml文件中直接写跟html的<a></a>标签类似

<navigator url='../redPackagesSetting/redPackagesSetting'>跳转</navigator>
<view class="setting">
<navigator url='../redPackagesSetting/redPackagesSetting'>
<text class='iconfont icon-shezhi' style="color:#FFB1B0;font-size:25px;" >
</text>
</navigator>
</view>

方式三:带参数跳转页面 <navigator url="../redPackagesDetail/redPackagesDetail?userName={{item.userName}}">GugaLiz</navigator >

参考资料:https://www.cnblogs.com/azhqiang/p/9634334.html

wxml页面

<view wx:for="{{counts}}" wx:key="index">
<navigator url="../redPackagesDetail/redPackagesDetail?userName={{item.userName}}">
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd">
<view style="display: inline-block; vertical-align: middle;width:50%;">{{item.userName}}</view>
<view class="weui-badge" style="margin-left: 5px;">共{{item._sumMoney}}元</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access" style="font-size: 0" >
<view style="display: inline-block;vertical-align:middle; font-size: 17px;" >详细</view>
<view class="weui-badge weui-badge_dot" style="margin-left: 5px;margin-right: 5px;" ></view>
</view>
</view>
</view>
</navigator>
</view>

redPackageCounts.wxml

js页面

Page({

  /**
* 页面的初始数据
*/
data: {
counts:[{userName:"GugaLiz",_sumMoney:2},{userName:"Echo",_sumMoney:12}]
}, /**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options.userName); //输出url带过来的参数
}, })

redPackageCounts.js

其它(参考官方文档的API):https://developers.weixin.qq.com/miniprogram/dev/api/wx.navigateBack.html

3.使用弹框:

参考资料

(三种弹框写法) http://www.php.cn/xiaochengxu-388964.html

(获取input的值) https://www.cnblogs.com/dashucoding/p/10008119.html

(清空input) https://blog.csdn.net/huangmeimao/article/details/74936966

小程序开发初体验,从静态demo到接入Bmob数据库完全实现的更多相关文章

  1. 三言两语之微信小程序开发初体验(1)

    一.前情   直接切入主题,微信发布了小程序,前端开发者表示,如果不会微信小程序的开发感觉就跟不上时代了,先解答几个容易出现歧义的问题 小程序就叫小程序,不叫应用号,因为apple不准,哈哈 小程序是 ...

  2. 微信小程序开发初体验

    微信小程序上线几天了,趁着周末补了一下JS,然后今天参照文档和教程写了个小demo 文档地址       教程地址 看文档就看了一点时间,因为以前没接触过JS框架,但是接触过PHP框架= = ,所以理 ...

  3. 微信小程序开发初体验--教你开发小程序

    微信小程序 微信小程序面世以来受到的关注颇多,直到最近我才动手尝试进行了小程序的开发,总体上感觉还是不错的,有一点不适应的就是要摆脱Web APP开发对DOM的操作.在这里我就把我是如何利用API开发 ...

  4. 微信小程序开发系列(一)小程序开发初体验

    开发小程序所需的基本技能   关于小程序的介绍和使用场景这里不作介绍,这个系列的文章会一步一步地带领大家快速地学习和掌握小程序的开发. 关于还没有接触过小程序的开发者来说,最关心的问题无非就是,开发小 ...

  5. [转]微信小程序开发系列(一)小程序开发初体验

    本文转自:http://www.cnblogs.com/rennix/p/6287432.html 开发小程序所需的基本技能   关于小程序的介绍和使用场景这里不作介绍,这个系列的文章会一步一步地带领 ...

  6. Taro开发微信小程序的初体验

    了解Taro 听说Taro是从几个星期前开始的,在一次饭桌上,一个小伙伴说:"Hey, 你听说了Taro么,听说只需要写一套程序就可以生成H5,小程序以及RN的代码模板,并且类似于React ...

  7. 【Win10】UAP/UWP (通用程序) 开发初体验(1) 之 开发准备

    一.准备: 1.准备一个 10074或更高版本的Win10.可以通过 https://insider.windows.com/ 地址,加入Windows 的会员俱乐部免费获取的. 2.下载Visual ...

  8. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...

  9. 微信小程序开发平台新功能「云开发」快速上手体验

    微信小程序开发平台刚刚开放了一个全新的功能:云开发. 简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新. 微信小程序一直保持一 ...

随机推荐

  1. 如何使用人工智能保护API的安全

    数字转型是基于一种可驱动新的操作模型的API,提供对业务逻辑.应用程序和数据的直接访问.虽然这种访问对于员工,合作伙伴和客户来说非常方便,但它也使API成为黑客和恶意网络的攻击目标.随着越来越多的攻击 ...

  2. Java连载22-for循环

    一.循环结构 在程序当中总有一些需要反复的/重复的执行的代码,假设没有循环结构,那么这段需要重复执行的代码自然式子最需要重复编写的,代码无法得到重复使用,所以多数编程语言都是支持循环结构的,将来把需要 ...

  3. xgboost保险赔偿预测

    XGBoost解决xgboost保险赔偿预测 import xgboost as xgb import pandas as pd import numpy as np import pickle im ...

  4. 同步机制之一--Synchronized,以及此机制下的锁的本质和种类

    Java中,为了实现同步的操作临界区,线程在执行临界区的代码时,需要获得某个对象的锁.本文介绍获得对象的锁的方法之一----Synchronized关键字. Synchronized关键字的用法 Cl ...

  5. net core天马行空系列: 泛型仓储和声明式事物实现最优雅的crud操作

    系列目录 1.net core天马行空系列:原生DI+AOP实现spring boot注解式编程 哈哈哈哈,大家好,我就是那个高产似母猪的三合,长久以来,我一直在思考,如何才能实现高效而简洁的仓储模式 ...

  6. java基础-多线程二

    java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...

  7. CentOS 源码安装MySQL5.7

    一.安装方式源码安装,源码包名称mysql-boost-5.7.27.tar.gz,此版本包含boost库,在解压后的boost路径下.安装时,可以-DDOWNLOAD_BOOST=1 -DWITH_ ...

  8. P3317 [SDOI2014]重建 变元矩阵树定理 高斯消元

    传送门:https://www.luogu.org/problemnew/show/P3317 这道题的推导公式还是比较好理解的,但是由于这个矩阵是小数的,要注意高斯消元方法的使用: #include ...

  9. Codeforces-450D-Jzzhu and Cities+dji

    参考:https://blog.csdn.net/corncsd/article/details/38235973 传送门:http://codeforces.com/problemset/probl ...

  10. 原来JS是这样的 - 对象属性

    引子 在上一篇(原来JS是这样的 (2))刚发布的时候就阅读了那篇文章的人可能会注意到那篇曾用过"JavaScript 中万物皆对象"的说法,而在随后我发现错误后立即更新改掉了这个 ...