《微信小程序开发入门精要》——第1章,第1.6节开发第一个微信小程序

简介:

本节书摘来自异步社区《微信小程序开发入门精要》一书中的第1章,第1.6节开发第一个微信小程序,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.6 开发第一个微信小程序
本节将从零开始开发一款微信小程序。该程序是一个猜拳游戏,功能很简单,单击“开始”按钮后,会快速切换“锤子”“剪刀”和“布”,直到按“停止”按钮,会显示“锤子”“剪刀”和“布”中的一个,该游戏可以实现双方或多方猜拳。本节的目的是通过该例子,将开发微信小程序的过程完整讲述一遍,从配置开发环境、建立小程序项目,一直到将微信小程序发布到微信平台,并在真机上测试为止。通过该例子,读者可以掌握微信小程序的开发流程。

1.6.1 配置开发环境
腾讯在推出微信小程序的同时,也推出了自己的开发工具,读者可以到下面的地址中下载该开发工具的最新版本。

https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1477656486010

这套开发工具目前支持Windows32位、Windows64位以及Mac OS X系统,读者需要根据自己使用的OS下载合适的版本。本书主要使用Mac OS X版本进行讲解,Windows版本和Mac OS X大同小异,并不影响读者阅读本书的内容。

运行微信小程序IDE后,会看到如图1-7所示的窗口。


483611b2b8e785c2babc6159ab789ffccb34a01b

▲图1-7 扫描二维码进入IDE

进入手机微信,扫描该二维码(需要管理员微信账号才可以正常登录),就会自动登录,并进入如图1-8所示的窗口。


24c1964f40cb4aafdb3231892644b1e6eecb45a9

▲图1-8 微信开发者工具

目前该工具同时支持开发小程序和公众号网页开发,由于本书主要讲解小程序开发,所以读者要选择第一项“本地小程序项目”,进入如图1-9所示的窗口。


bc225cb1ab1e3a3f41d06e2da1dae5788ef0ff3b

▲图1-9 微信小程序IDE建立项目窗口

读者如果第一次使用该IDE,可以单击“添加项目”,新建一个小程序项目,图1-9所示的列表是已经建立的小程序项目。

1.6.2 建立小程序项目
单击“添加项目”后,会看到如图1-10所示的页面。


3598bd85971fd34a5383f18865d245813ecffa2d

▲图1-10 新建小程序项目

进入如图1-10所示的新建项目窗口后,如果读者有小程序的AppID,可以直接在AppID中输入。如果没有,单击“无AppID”,也可以开发小程序,只是无法在真机上测试,也无法发布,但可以在本地运行。最后按图1-11所示输入项目名称和项目目录。


580b84f406b74b20c93937e297aecbd0aa7fa524

▲图1-11 输入小程序工程信息

单击“添加项目”按钮后,会创建新的小程序项目,开发主界面如图1-12所示。下一节我们会在这个项目中开发第一个小程序,并介绍该开发界面的主要组成部分。


357c3463946766347419c338879653cfdbf3e384

▲图1-12 微信小程序开发主界面

1.6.3 猜拳游戏的布局
进入小程序IDE,单击IDE左上角的“编辑”选项(如图1-13所示),开始编辑代码。

猜拳游戏的布局非常简单,如图1-14所示。


45ab5e14eef0a1d14ec160f123cd8f37e7d4a67a

▲图1-13 IDE左上角的控制选项


a43d2faf8a32a8ca7999b29fdeeaebc511bb845c

▲图1-14 猜拳游戏的布局样式

猜拳游戏的布局是纵向显示了3个组件:文本组件(text)、图像组件(image)和按钮组件(button)。在创建小程序工程时,默认建立了两个页面:index和logs,如图1-15所示。我们不需要考虑logs,在这个例子中只修改和index页面相关的文件。index是小程序第一个显示的页面。


77820e998eef40289da9f46d90fa6dff2831b4ee

▲图1-15 index和logs页面的文件结构

其中,index.wxml文件是index页面的布局文件,现在打开该文件,并按下面的内容修改代码。

<!--index.wxml-->
 <view class="container">
    <text class="finger_guessing">猜拳游戏</text>
    <view   class="userinfo">
       <image class="userinfo-avatar" src="{{imagePath}}" background-size="cover"/>
       <button bindtap="guess">{{title}}</button>
     </view>
   </view>

