概述

由于面试的关系接触了一下微信小程序,花了2晚上开发了一个带书签功能的古龙小说阅读器,并且已经提交审核等待发布。这篇博文记录了我的开发过程和对微信小程序的看法,供以后开发时参考,相信对其他人也有用。

阅读器的数据没有用服务器,而是写在js文件中传进去的。书签用的本地储存,所以关闭小程序后仍然存在。

用微信扫这个二维码可以快速查看(还在审核中。。。审核好像也有许多坑。。。):

这是效果展示:

认识小程序

什么是小程序

小程序是由开发者用html,css和js开发的,发布到微信小程序页面的微型app。之所以说它微型,是因为它不像普通app那样需要下载安装,它可以直接在微信里面打开,速度很快。

如何打开小程序

可以通过用微信扫描小程序的二维码打开,也可以用微信搜索小程序并打开,方法如下:

  1. 下载安装最新版本的微信。
  2. 点击下面的发现,然后滑到页面最下面,点击小程序。
  3. 最后点击右上角的放大镜即可搜索小程序。

小程序的优点和应用

小程序拥有手机app的大部分优点,并且解决了手机app的一大缺点——重度:需要下载安装

我们生活中经常有这样的例子,就是下载安装了某一个手机app,只需要用一次然后卸载。如果是微信小程序的话,就免除了下载这个步骤。举个例子,饭店的菜单,只需要扫一扫码,就可以从微信里面看到菜单并点菜,还可以提前点菜。完全不需要服务员拿来纸质菜单。

目前美团,饿了吗甚至12306已经发布了它们的微信小程序,功能和它们的app差不多,更有人直接卸载了app,就用小程序。

小程序开发

既然小程序有这么多优点,而且很可能成为以后app的发展方向,我当然是非常激动啦。于是打算动手具体尝试一下微信小程序开发。

思路:就写一个能阅读古龙小说的手机阅读app,需要带有书签功能,因为每次关闭再打开的时候我要能够继续上次的地方阅读。

开发前:去官网注册相关信息(因为微信小程序是微信发布的,微信要你注册你就得注册0.0),下载开发软件,并阅读相关文档,了解小程序机制。

机制:微信他自己仿照html,css和js发布了一套标准wxml,wxss,wxs,写法和他们很类似,就是功能少很多。

API:小程序的页面渲染比起vue来说,更接近react风格,为了加快小程序在微信端的运行,它更加侧重于单向数据绑定。为此,小程序发布了很多api,包括地图啊设备信息啊位置啊什么的都很有意思。

开发:了解了微信开发软件自带的文档结构和渲染规则之后就很容易了,主要遇到了下面2个坑:

  1. 滑动到页面的固定位置。有两种解决方案,一种是用scroll-view标签,然后用它自带的参数来配置,另一种方法是利用pageScrollTo这个api。强调一下,这个问题在js中非常容易解决。
  2. 读取文件。有五种解决方案。一种是跨域读取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源码

我学到了什么

  1. 了解了微信小程序的运作原理和从注册到审核上线的流程。
  2. 实际操作了一下本地储存,觉得很有趣,以后打算操作一下地图api。
  3. 熟悉了手机端特有的tap事件,touch事件,touchstart事件,touchmove事件等。
  4. 了解了微信小程序生态,它能做什么,它的优势是什么等等。

小程序展望

像小程序这种,一定是以后app的发展趋势

但是现在小程序开发还不成熟,虽然已经有很多人前赴后继的去开发了,也踩过了不少坑有不少经验,但是仍存在大量的坑给你踩,开发起来会很累。

另一方面,由于小程序只局限在国内,指不定国外一个权威机构发布一套简单容易开发的小程序语言,那这边又要跟着动;而且,指不定以后微信直接支持html,css和js呢!

我个人对待国内的微信小程序还是很期望的,但是我现在对现代web开发还做的不是很溜,当务之急是先把基础做扎实

开发微信小程序——古龙小说阅读器的更多相关文章

  1. 微信小程序(5)--阅读器

    最近用微信小程序写了一个图书阅读器,可以实现左右滑动翻页,按钮翻页,上下滚动,切换背景,控制字体大小.以及记住设置好的状态,如页面再次进来保留上次的背景色和字体大小. 由于暂时没有真实的数据接口,所以 ...

  2. 利用WordPress REST API 开发微信小程序从入门到放弃

    自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...

  3. 快速开发微信小程序

    image.png 最近婷主在做微信小程序.自己的微信公众号也需要添加点料,乘着这次放假,把微信小程序研究了下.虽然没有做什么很强大的功能,不过好歹自己的公众号也有了微信小程序.够用即可. 1.需要先 ...

  4. WordPress 网站开发“微信小程序“实战(二)

    原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...

  5. WordPress 网站开发“微信小程序“实战(三)

    本文是"WordPress 开发微信小程序"系列的第三篇,本文记录的是开发"DeveWork+"小程序1.2 版本的过程.建议先看完第一篇.第二篇再来阅读本文. ...

  6. 如何用TypeScript开发微信小程序

    微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...

  7. 关于开发微信小程序后端linux使用xampp配置https

    关于开发微信小程序后端linux使用xampp配置https 背景 由于最近开发微信小程序,前后端交互需要使用https协议,故需要配置https服务 服务器环境 服务器系统 ubuntu 环境 xa ...

  8. 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

    在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...

  9. wn-cli 像React组件开发一样来开发微信小程序

    项目地址:wn-cli wn-cli wn-cli 像React组件开发一样来开发微信小程序 名字由来:wn -> weapp native 取第一个字母 Install npm install ...

随机推荐

  1. LevelDB源码分析-Get

    Get LevelDB提供了Get接口用于给定key的查找: Status DBImpl::Get(const ReadOptions &options, const Slice &k ...

  2. DOCKER解析(转)

    Docker基本概念详解 本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令. 阅读本文大概需要15分钟,通过阅读本文你将知道一下 ...

  3. MFC笔记7

    1.VS中显示行号 工具 -> 选项 -> 文本编辑器 -> C/C++ -> 行号 2.VS中调整字体大小 工具 -> 选项 -> 环境->字体和颜色 3. ...

  4. 微信小程序开发之保留小数(toFixed) 四舍五入 获取整数 string转int

    https://blog.csdn.net/qq_31383345/article/details/52961767

  5. 九、Brideg 桥接模式

    设计原理: 代码清单: 抽象类 DisplayImpl public abstract class DisplayImpl { public abstract void rawOpen(); publ ...

  6. python--第十天总结(线程、进程和协程)

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import t ...

  7. linux环境启动数据库

    1.查看数据库监听的状态: 监听状态:lsnrctl status  出现如下列截图所示数据,说明切切换账户有问题:切换账户时要家:-:  如 su - oracle 第一步:打开Oracle监听$ ...

  8. AC自动机解题记录

    1.HDU 2222 Keywords Search 模板题 #include <bits/stdc++.h> #define fir first #define sec second # ...

  9. FortiGate日常检查

    1.1)CPU利用率:由于防火墙有芯片,正常的流量都走芯片转发,不走cpu,只有开了utm相关的应用层防护功能和DDOS之类的,才会走cpu,所以一般cpu都不会占用太多,甚至很多时间都是0%, 如果 ...

  10. 289. Game of Life数组生存游戏

    [抄题]: According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a ...