如何从零开始,做一个跑步小程序?| 实战案例

知晓程序注:

我们往期发布的实战指南,大多针对线上业务,如「手把手教你做电商小程序」系列。

关注知晓程序(微信号 zxcx0101),回复「电商」,查看电商小程序开发教程系列文章。

我们相信,小程序的形态也非常适合线下场景使用。如何针对线下场景做出一个小程序?

今天,我们要给大家分享的是,一个涉及地图应用的运动类小程序开发手记。相信能给专注线下业务的小程序开发者带来一些启发。

文 | alanwangmodify

准备工作

首先,你需要注册一个小程序账号。需要用一个没注册过公众号的邮箱注册。

注册过程中需要很多认证,比较繁琐。如果暂时只是试水、没有发布的打算,那么只要完成基本信息填写就可以,不需要完成微信认证。

之后,就可以在公众平台使用注册的帐户进行登录。

然后,在主页面左边列表中点击设置,再设置页面中选开发设置,就可以看到 AppID。

AppID 可以用于在开发工具中进行登记,使用开发工具的高级功能。你可以到官网下载开发工具。

开始项目

打开开发者工具,选择小程序选项,然后直接点击「添加项目」按钮。我们可以在这个步骤,填入刚才注册的时候使用的 AppID。

如果项目目录中的文件是个空文件夹,会提示是否创建 quick start 项目。

选择「是」,开发者工具会帮助我们在开发目录里生成一个简单的 Demo。

这个 Demo 拥有一个完整的小程序的大概框架。

1. 框架

我们首先看一下官方提供的 Demo 含有的目录:

  • app.js:小程序逻辑、生命周期、全局变量。
  • app.json:小程序公共设置、导航栏颜色等,不可以注释。
  • app.wxss:小程序公共样式,类似 CSS 。

小程序页面构成类似这样:

每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.jsindex.wxmlindex.wxssindex.json

微信小程序中的每一个页面的路径和页面文件名,都需要写在 app.jsonpages 中,且 pages 数组中的第一个页面是小程序的首页。

这四个文件按照功能可以分成三个部分:

  • 配置:json 文件
  • 逻辑层:js 文件
  • 视图层:wxss.wxml 文件

在 iOS 上,小程序的逻辑代码运行于 JavaScriptCore 中,而在 Android 上,这个任务则是交给 X5 内核来完成。

在开发工具中,小程序的 JavaScript 代码是运行在 NW.js(Chrome 内核) 中。这也导致开发工具上的效果跟实际效果有所出入。

2. 视觉组件

微信提供了许多视觉组件,主要分为八种:

  • 视图容器
  • 基础内容
  • 表单组件
  • 操作反馈
  • 导航
  • 媒体组件
  • 地图
  • 画布

这其中,包含了 viewscroll-viewbuttonform 等普通常用的组件,也提供了地图 map、画布 canvas 等特殊屏幕元素。

组件主要属于视图层,通过 WXML 来进行结构布局,类似于 HTML。样式则通过 WXSS 来定义和修改,它的语法和使用都近似 CSS。

组件使用语法实例:

更多的组件以及相关使用方法可以到官方文档中「组件」一节查看。

3. API

小程序中,大致提供以下几个部分的 API 接口:

  • 网络
  • 媒体
  • 数据
  • 位置
  • 设备
  • 界面
  • 开发接口

其中,网络请求的使用,必须先到公众平台设置白名单域名。

网络请求接口包含了普通的 HTTPS 请求,支持上传、下载、Socket,基本上满足了我们开发中所需要的网络需求。

这些 API 属于逻辑层,写在 JS 逻辑文件中。

使用实例:

可以到官方文档中的 API 一节查看其它 API 的使用方法。

编译运行

1. 模拟器调试

我们可以在微信提供的开发者工具中,使用模拟器查看小程序运行的效果。

之前我们提过,小程序的运行底层不同,这也导致在模拟器上的效果,会与在手机上运行有些差异。

