开发微信小程序——古龙小说阅读器
概述
由于面试的关系接触了一下微信小程序,花了2晚上开发了一个带书签功能的古龙小说阅读器,并且已经提交审核等待发布。这篇博文记录了我的开发过程和对微信小程序的看法,供以后开发时参考,相信对其他人也有用。
阅读器的数据没有用服务器,而是写在js文件中传进去的。书签用的本地储存,所以关闭小程序后仍然存在。
用微信扫这个二维码可以快速查看(还在审核中。。。审核好像也有许多坑。。。):
这是效果展示:
认识小程序
什么是小程序
小程序是由开发者用html,css和js开发的,发布到微信小程序页面的微型app。之所以说它微型,是因为它不像普通app那样需要下载安装,它可以直接在微信里面打开,速度很快。
如何打开小程序
可以通过用微信扫描小程序的二维码打开,也可以用微信搜索小程序并打开,方法如下:
- 下载安装最新版本的微信。
- 点击下面的发现,然后滑到页面最下面,点击小程序。
- 最后点击右上角的放大镜即可搜索小程序。
小程序的优点和应用
小程序拥有手机app的大部分优点,并且解决了手机app的一大缺点——重度:需要下载安装。
我们生活中经常有这样的例子,就是下载安装了某一个手机app,只需要用一次然后卸载。如果是微信小程序的话,就免除了下载这个步骤。举个例子,饭店的菜单,只需要扫一扫码,就可以从微信里面看到菜单并点菜,还可以提前点菜。完全不需要服务员拿来纸质菜单。
目前美团,饿了吗甚至12306已经发布了它们的微信小程序,功能和它们的app差不多,更有人直接卸载了app,就用小程序。
小程序开发
既然小程序有这么多优点,而且很可能成为以后app的发展方向,我当然是非常激动啦。于是打算动手具体尝试一下微信小程序开发。
思路:就写一个能阅读古龙小说的手机阅读app,需要带有书签功能,因为每次关闭再打开的时候我要能够继续上次的地方阅读。
开发前:去官网注册相关信息(因为微信小程序是微信发布的,微信要你注册你就得注册0.0),下载开发软件,并阅读相关文档,了解小程序机制。
机制:微信他自己仿照html,css和js发布了一套标准wxml,wxss,wxs,写法和他们很类似,就是功能少很多。
API:小程序的页面渲染比起vue来说,更接近react风格,为了加快小程序在微信端的运行,它更加侧重于单向数据绑定。为此,小程序发布了很多api,包括地图啊设备信息啊位置啊什么的都很有意思。
开发:了解了微信开发软件自带的文档结构和渲染规则之后就很容易了,主要遇到了下面2个坑:
- 滑动到页面的固定位置。有两种解决方案,一种是用scroll-view标签,然后用它自带的参数来配置,另一种方法是利用pageScrollTo这个api。强调一下,这个问题在js中非常容易解决。
- 读取文件。有五种解决方案。一种是跨域读取github api上存放的数据,但是github是国外网站,在国内没有备案,而微信规定,跨域一定需要备案,不可行。一种是设置服务器,但是我刚买腾讯云,还没时间搭建服务器,也不可行。还一种是用
wx.openDocument
这个api读取文件,但是它不仅不能读取text,而且它实际上是用系统默认程序打开的,会发生跳转,也不可行。还一种是用js中的读取文件的方法,很可惜,微信小程序并不支持,也不可行。最后我只能把数据写在js文件里面传上去打开,等我的腾讯云服务器搭建好了再转移。再次强调一下,这个问题在js中也非常容易解决。
这些主要功能都集中在我的page页,代码如下:
//page.js
var app =getApp()
Page({
data: {
id: 0,
novel: '等待中...',
bookMark: []
},
//滑动事件
touchMove: function(event) {
let bookMark = (wx.getStorageSync('bookMark') || []);
bookMark[this.data.id] = event.touches[0].pageY;
wx.setStorageSync('bookMark', bookMark);
},
//点击事件,从上次开始看
tap: function(event) {
let bookMark = (wx.getStorageSync('bookMark') || []);
wx.pageScrollTo({
scrollTop: bookMark[this.data.id] - app.globalData.windowHeight/3
})
},
//页面加载
onLoad: function (options) {
var that = this;
let bookMark = (wx.getStorageSync('bookMark') || []);
that.setData({
id: options.id,
novel: options.novel,
bookMark: bookMark
});
}
})
具体情况可以看我的github源码
我学到了什么
- 了解了微信小程序的运作原理和从注册到审核上线的流程。
- 实际操作了一下本地储存,觉得很有趣,以后打算操作一下地图api。
- 熟悉了手机端特有的tap事件,touch事件,touchstart事件,touchmove事件等。
- 了解了微信小程序生态,它能做什么,它的优势是什么等等。
小程序展望
像小程序这种,一定是以后app的发展趋势。
但是现在小程序开发还不成熟,虽然已经有很多人前赴后继的去开发了,也踩过了不少坑有不少经验,但是仍存在大量的坑给你踩,开发起来会很累。
另一方面,由于小程序只局限在国内,指不定国外一个权威机构发布一套简单容易开发的小程序语言,那这边又要跟着动;而且,指不定以后微信直接支持html,css和js呢!
我个人对待国内的微信小程序还是很期望的,但是我现在对现代web开发还做的不是很溜,当务之急是先把基础做扎实。
开发微信小程序——古龙小说阅读器的更多相关文章
- 微信小程序(5)--阅读器
最近用微信小程序写了一个图书阅读器,可以实现左右滑动翻页,按钮翻页,上下滚动,切换背景,控制字体大小.以及记住设置好的状态,如页面再次进来保留上次的背景色和字体大小. 由于暂时没有真实的数据接口,所以 ...
- 利用WordPress REST API 开发微信小程序从入门到放弃
自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...
- 快速开发微信小程序
image.png 最近婷主在做微信小程序.自己的微信公众号也需要添加点料,乘着这次放假,把微信小程序研究了下.虽然没有做什么很强大的功能,不过好歹自己的公众号也有了微信小程序.够用即可. 1.需要先 ...
- WordPress 网站开发“微信小程序“实战(二)
原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...
- WordPress 网站开发“微信小程序“实战(三)
本文是"WordPress 开发微信小程序"系列的第三篇,本文记录的是开发"DeveWork+"小程序1.2 版本的过程.建议先看完第一篇.第二篇再来阅读本文. ...
- 如何用TypeScript开发微信小程序
微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...
- 关于开发微信小程序后端linux使用xampp配置https
关于开发微信小程序后端linux使用xampp配置https 背景 由于最近开发微信小程序,前后端交互需要使用https协议,故需要配置https服务 服务器环境 服务器系统 ubuntu 环境 xa ...
- 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等
在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...
- wn-cli 像React组件开发一样来开发微信小程序
项目地址:wn-cli wn-cli wn-cli 像React组件开发一样来开发微信小程序 名字由来:wn -> weapp native 取第一个字母 Install npm install ...
随机推荐
- Docker 简介,入门
1.简介 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行 ...
- 正确理解c和c ++的复杂类型声明
本文作者girlrong是网易广州社区的C语言版版主,这篇文章被选在精华区.很是不错,不敢独享!据说她乐于助人,虚心诚恳,颇受网友欢迎.只可惜现在已退隐江湖了.在最近学习C语言过程中,了解些前辈大牛的 ...
- 第一个只出现一次的字符字符(python)
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). # -*- codin ...
- fortitoken
1.token状态为error,且不能分配给用户使用 解决: 关联有User的token状态是error的原因是:用户一直并未使用.
- Python基础-python简介(一)
一.简介: python是一种面向对象的解释性计算机程序设计语言,由荷兰人Guido von Rossum于1989年的圣诞节发明. Python语言的特色: 1.python是一门解释性语言 解 ...
- 151. Reverse Words in a String翻转一句话中的单词
[抄题]: Given an input string, reverse the string word by word. Example: Input: "the sky is blue& ...
- 227. Basic Calculator II 无括号版本计算器
[抄题]: Implement a basic calculator to evaluate a simple expression string. The expression string con ...
- linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group --学习
一./etc/passwd 和/etc/shadow解释 与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,比如用户的密码 ...
- [leetcode]84. Largest Rectangle in Histogram直方图中的最大矩形
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- MySQL开发——【联合查询、多表连接、子查询】
联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...