学习微信小程序开发第一个示例

举报
zekelove 发表于 2021/08/11 23:34:26 2021/08/11
【摘要】 在我们学完HTML、CSS、Javascript的相关基础知识后,接着又学习HTML5的开发,虽然有部分类似,但还是增加了一些新的标签、属性、API等知识点需要我们去学习。目前我们的生活已经被微信占据,当然也离不开微信里面的各种小程序应用,如:购物,交通出行,医疗,生活缴费,大数据行程码等等。作为技术的我们要不断学习充实自己,提升自己,必然也要学习微信小程序的开发。

在我们学完HTML、CSS、Javascript的相关基础知识后,接着又学习HTML5的开发,虽然有部分类似,但还是增加了一些新的标签、属性、API等知识点需要我们去学习。目前我们的生活已经被微信占据,当然也离不开微信里面的各种小程序应用,如:购物,交通出行,医疗,生活缴费,大数据行程码等等。作为技术的我们要不断学习充实自己,提升自己,必然也要学习微信小程序的开发,这样才能不被社会淘汰,才能有立足之地。

注册账号

打开链接:https://mp.weixin.qq.com/wxopen/waregister?action=step1

如果没有账号,填入相关信息,点击“注册”;如果有账号,直接登录即可。

有了账号登录以后我们就可以对微信的小程序进行管理,维护和开发,这篇文章主要来学习小程序的开发。

开发工具

账号准备好以后,微信小程序的开发要先安装微信开发者工具,根据自己的系统选择对应版本进行安装。

下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

安装完成以后,打开 微信开发者工具,如下图:

登录小程序后台管理,如下图在“开发管理”里面找到 AppID(小程序ID),填入上图红色框中,点击确定就可以创建一个默认模板的小程序了。

创建好的小程序包含一个 index 和 logs 页面,还有其它一些启动,配置,公共样式等文件,如下图:

目录结构

页面文件夹(pages),创建一个页面(如:login)主要包含四个文件(login.js,login.json,login.wxml,login.wxss)

xx.js:用来编写页面处理逻辑,方法,事件等脚本。

xx.json:用来配置当前页面的一些属性(标题,颜色等)。

xx.wxml:用来编写页面结构,使用小程序组件。

xx.wxss:用来编写页面样式。

根路径包含的文件(app.js,app.json,app.wxss)

app.js:编写小程序启动时的一些处理逻辑。

app.json:编写小程序的公共配置属性(页面,顶部导航,颜色等)。

app.wxss:编写小程序的公共样式内容。

小程序的全局配置和页面配置就不在这里一一介绍了,具体内容需要去学习官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/config.html

小程序组件

开发小程序我们要严格使用小程序自己的组件,HTML的部分标签在这里是不能使用。

视图容器:view(视图容器,比较常用类似 div),swiper(滑块,可以用来实现轮播图、水平垂直滑动),scroll-view(可滚动视图区域,可以用来水平或垂直的滚动区域)等。

表单组件:button(按钮),checkbox(复选框),editor(富文本编辑器),form(表单),input(输入框),label(标签),radio(单选框),slider(滑块选择器),switch(开关选择器),textarea(多文本)等。

基础组件:text(文本框),icon(图标),progress(进度条),rich-text(富文本)。

导航:navigator(页面链接,类似 <a> 标签)。

媒体:audio(音频),video(视频),image(图片),camera(系统相机,实现扫二维码功能)等。

画布:canvas(画图,用来实现绘图和动画)。

地图:map(地图)。

常用组件示例图如下:

常用组件示例代码如下:

<!--pages/demo/demo.wxml-->
<view>
  <view class="view-title">视图容器</view>
  <text>swiper</text>
  <swiper indicator-dots autoplay>
    <swiper-item><image src="/static/images/1.jpg" alt="" ></image></swiper-item>
    <swiper-item><image src="/static/images/2.jpg" alt="" ></image></swiper-item>
    <swiper-item><image src="/static/images/3.jpg" alt="" ></image></swiper-item>
  </swiper>
  <text>scroll-view</text>
  <scroll-view class="scroll-view-box" scroll-y>
    <view>scroll-1</view>
    <view>scroll-2</view>
    <view>scroll-3</view>
    <view>scroll-4</view>
    <view>scroll-5</view>
  </scroll-view>
