开发过程中一些对微信公众号和小程序的认识。

一、服务号

在公众号开发入门一中提到,微信公众号分为订阅号和服务号,其中服务号功能最强,只准企业申请,并且要每年交300元认证费。如果企业想拥有自己的公众号的话,一般应该申请服务号。

并且这个申请和认证尽量提前。微信公众号有比较变态的授权策略,未经认证的公众号,基本上啥都做不了。虽然微信又很“贴心”地提供了测试账号,让你可以测试所有的API,但这仅限于API;如果是进行微信网页开发,测试账号同样看不到效果。

二、公众号与小程序

利用微信生态,是公众号还是小程序呢?

最好是一起搞,两个都要。如果只能选一个的话,选公众号。

小程序虽然功能比公众号强,但事实上,小程序能做的,公众号也能通过开发微信网页,然后在菜单里链接做到同样的效果,只是稍为麻烦而已。但是,如果我们应用系统想发送消息给微信用户的话,必须拥有一个公众号,因为消息模板由公众号提供。小程序原本也可以独自发模板消息,但现在微信政策变了,只能用公众号的消息模板,并且改名叫“统一服务消息”。

再有是公众号本质上是微信用户的联系人,一旦关注吗,就好像张三李四一样出现在微信用户的朋友列表里,而小程序只能到微信的“发现”里搜。作为便捷入口,公众号要强于小程序。公众号另一个优点是发布文章,有引流效果。

公众号还有一个优势,就是认证过的服务号,还可以免费开通一个小程序,并且无须认证。相当于买一送一。

三、公众号业主与开发人员通常不是同一批人,如何开发?

开发过程中,各种设置,包括版本发布,频频需要微信扫码。一般是管理员扫。问题是,管理员是业主,他们一般不负责开发,如果让他们经常扫码,不现实,甚至不可能,因为有可能他在异地。

这时候,可以让管理员将开发人员添加为经营账号,并且是长期的。这样大部分的操作都可以由开发人员完成,代为管理。

四、小程序发布

公众号没有发布一说,它是通过微信管理后台进行管理,它像微信提供的现成应用软件。

而小程序真的就是我们动手写代码开发的。但它的部署跟我们平时开发的软件部署不一样。一般我们部署软件,要有一台服务器,不管是虚拟服务器还是物理服务器,总之要有服务器,安装配置好环境,然后将发布软件部署于其中。小程序不一样,它直接运行于微信,部署方式是上传代码。流程具体为:微信开发者工具上传代码 -,小程序管理后台的版本管理中提交审核,审核通过以后发布,即可更新。

我认为该种发布方式即为传说中的Serveless。Serveless又叫FaaS,函数即服务。这里说的函数,不是我们程序中一段段代码这种函数。我怀疑所谓的函数是“功能“的误译。比如,一个小程序项目就是一个“函数”。

五、小程序开发中的自定义组件及类库

小程序跟VUE非常相像。主体都是js,也有页面、样式,也是采用MVVM模型。基本上,只要做过VUE开发,小程序很快就能上手。

VUE最基本的结构是组件。组件可以提高封装性、复用性。封装性意味着独立性,低耦合,然后意味着易.扩展,易维护。好处多多。小程序也支持组件,另外还有一个东东叫行为(behavior)。

小程序的组件类似VUE组件,有模板,样式,JS;而所谓的行为,则是JS类库。小程序基本结构是页面、组件、行为(我瞎掰的)。

1、组件示例
这是一个行政区域选择组件citys。

1)模板

<!--modules/citys.wxml-->
<picker bindchange="bindCityChange" value="{{cityI}}" range="{{citys}}"><view class="-city-picker">区域:{{citys[cityI]}}</view>
</picker>

2)JS

