• day86 微信小程序介绍


    小程序介绍

    ​ 微信小程序是腾讯于2017年1月9日推出的一种不需要下载安装即可在微信平台上使用的应用,主要提供给企业、政府、媒体、其他组织或个人的开发者在微信平台上提供服务。
    ​ 微信小程序和微信的原生功能应用在本质上是一样的——他们都是Web App。Web App就是一种通过H5页面技术实现的,和Native App的功能和界面几乎一样的手机App形态。很多商家和企业为了节省技术人员和资金的投入,都会选择使用Web App制作工具,免费快速制作自己的Web App

    微信小程序的优势

    1、微信有海量用户,而且粘性很高,在微信里开发产品更容易触达用户
    2、推广app或公众号成本太高
    3、开发适配成本低
    4、容易小规模试错,然后快速迭代
    5、跨平台

    开发环境

    [微信公众平台][https://mp.weixin.qq.com/wxamp/home/guide?token=975893544&lang=zh_CN] 注册登录

    开发工具深入了解

    分四块

    1579245841735

    工具栏

    1579245910206

    1579245972993

    小程序结构目录

    微信小程序与传统web相比

    全局配置和页面配置

    全局配置 app.json

    [全局配置官方文档][https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html]

    {
      "pages": [
        "pages/test/test",
        "pages/test2/test2",新建页面
        "pages/index/index",
        "pages/logs/logs"
        
      ],
      "window": {
        "backgroundTextStyle": "dark",下拉加载颜色
        "navigationBarBackgroundColor": "#000000",  顶端颜色 
         "navigationBarTitleText": "jason is sb",顶端内容
        "navigationBarTextStyle": "white",顶端字体内容
        "enablePullDownRefresh":true 是否下拉
      },
      "tabBar": {底部导航栏
        "color": "#FF0000",没有被选择时的颜色
        "selectedColor": "#000000",被选择时的颜色
        "backgroundColor": "#FFB6C1",底部导航栏的颜色
        "borderStyle": "white",底部导航栏边框的颜色
    
         "list":[
          {
            "pagePath": "pages/test/test",页面路径
            "text": "这是test",
            "iconPath": "images/icon1.png",没有被点击时图片
            "selectedIconPath": "images/icon1-active.png"被点击时的图片
          },
          {
            "pagePath": "pages/test2/test2",
            "text": "这是test2",
            "iconPath": "images/icon2.png",
            "selectedIconPath": "images/icon2-active.png"
          }
        ]
      },
      "style": "v2",
      "sitemapLocation": "sitemap.json"
    }
    

    页面配置

    也可以叫局部配置。页面配置了就优先页面配置的

    [页面配置官方文档][https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/page.html]

    {
      "usingComponents": {},
      "navigationBarBackgroundColor": "#008B8B",
      "navigationBarTitleText": "jason is xsb",
      "navigationBarTextStyle": "white"
    }
    

    页面数据渲染

    test.wxml

    <!--pages/test/test.wxml-->
    <!-- <text>pages/test/test.wxml</text> -->
    <view id="age-{{num}}">
    {{name}} is {{a}}
    {{name}} is {{num}}
    
    </view>
    
    <view>//不要直接写 checked="false",其计算结果是一个字符串
    <checkbox checked="{{false}}">选我</checkbox>
    <checkbox checked="true">选我</checkbox>
    <checkbox checked="{{flag}}">选我</checkbox>
    </view>
    
    <view>{{num*num1}}</view>
    <view>{{num}} * {{num1}}</view>
    <view>{{name + a}}</view>
    <view>{{name}}+{{a}}</view>
    
    <view wx:for="{{list_name}}" wx:key="index">{{index}}:{{item.name}}--->{{item.like}}</view>
    //item.name相当于字典key  item.like相当于字段value  index相当于索引
    <view wx:for="{{list_name}}" wx:for-item="val" wx:for-index="key" wx:key="index">{{key}}:{{val.name}}--->{{val.like}}</view>
    
    <block  wx:for="{{list_name}}" wx:key="index">{{index}}:{{item.name}}--->{{item.like}}</block>
    
    <view wx:if="{{num<5}}"> niubi</view>
    
    <view wx:if="{{flag}}">True</view>
    

    test.js

    data: {
          a:"sb",
          name:"tank",
          num:1,
          num1:2,
          flag:true,
          list_name:[{"name":"tank","like":"吃"},
          {'name':"jason","like":"喝"},
          {"name":"兵哥","like":"拉"}],
          num_a:1
    
      },
    

    双线程模型和生命周期

    1579437098340

    app.js的生命周期

     1 在注册app的时候,可以判断小程序的进入场景
     2 我们可以在执行通过生命周期函数,做一些数据请求
     3 可以在app中设置一个全局对象,让所有页面都能使用
    //app.js
    App({
      onLaunch:function(){//小程序初始化完成,会触发onLaunch
        console.log("我是onlaunch")
      },
      onShow: function (e) {//小程序启动或从后台进入前台,会触发onShow,进入前台的scene不同
        console.log(e)
        console.log("我是onshow")
      },
      onHide: function () {//从前台进入后台
        console.log("我是onhide")
      },
      onError: function (msg) {//发生脚本错误,或者api调用失败了,会触发onError,并带上错误信息
        console.log("我是onerror")
      },
      globalData: {
        userInfo: null
      }
    })
    

    test.js

    /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        console.log("我是onLoad")
      },
    
      /**
       * 生命周期函数--监听页面初次渲染完成
       */
      onReady: function () {
        console.log("我是onReady")
      },
    
      /**
       * 生命周期函数--监听页面显示
       */
      onShow: function () {
        console.log("我是onShow")
      },
    
      /**
       * 生命周期函数--监听页面隐藏
       */
      onHide: function () {
        console.log("我是onHide")
      },
    
      /**
       * 生命周期函数--监听页面卸载
       */
      onUnload: function () {
        console.log("我是onUnload")
      },
    
      /**
       * 页面相关事件处理函数--监听用户下拉动作
       */
      onPullDownRefresh: function () {
        console.log("我是onPullDownRefresh")
      },
    
      /**
       * 页面上拉触底事件的处理函数
       */
      onReachBottom: function () {
        console.log("我是 onReachBottom")
      },
    
      /**
       * 用户点击右上角分享
       */
      onShareAppMessage: function () {
      }
    })
    

    事件绑定

    1580267991853

    1580268592538

    test.wxml

    <button bind:tap="click1" data-name="sb" id="sdsd" class="ss">按钮</button> 
    <!-- data-name用来传值给事件函数 data-是关键字 name是变量名 -->
    <view class="outter" bindtap="click2" data-name="tank">外面
    <view class="inner" bindtap="click3" data-name="jason">里面</view>
    </view>
    
    <view>{{num_a}}</view>
    <button bind:tap="jia">加</button>
    

    test.js

    click1:function(e){
        console.log(e)
        console.log(e.currentTarget.dataset.name)//currentTarget是当前事件标签的传参  target是当前点击的标签的传参
        console.log("你点我了")
      },
    
      click2:function(e){
        console.log(e)
        console.log("在外面")
      },
    
      click3: function (e) {
        console.log(e)
        console.log("在里面")
      },
    
      jia:function(){
        var that=this
    
        that.setData({//用setdata对参数进行改变  前端页面才会实时更新  如果不用setdata而直接进行改变 前端页面是不会发生变化的
          num_a:that.data.num_a+1
        })
      }
    })
    

    test.wxss

    .outter{
      400rpx;
      height: 400rpx;
      background-color: yellow
    }
    
    .inner{
       200rpx;
      height: 200rpx;
      background-color: red
    }
    

    事件冒泡

    test.wxml

    <view class="outter" capture-bind:tap="click4" bind:tap="click6">外面
    <view class="inner" capture-bind:tap="click5" bind:tap="click7">里面
        <!-- 先捕获后冒泡
     捕获是从外到里  冒泡是从里到外
    capture-bind:捕获
    bind:冒泡
    capture-catch:阻止捕获
    catch:阻止冒泡-->
        </view>
    </view>
    

    test.js

      click4:function(e){
        console.log(e)
        console.log("外面 捕获")
      },
    
      click5:function(e){
        console.log(e)
        console.log("里面 捕获")
      },
    
      click6:function(e){
        console.log(e)
        console.log("外面 冒泡")
      },
    
      click7:function(e){
        console.log(e)
        console.log("里面 冒泡")
      }
    
  • 相关阅读:
    PMP考试结束了,期待结果中。。。
    Windows Server 2008安装及配置Terminal Server
    CMMI分段式级别的易理解版本
    c# RoundUp函数
    管理学中的知名定律之阿尔布莱特法则
    Risk Categories
    如何躲开“责任”的逆袭
    一次失败的聚会
    【老孙随笔】属相影响你的职业前途吗?
    项目经理的超越(三)人际优先,做事上的超越
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/12392179.html
Copyright © 2020-2023  润新知