</view>
<view class="view-form">
  <view class="view-title">表单组件</view>
  <view class="form-item">
    <button type="primary">按钮</button>
  </view>
  <view class="form-item">
    <checkbox value="1" checked="true">足球</checkbox>
    <checkbox value="2">篮球</checkbox>
    <checkbox value="3" disabled="true">羽毛球</checkbox>
  </view>
  <view class="form-item">
    <label for="txtName">用户名</label>
    <input id="txtName" type="text" auto-focus placeholder="请输入用户名" />
  </view>
  <view class="form-item">
    <radio value="1">男</radio>
    <radio value="2">女</radio>   
  </view>
  <view class="form-item">
    <label for="">开关</label>
    <switch checked="true"></switch>
  </view>
  <view class="form-item">
    <slider step="10" min="0" max="100" value="50" show-value="true"></slider>
  </view>
</view>
<view>
  <view class="view-title">基础组件</view>
  <view>
    <icon type="info" size="64"></icon>
  </view>
  <view>
    <progress percent="50" show-info></progress>
  </view>
  <view>
    <rich-text></rich-text>
  </view>
</view>
<view>
  <view class="view-title">导航</view>
  <view>
    <navigator url="www.baidu.com">百度链接</navigator>
  </view>
</view>
<view>
  <view class="view-title">媒体</view>
  <view>
    <audio controls src="/static/audio/Monody.mp3"></audio>
  </view>
  <view>
    <video src=""></video>
  </view>
</view>
<view>
  <view class="view-title">地图</view>
  <map name="mapBox"></map>
</view>

 小程序的组件,组件的属性,方法的使用可以参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/

框架API

小程序提供的API有:基础,路由,跳转,转发,界面,网络,支付,画布,媒体,位置,文件,数据缓存,数据分析,开发接口等。

授权登录:wx.login(Object object)

获取用户信息:wx.getUserInfo(Object object)

跳转页面:wx.redirectTo(Object object),wx.navigateTo(Object object)

消息提示框:wx.showToast(Object object)

发起请求:wx.request(Object object)

数据缓存:wx.setStorage(Object object),wx.getStorage(Object object)  需注意正确的用法

小程序提供的API用法可参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/

登录页面示例

pages/login/login.wxml

<!--pages/login/login.wxml-->
<view class="login-box">
  <view class="login-row">
    <label for="">用户名</label>
    <input type="text" name="txtName" id="txtName" bindinput="bindKeyInput" placeholder="请输入用户名" />
  </view>
  <view class="login-row">
    <label for="">密码</label>
    <input type="password" name="txtPwd" id="txtPwd" bindinput="bindKeyInput" placeholder="请输入密码" />
  </view>
  <view class="login-row">
    <button class="login" type="primary" bindtap="commitLogin">登录</button>
  </view>
</view>

pages/login/login.js

// pages/login/login.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    txtName: "",
    txtPwd: "",
    userInfo: []
  },
  bindKeyInput: function (e) {
    //根据文本框id值绑定输入值
    this.setData({
      [e.target.id]: e.detail.value
    });
  },
  commitLogin: function() {
    // 登录请求接口
    this.initData();
  },
  initData: function(){
    // 模拟返回值
    this.data.userInfo = {
      userName: this.data.txtName,
      userPwd: this.data.txtPwd
    }
    // 本地缓存数据
    wx.setStorage({
      key: "userInfo",
      data: this.data.userInfo
    });
  },
  login: function() {
    // 登录请求后台接口
    wx.request({
      url: 'http://localhost:3000/api/user/login', //请求的接口地址
      data: {
        userName: this.data.txtName,
        userPwd: this.data.txtName
      },
      method: "POST",
      success (res) {
        // 获取返回值 res.data
        // 模拟返回值
        this.data.userInfo = {
          userName: this.data.txtName,
          userPwd: this.data.txtName
        }
        // 本地缓存数据
        wx.setStorage("userInfo",this.data.userInfo);
      }
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取缓存中的值
    let _this = this;
    wx.getStorage({
      key: "userInfo",
      success (res) {
        _this.data.userInfo = res.data;
        console.log(_this.data.userInfo)
      }
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

注意事项

在使用本地数据缓存的时候,要注意 wx.setStorage(Object object),wx.getStorage(Object object),wx.setStorageSync(string key,any data),wx.getStorageSync(string key) 的正确用法。

在请求本地接口的时候,小程序是不允许使用本地请求,必须使用指定的域名进行网络通信,具体说明参考:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html#1.%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9F%9F%E5%90%8D%E9%85%8D%E7%BD%AE

在请求本地接口的时候可以使用工具 uTools,在工具里面搜索内网穿透并安装此插件,具体用法查看官网帮助文档:http://u.tools/docs/guide/about-uTools.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。