在这段代码中,image和button组件的内容都需要动态改变,所以image组件的src属性和button组件的文本值(夹在之间的部分)都分别与一个变量绑定。这是小程序的一个重要特性(和React Native完全相同)。在改变组件的属性值时,并不需要直接获取该组件的实例,而只需将该属性与某个同类型的变量绑定,一旦该变量的值改变,属性值也就会随之改变了。绑定变量的格式是“{{变量名}}”。改变了的定义和初始化部分,在下一节会详细介绍。

我们发现,就算按前面的布局,仍然不能像图1-14所示那样摆放组件,这是因为还需要调整下面代码的样式(index.wxss文件)。

/index.wxss/
 .userinfo {
   display: flex;
   flex-direction: column;
   align-items:center;
   margin-top: 50px;
 }

 .userinfo-avatar {
   width: 500rpx;
   height: 500rpx;
   margin: 40rpx;
  }
  .userinfo-nickname {
   color: #aaa;
 }
  .finger_guessing {
   color: #F00;
   font-size: 30px;
   margin-top: 20px;
 }

前面的布局代码主要调整了userinfo-avatar的宽度和高度,让图像显示得更大一些。

最后,还需要修改app.wxss文件的代码,将padding属性的值改成50rpx 0,代码如下:

/**app.wxss**/
 .container {
   height: 100%;
   display: flex;
   flex-direction: column;
   align-items: center;
   justify-content: space-between;
   padding: 50rpx 0;
   box-sizing: border-box;
 }

当然,现在可能仍然无法显示图像,因为还没有设置imagePath变量,而且还没有把图像放到工程目录中。现在读者可以到网上找3张图片,分别是剪子、石头和布,当然,也可以用本例提供的图像,并在小程序工程根目录建立一个images目录,将这3个图像文件放到该目录中。

1.6.4 控制剪子、石头、布的快速切换
猜拳游戏的核心就是快速切换剪子、石头、布3个图像,当单击“停止”按钮后,会停到其中一个图像上。这里涉及到如下两个动作:

用定时器快速切换图像。
当一开始单击图像下方的按钮时,文本变成了“停止”,当再次单击该按钮后,按钮文本又变成了“开始”,也就是说,一个按钮同时负责开始和停止图像快速切换两个动作。
控制图像快速切换和按钮文本变化两个动作的代码都要写在index.js文件中。首先会将这3个图像文件名存储在一个全局的数组中,并使用定时器快速从这个数组中依次循环获取图像文件名,并将该文件名指定的图像显示到image组件中。修改按钮的文本只需要修改title变量即可。

这里涉及到两个主要变量:imagePath和title。这两个都定义在data对象中,单击按钮会执行guess函数(在index.wxml文件中使用bindtap属性指定按钮的单击事件函数名),该函数也需要在index.js中编写。完整的实现代码如下:

//index.js
//获取应用实例
 var app = getApp()
 //  在数组中存在三个图像文件名
 var imagePaths = ['../../images/scissors.png', '../../images/stone.png', '../../images/cloth.png'];
//  当前图像的索引
 var imageIndex = 0;


 Page({
   data: {
     imagePath: imagePaths[0],  //  用于修改image组件显示图像的变量
     title: '开始',                  //  用于改变按钮文本的变量
     isRunning:false,               //  该变量为true,表示图像正在快速切换
     userInfo: {},


   },
   //事件处理函数
   bindViewTap: function () {
     wx.navigateTo({
       url: '../logs/logs'
     })
   },
   //  定时器要执行的函数
   change: function (e) {
     imageIndex++;
     //  当前图像索引大于最大索引时,重新设为第一个索引值(已达到循环显示图像的目的)
     if (imageIndex > 2) {
       imageIndex = 0;
     }
     //  修改image组件要显示的图像(改变imagePath变量的值)
     this.setData(
       {
         imagePath: imagePaths[imageIndex]
       }
     )
   },
    //  单击按钮要执行的函数——单击要执行的函数按钮
    guess: function (e) {
     //  获取isRunning变量的值
     let isRunning = this.data.isRunning;
     // 根据是否正在快速切换图像,决定如何修改按钮文本,以及是开启定时器,还是移除定时器
     if (!isRunning) {
       this.setData(
         {
           title: '停止',
           isRunning:true
         }
       );
       //  开启定时器(没100毫秒调用一次change函数)
       this.timer = setInterval((function () {
         this.change()
       }).bind(this), 100);
     }
     else {
       this.setData(
         {
           title: '开始',
           isRunning:false
         }
       );
       //  移除定时器
       this.timer && clearInterval(this.timer);

     }
   },
   onLoad: function () {
     console.log('onLoad')
     var that = this

     //调用应用实例的方法获取全局数据
     app.getUserInfo(function (userInfo) {
       //更新数据
       that.setData({
         userInfo: userInfo
       })
     })
   }
 })

