• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序三个实例带你入门

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

微信小程序三个实例带你入门

前置说明

  1. 新建微信小程序项目时,默认使用云开发服务(不需要云开发可以关闭)

  1. 项目目录及文件含义查看微信官方文档

  2. app.json部分重点说明

开发一个默认页面

我们新建componet文件夹,在componet中新建submit文件夹,最后新建名为submit的page页,结果如下。

然后在app.json中配置一个默认页面“componet/submit/submit"。

最后在submit.js中配置加载数据,在submit.json中配置导航栏及标签栏数据,在wxml配置页面结构,在wxss中配置结构样式,ctrl+s或直接保存运行,结果如下。

开发一个数据动态变化的单页面(以用户授权为例)

效果图展示:

讲解:

我们可以在onload加载方法中或者在任意一个自定义的绑定函数或者监听函数中通过this.setData({key:value})的形式对数据重新赋值,之后该数据就会动态呈现在页面中,本实例中奖获取到的userInfo对象数据显示在单个页面中,源码展示。
js源码:


const app = getApp()
Page({
  data: {
    //判断小程序的API,回调,参数,组件等是否在当前版本可用。
    canIUse: wx.canIUse(\'button.open-type.getUserInfo\'),
    isHide: false,
    userInfo:{},
    haveUser:false
  },
  onLoad: function () {
    var that = this;
    // 查看是否授权
    wx.getSetting({
      success: function (res) {
        if (res.authSetting[\'scope.userInfo\']) {
          wx.getUserInfo({
            success: function (res) {
           
              wx.login({
                success: res => {
                  // 获取到用户的 code 之后:res.code
                  console.log("用户的code:" + res.code);
                  // 可以传给后台,再经过解析获取用户的 openid
                  // 或者可以直接使用微信的提供的接口直接获取 openid ,方法如下:
                  // wx.request({
                  //     // 自行补上自己的 APPID 和 SECRET
                  //     url: \'https://api.weixin.qq.com/sns/jscode2session?appid=自己的APPID&secret=自己的SECRET&js_code=\' + res.code + \'&grant_type=authorization_code\',
                  //     success: res => {
                  //         // 获取到用户的 openid
                  //         console.log("用户的openid:" + res.data.openid);
                  //     }
                  // });
                }
              });
            }
          
          });
      
        } else {
          // 用户没有授权
          // 改变 isHide 的值,显示授权页面
          that.setData({
            isHide: true
          });
        }
      }
    });
  },
  bindGetUserInfo: function (e) {
    if (e.detail.userInfo) {
      //用户按了允许授权按钮
      var that = this;
      // 获取到用户的信息了,打印到控制台上看下
      app.globalData.userInfo = e.detail.userInfo;
      //授权成功后,通过改变 isHide 的值,让实现页面显示出来,把授权页面隐藏起来
      that.setData({
        isHide: false,
        haveUser:true,
        userInfo:e.detail.userInfo
      });
   
    } else {
      //用户按了拒绝按钮
      wx.showModal({
        title: \'警告\',
        content: \'您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!\',
        showCancel: false,
        confirmText: \'返回授权\',
        success: function (res) {
          // 用户没有授权成功,不需要改变 isHide 的值
          if (res.confirm) {
            console.log(\'用户点击了“返回授权”\');
          }
        }
      });
    }
  }
})

需要提示点:this在上述函数中仅在最外层可用,若函数中嵌套函数,则嵌套函数中的this表示的是该嵌套函数,解决办法:声明var that = this,使用that代表app自身。

json源码:


{
  "navigationBarTitleText": "登录"
}


wxss源码:


 
.header {
    margin: 90rpx 0 90rpx 50rpx;
    border-bottom: 1px solid #ccc;
    text-align: center;
    width: 650rpx;
    height: 300rpx;
    line-height: 450rpx;
}
 
.header image {
    width: 200rpx;
    height: 200rpx;
}
 
.content {
    margin-left: 50rpx;
    margin-bottom: 90rpx;
}
 /**index.wxss**/
.userinfo {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  
  .userinfo-avatar {
    width: 128rpx;
    height: 128rpx;
    margin: 20rpx;
    border-radius: 50%;
  }
  
  .userinfo-nickname {
    color: #aaa;
  }
  
  .usermotto {
    margin-top: 200px;
  }
.content text {
    display: block;
    color: #9d9d9d;
    margin-top: 40rpx;
}
 
.bottom {
    border-radius: 80rpx;
    margin: 70rpx 50rpx;
    font-size: 35rpx;
}


wxml源码:


<view wx:if="{{isHide}}">
    <view wx:if="{{canIUse}}" >
        <view class=\'header\'>
            <image src=\'/images/template/1.jpg\'></image>
        </view>
 
        <view class=\'content\'>
            <view>申请获取以下权限</view>
            <text>获得你的公开信息(昵称,头像等)</text>
        </view>
 
        <button class=\'bottom\' type=\'primary\' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
            授权登录
        </button>
    </view>
    <view wx:else>请升级微信版本</view>
</view>
<view class="userinfo" wx:if="{{haveUser}}">
    <block >
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
</view>


在wxml中有很多标签都可以绑定事件(查看api文档)即可,我经常使用bindtap,catchsubmit,catchreset这些绑定属性实现绑定

开发一个页面间数据传递的实例

我们都知道http请求包括:post get head patch options put delete trace connect
常用的有post get,在微信小程序中对应实现方式是全局 url链接,这两个我都介绍一下。

一 URL传递。
我们可以使用navigator(类似html中的a标签)实现跳转,跳转时可携带参数。我们也可以通过绑定事件中使用wx.navigatorto等实现跳转,绑定请自行查看api文档。参数可以使用form实现,这里不牵扯太多,自行查看文档

URL传递源码附上:
login.wxml


<!--login.wxml-->
<view class="container">
 <!-- 使用navigator组件 -->
 <navigator url="pages/index/index?title=我是传递值">传递</navigator>
</view>

index.js

// pages/index/index.js
Page({
 
 data: {
 title:\'\'
 },
 
 onLoad: function (options) {
 console.log(options) //打印options,可以看到title的值可以获取到
 this.setData({
 title:options.title //为页面中title赋值
 })
 },
})

index.html

<view class=\'container\'>
 {{title}}
</view>

二 全局传递

全局保存的数据需要满足符合整个小程序都需要才可以,比如一个视频播放小程序,用户信息是需要的,而一个视频信息是不需要保存的,否则整个小程序全局所占缓存会快速升高,严重造成宕机。不多说了,源码附上。
app.js

//app.js
App({
 globalData: {}
})

index.wxml

<!--index.wxml-->
<!-- 点击触发go_Demo函数 -->
<view class="container" bindtap=\'go_Demo\'>
 传递
</view>

index.js

//index.js
//获取应用实例
const app = getApp()
Page({
 data: {
 title:\'参数传递\'
 },
 go_Demo: function() {
 app.globalData.title = this.data.title
 wx.navigateTo({
 url: \'../demo/demo\',
 })
 }
})

demo.js


// pages/demo/demo.js
//获取应用实例
const app = getApp()
Page({
 data: {
 title:\'\'
 },
 onLoad: function (options) {
 console.log(app.globalData.title) //打印options,可以看到title的值可以获取到
 this.setData({
 title: app.globalData.title //为页面中title赋值
 })
 },
})


更多微信小程序相关查看我的程序员提升专栏,有需要请评论区留言。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序实例源码发布时间:2022-07-18
下一篇:
微信小程序实例源码大全 - 浙江百牛信息技术发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap