《微信小程序开发入门精要》——第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 管理小程序的版本

相关文章
|
11月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
11月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
984 8
|
11月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
887 1
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
4783 7
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
2688 7
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
5264 1
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
4176 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。

热门文章

最新文章