2. 真机调试

在左边的选项栏中,选择项目,然后点预览会生产一个二维码,用管理员微信号扫一扫,就可以在真机上看实际效果。

实战:跑步小程序

真机运行截图(运行于 iPhone 7,微信版本:6.3.30):

  • 功能:能够计算里程、时间、实时获取跑步路径(有些粗糙)。
  • 思路:主要使用了微信小程序的获取位置接口 APIwx.getLocation() 和地图视觉组件 map

首先实现一个计时器进行 计时,通过 wx.getLocation() 获取坐标,把获取到的坐标存在一个数组中,通过坐标每隔一段时间获取里程,进行累加得到总里程,同时也通过坐标点进行连线。

存在的问题:

  1. 因为目前找不到在地图上画连线的方法,所以采用了在地图上贴小红点图的方法显示大概跑步路径,路径比较粗糙;
  2. 虽然采用了 API 里面的火星坐标 GCJ02 类型,但是获取的坐标跟国际坐标差不多,依然存在着偏差。

我已经把全部代码放在 GitHub 上,大家可以下载来看看,或者先 Star 起来,我以后还会进行一些优化更新。现在只是一个学习 Demo,大家沟通学习,实际应用还需更多优化。

原文链接:http://www.jianshu.com/p/6e826464d52c 开源代码地址:https://github.com/alanwangmodify/weChatApp-Run

本文由知晓程序授权转载,关注微信号 zxcx0101,回复「上手」获取全网最值得看的小程序上手体验系列文章。

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2016-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿天地

spring boot开发的日志系统

项目采用技术:springboot,mongodb,freemarker,bootstrap,highcharts等 这个项目还没做完,目前已完成的功能有下面几...

3329
来自专栏ATYUN订阅号

GitHub推出新功能GitHub Actions,可直接在网站上构建,共享和执行代码

GitHub宣布了一项名为GitHub Actions的新功能,这是一种自动化和自定义工作流程的新方法,该功能允许用户直接在网站上构建,共享和执行代码。

422
来自专栏F-Stack的专栏

F-Stack Q&A 第一期

Q1:F-Stack有中断模式吗,有计划支持吗?在计算密集型的应用中,轮询模式会占用更多的CPU资源? A1:F-Stack暂时只支持轮询模式,后续会支持中断+...

4745
来自专栏云计算

为云开发API接口的最佳方案

一些云服务提供商及其OpenStack,vCloud,OnApp等服务提供平台正越来越多地通过API或Web服务进行编程。要使用这些API / Web服务,我们...

2716
来自专栏杨建荣的学习笔记

Python的兼容性很无助

直觉的思路就是使用pip来检查,但是发现pip不可用了。最开始以为是pip导致的。修复方法如下:

810
来自专栏walterlv - 吕毅的博客

Windows 10 自带那么多图标,去哪里找呢?

2018-02-27 15:11

331
来自专栏FreeBuf

你的终端是安全的吗?iTerm2 中可能通过 DNS 请求泄漏隐私信息

Mac 上的开发者可能非常熟悉 iTerm2 这款终端应用程序,甚至已经用它取代了 Apple 官方终端应用的地位。但就在今天之前,iTerm2中还存在一个严重...

2255
来自专栏python开发者

CI-持续集成(2)-软件工业“流水线”技术实现

1   概述 持续集成(Continuous Integration)是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前...

2498
来自专栏张善友的专栏

Msdn 杂志 asp.net ajax 文章汇集

asp.net ajax 充分利用客户端 JavaScript、DHTML 和 XMLHttpRequest 对象。其目的是帮助开发人员创建更具交互性的支持 A...

1758
来自专栏腾讯开源的专栏

TarsGo新版本发布,支持protobuf,zipkin和自定义插件

Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架,目前支持C++,Java,PHP,Nodejs,Golang语言。该框架为用户提供了涉及到...

1327

扫码关注云+社区