至此,猜拳游戏的代码已全部介绍完毕,现在可以通过左侧的模拟器测试我们的成果了。大家可以单击“开始”按钮,看看图像是否会快速切换,再单击“停止”按钮,看看是否会停止在某个图像上。

1.6.5 真机测试小程序
现在轮到用真机测试我们的成果了。如果只想在真机上测试,可以用管理员微信登录小程序IDE。

现在单击IDE左上角的“项目”选项,右侧会显示如图1-16所示的项目操作页面。


d0a2afbedab099a4f85e48b64f473824e61fb290

▲图1-16 项目操作页面

单击“预览”按钮,会显示如图1-17所示的二维码窗口,用管理员的微信扫描该二维码,即可将小程序上传到真机上运行。

在真机(Android手机)上的测试结果如图1-18所示。


48fb3ab9435231718c432410c9e9b6e25d8463ae

▲图1-17 扫描二维码上传小程序到真机


876f23df891978ea209b036f66735ae13e235d33

▲图1-18 在真机上的测试结果

1.6.6 真机调试小程序
如果在模拟器上开发小程序,很容易在Console中查看调试信息,但如果在真机上运行呢?其实也有办法查看调试信息。现在按着前面讲解步骤在真机上运行小程序,然后单击右上角的省略号(…)菜单,会弹出如图1-19所示的菜单。

单击“打开调试”菜单项,这时当前小程序需要关闭,然后重新进入。这时会看到右下角有一个绿色的“vConsole”按钮,如图1-20所示。


850ce7f301d8332f6a4c2ad434a4eeb085300d93

▲图1-20 vConsole按钮

单击“vConsole”按钮,就会打开真机上的Console,并显示调试信息,如图1-21所示。关闭Console,执行同样的操作即可。


c26b17452517ae71a84ea5aae03b401bffa31903

▲图1-21 真机上的Console

1.6.7 上传和审核小程序
如果在真机上测试没问题,那么可以单击图1-16所示的“上传”按钮将小程序上传到腾讯的服务器。单击“上传”按钮后,也会显示一个类似图1-17的二维码窗口,用管理员的微信扫描该二维码,然后会显示如图1-22所示的窗口,输入相应的版本号和项目备注,最后单击“上传”按钮上传即可。


fad83d715de84d975811a43216c23a2f8419fdca

▲图1-22 完成最后的上传设置工作

成功上传小程序后,回到小程序的后台,单击左侧的“开发管理”选项,会看到如图1-23所示的3个小程序版本的管理页面。我们直接上传的是开发版本,如果管理员认为没问题,可以单击“提交审核”按钮,将小程序提交给腾讯,这就是审核版本。如果腾讯审核通过正式上线了,这就是线上版本。读者也可以单击“提交审核”按钮右侧的向下箭头按钮,并单击“删除”按钮删除当前开发版本。要注意的是,下一次上传的版本会覆盖当前的开发版本。


61a6438938abefafa25bcfea8b88f5e82c23e8ee

▲图1-23 管理小程序的版本

相关文章
|
5天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的微信课堂助手小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的微信课堂助手小程序的详细设计和实现
31 3
|
5天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的微信阅读网站小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的微信阅读网站小程序的详细设计和实现
29 2
|
5天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
25 0
|
12天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
12天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
12天前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。
|
12天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
1月前
|
小程序 前端开发 程序员
微信小程序开发入门教程-小程序账号注册及开通
微信小程序开发入门教程-小程序账号注册及开通
|
12天前
|
SQL 安全 小程序
探索微信小程序全栈开发的安全性问题
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的安全性问题,包括数据安全、接口安全、隐私保护和代码安全。为解决这些问题,建议采取数据加密、使用HTTPS协议、身份认证与授权、输入验证、安全审计及漏洞扫描以及安全培训等措施。通过这些方法,开发者可提升小程序安全性,保护用户隐私和数据。
|
1月前
|
小程序 JavaScript
在使用微信小程序开发中用vant2框架中的Uploader 文件上传wx.uploadFile无反应和使用多图上传
网上有的说是bind:after-read="afterRead"的命名问题不支持-,但是我这儿执行了console.log("file",file);证明函数运行了。后来发现是multiple="true"原因开启了多图上传,如果是多图上传的话file就是数组了
26 2

热门文章

最新文章