zoukankan      html  css  js  c++  java
  • 小程序开发入门教程

    一、下载安装小程序开发工具

      登录微信公众平台:https://mp.weixin.qq.com/

      进入小程序开发文档

      选择工具选项

      下载对应平台的开发工具,直接链接:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

      安装小程序开发工具

     

    、创建项目

       项目创建流程

       此时,开发工具将自动帮我们创建一个基础项目,开发工具操作面板结构如下:

      整个界面大致分为A、B、C、D、E四个功能区域

      A:模拟器展示

      B:项目文件资源管理

      C:代码编写区域

      D:代码调试面板,与谷歌浏览器的开发者工具很相似。

      E:项目配置

     三、项目结构

      项目中共有四种文件类型,对应功能如下:

    1. .json 后缀的 JSON 配置文件
    2. .wxml 后缀的 WXML 模板文件
    3. .wxss 后缀的 WXSS 样式文件
    4. .js 后缀的 JS 脚本逻辑文件

       项目根路径下的app.js文件为项目启动交互逻辑文件,app.json文件为项目的全局配置文件。

      pages目录下的每个子目录对应界面中的一个页面。

      每个页面目录下的json文件是各个页面的配置文件。

     

       数据传递到页面,使用双大括号{{}}

      js文件的结构如下

    Page({
      data: { // 参与页面渲染的数据
        logs: []
      },
      onLoad: function () {
        // 页面渲染后 执行
      }
    })

    四、代码编写

    分享功能以及网络请求

      index.wxml

    <!--index.wxml-->
    <view class="container">
      <text class="userinfo-nickname">{{templateInfo.code}}</text>
      <view class="userinfo">
        <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
        <block wx:else>
          <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
          <text class="userinfo-nickname">{{userInfo.nickName}}</text>
        </block>
      </view>
      <view class="usermotto">
        <text class="user-motto">{{motto}}</text>
      </view>
      <view>
      <button id="shareCloseBtn" type='{{shareBtnInfo.type}}' bindtap="onShareCloseBtnClick">{{shareBtnInfo.text}}</button>
      <button id="shareBtn" style='margin-top: 50px;' type='primary' open-type='share'> 分享 </button>
      </view>
    </view> 

       index.js

    //index.js
    //获取应用实例
    const app = getApp()
    
    Page({
      data: {
        motto: 'Hello World',
        shareBtnInfo:{
          text: '关闭分享',
          flag: true,
          type: 'warn'
        },
        templateInfo:{
          code:''
        },
        userInfo: {},
        hasUserInfo: false,
        canIUse: wx.canIUse('button.open-type.getUserInfo')
      },
      //事件处理函数
      bindViewTap: function() {
        wx.navigateTo({
          url: '../logs/logs'
        })
      },
      onLoad: function () {
        if (app.globalData.userInfo) {
          this.setData({
            userInfo: app.globalData.userInfo,
            hasUserInfo: true
          })
        } else if (this.data.canIUse){
          // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
          // 所以此处加入 callback 以防止这种情况
          app.userInfoReadyCallback = res => {
            this.setData({
              userInfo: res.userInfo,
              hasUserInfo: true
            })
          }
        } else {
          // 在没有 open-type=getUserInfo 版本的兼容处理
          wx.getUserInfo({
            success: res => {
              app.globalData.userInfo = res.userInfo
              this.setData({
                userInfo: res.userInfo,
                hasUserInfo: true
              })
            }
          })
        }
        /**
         * 网络请求
         */
        wx.request({
          url: 'http://60.255.160.15:8070/template/getDetailById', //仅为示例,并非真实的接口地址
          method:'GET',
          data: {
            id: '1'
          },
          success: res => {
            console.log(res.data)
            if(!res.data){
              this.setData({
                templateInfo: { code: '获取到code发生错误' }
              })
            }
            const code = res.data.code ;
            if (code == 20000){
              const data = res.data.data ;
              if(data){
                this.setData({
                  templateInfo: {code:data.code}
                })
              }
            }else{
              this.setData({
                templateInfo: { code: '未获取到code' }
              })
            }
          }
        })
      },
      getUserInfo: function(e) {
        console.log(e)
        app.globalData.userInfo = e.detail.userInfo
        this.setData({
          userInfo: e.detail.userInfo,
          hasUserInfo: true
        })
      },
      /**
       * 关闭/打开分享按钮点击事件
       */
      onShareCloseBtnClick : function(){
        if (this.data.shareBtnInfo.flag){
          wx.hideShareMenu()
          this.setData({ shareBtnInfo:{
            text: '打开分享',
            flag : false,
            type:'primary'
          }})
        }else{
          wx.showShareMenu({
            withShareTicket: true
          })
          this.setData({
            shareBtnInfo: {
              text: '关闭分享',
              flag: true,
              type: 'warn'
            }
          })
        }
      },
      /**
       * 分享事件处理
       */
      onShareAppMessage: function (res) {
        if (res.from === 'button') {
          // 来自页面内转发按钮
          console.log(res.target)
          
        }
        return {
          title: '自定义转发标题',
          path: '/page/user?id=123',
          success: function (res) {
            // 转发成功
          },
          fail: function (res) {
            // 转发失败
          }
        }
      }
    })

       效果如下

     

     

     

     

     

     

     

     

  • 相关阅读:
    美赛 LaTeX 急救指南
    切比雪夫定理的证明
    【持续更新】一个简洁、易用的美赛 LaTeX 模板: easymcm
    一个形式较精细的 Strling 公式的证明
    数学分析的主线,高等数学的一切:连续函数与“有理”分析
    一个自己稍作修改了的美赛论文 LaTeX 模板
    有关几个特殊命题的证明
    实数系与实数定理(下)
    实数系与实数定理(上)
    Office365完整离线安装包下载及自定义安装教程
  • 原文地址:https://www.cnblogs.com/FlyingPuPu/p/8471721.html
Copyright © 2011-2022 走看看