// modules/citys.js
const app = getApp();
const server = app.config.server;//自定义的属性,可忽略Component({/*** 组件的属性列表,公有*/properties: {all: {type: String,value: '全部'}},data: {citys: [],cityI: 0},ready() {const that = this;getDataFromDb(that);},/*** 组件的方法列表*/methods: {bindCityChange: function (e) {this.setData({cityI: e.detail.value})this.triggerEvent('cityChange', this.data.citys[e.detail.value])},}
})function getDataFromDb(that) {wx.request({url: server + '/api/sys/field/queryByKey/city',success(res) {const objs = res.data.fieldList;let citys = [that.data.all];for (let c in objs) {citys.push(objs[c].vtext)}that.setData({ citys: citys });}});
}

3)json

// modules/citys.js
{"component": true,"usingComponents": {}
}

4)样式
忽略不提

【调用示例】
1)index.json

{"usingComponents": {"city-picker": "../../../modules/citys"}
}

2)index.wxml

   <view class="city-picker"><city-picker id="city-picker1" all="--请选择--" bind:cityChange="onCityChange" /></view>

3)index.js

Page({data: {city: '三亚'},onCityChange(e) {const city = e.detail;if (city.indexOf('请选择') >= 0) {return;}this.setData({city: city})。。。//为所欲为}
});

2、行为示例
这是登录处理逻辑代码。只有JS,

//modules/login.js
const sLoginKey = 'user'module.exports = {isLogin() {return wx.getStorageSync(sLoginKey)},isBind() {//是否已经绑定自有系统用户const user = this.getUser()return (user.userId)},getUser() {return wx.getStorageSync(sLoginKey)},getInfo() {return this.getUser()},logout(callback) {_logout(callback)},setUser(user) {wx.setStorageSync(sLoginKey, user)}
}function _logout(callback) {if (callback) {wx.removeStorage({key: sLoginKey,success(res) {console.log(res)callback()}})} else {try {wx.removeStorageSync(sLoginKey)} catch (e) {console.log('登出失败:')console.log(e)}}
}

【调用示例】

const loginHandler = app.require('./modules/login.js')Page({data: {user: {},},onLoad() {if (!loginHandler.isLogin()) {//未登录wx.reLaunch({ url: 'login?b=user' })return}if (!loginHandler.isBind()) {//未绑定微信账号wx.reLaunch({ url: 'bind' })return}const user = loginHandler.getUser()this.setData({user: user})。。。//为所欲为},
})

六、小程序地图开发

小程序本身提供了地图开发,也可以用<web-view>嵌入地图网页的方式。小程序地图对手机的支持较好,但功能较弱,想在地图上做一些绘制基本不可能,比如绘制台风啥的。但嵌入网页虽然可以解决绘制的问题,不过需要解决屏幕自适应问题,而且也不会有微信用户当前位置功能。

开发入门(一):
微信公众号开发入门
微信小程序入门

微信公众号及小程序开发入门(二)相关推荐

  1. 微信公众号、小程序开发——1、客服消息+简易自开发回复平台

    一.客服消息"咨询-回复"方式 1.咨询方式 公众号:公众号主页发送各类型消息后,会在公众号后台收到用户消息. 小程序:在小程序网页中添加"客服按钮",进入客服 ...

  2. ngrok内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】

    前言:微信公众号,小程序.钉钉等开发需要内网穿透工具. 1.经过不断的摸索和调试,完成ngrok内网穿透的工具的搭建,对于微信公众号,小程序.钉钉等开发提供便利性. 2.搭建环境Linux cento ...

  3. Bwsaas框架基于Thinkphp6.x开发的微信公众号,小程序,app,H5等多端打通的框架

    完善bwsaas框架并开源原生小程序商业版本前端应用 新增 1插件安装升级,安装平台系统插件(type=admin_system)时可同时添加多个角色组(平台系统功能+租户系统功能),需要在group ...

  4. 《微信公众平台与小程序开发——从零搭建整套系统》——第1章,第1.2节微信公众平台...

    本节书摘来自异步社区<微信公众平台与小程序开发--从零搭建整套系统>一书中的第1章,第1.2节微信公众平台,作者 张剑明,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  5. 企业是先做网站,还是做微信公众号或小程序 ?

    很多企业想开发线上业务,就开始做网站.做微信公众号.做小程序.表面看起来开发线上业务的工具,该有的都有了,结果却不是很理想.因此,有的企业就觉得网上开发客户效果不好,但还是有的企业老板希望能把线上开发 ...

  6. 【微信小程序控制硬件 第14篇】分享一下我在微信公众号和小程序上实现的几个颜色采集器,轻松集成到您项目实现调光。

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  7. 私域流量对比:微信公众号、小程序、APP,谁更有价值?

    在数字化时代,流量已经成为了互联网企业最重要的资源之一.而对于企业来说,获取到流量只是第一步,如何将流量转化为价值才是最终目的.对于私域流量的获取和转化,微信公众号.小程序和APP是目前最常见的三种方 ...

  8. 小程序 php wecahtpay,PHP 微信公众号,小程序获取支付参数。微信支付

    PHP 微信公众号,小程序获取支付参数.微信支付 发布时间:2018-09-26 11:19, 浏览次数:278 , 标签: PHP 首先下载微信官方demo放入项目中 地址:https://gith ...

  9. Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题

    Appium 解决微信公众号.小程序切换 webview 后无法定位元素的问题 参考文章: (1)Appium 解决微信公众号.小程序切换 webview 后无法定位元素的问题 (2)https:// ...

最新文章

  1. 当领导,核心是“抓住2点、做好5条”!做到了,员工根本不用管
  2. 域用户的登录过程和GC的关系
  3. [导入]博客搬家了,呵呵
  4. SqliteHelper整理(转载)
  5. 13.multi_search_api
  6. 系统架构设计师证书含金量_计算机专科生不能错过的两个证书,含金量比较高,出社会有益...
  7. 闯过这 54 关,点亮你的 Git 技能树 (五) - 完结篇
  8. Oracle入门(五)之基本命令操作
  9. [Unity] TortoiseSVN 的 CheckOut 未响应的解决记录
  10. java学习--基础知识阶段性总结--多线程
  11. SonicWall远程命令执行漏洞
  12. Python学习笔记之蓝牙模块通讯-Pybluez
  13. 华为手机像素密度排行_「屏幕像素密度」(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系? - seo实验室...
  14. android app如何后台自启动,商家骑手端允许后台运行APP设置方法(安卓)
  15. 【解决方案】STM32L152单片机驱动段码LCD屏,执行HAL_LCD_Init函数失败返回HAL_TIMEOUT,长时间卡在LCD_FLAG_RDY的while循环里面的解决办法
  16. 登陆界面改怎么测试,分析,测试用例
  17. 猪圆谷润铬羽丰,派满歌甜四海赢
  18. 获取token的两种方法
  19. 《Adobe Illustrator CS5中文版经典教程》—第0课0.15节创建和编辑渐变
  20. 紫色特别舒服的UI趣味测试微信小程序源码下载包含多种评测

热门文章

  1. java 菜刀_中国菜刀使用方法以及小技巧
  2. 新基建大热,关服务器什么事?
  3. 解决苹果浏览器点击事件无法生效的问题
  4. 【ubuntu20.04上openvino安装及环境配置】
  5. 基于人脸识别和瞳孔检测的屏幕亮度自适应调节装置
  6. 2021四川高考成绩等位分查询,2021年四川高考位次排名查询,四川高考位次所对应的学校...
  7. 大端和小端C++转载记录
  8. JAVA_小小圣诞树
  9. 生产者和消费者模型(可以多对多,一对多、多对一、一对一)c++实现,没有使用pthread,时间片模拟并发
  10. python中wb什么意思,使用Python,“ wb”在此代码中是什么意思?