美文网首页
小程序入门(1)

小程序入门(1)

作者: 风之化身呀 | 来源:发表于2018-05-31 15:24 被阅读35次

    基本知识

    1、三要素

    wxml , wxss , js 分别对应H5开发中的 html,css,js;另外多一个小程序特有的app.json文件,这仅是一个配置文件。每个页面都是由这四种文件组成

    • 1.1、 WXML 模板
      1、常用的标签:view , text , button , image , form , input 等,更多组件
      2、数据绑定:{{...}}
     <text class="{{'share-price-text ' + (gains < 0 ? 'share-loss' : 'share-gain')}}">{{price}}</text>
    

    3、DOM控制:wx:if 更多控制

    <button wx:if="{{!hasUserInfo && canIUse}}"> 获取头像昵称 </button>
    

    4、事件绑定 更多事件

    <button bindtap="clickMe">点击我</button>
    
    • 1.2、 WXSS
      1、新增了尺寸单位。在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼。且仅支持部分css。支持的CSS情况
      2、写法上跟css一样
      3、内联样式:静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。(个人认为动态添加class还好些,尽量不用内联样式)
    <view style="color:{{color}};" />
    

    4、class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。

    <view class="normal_view" />
    
    • 1.3、JS
      1、分为全局app.js (名字固定,不能改)和各页面page.js(名字随意,但要和全局app.json中pages的配置一致)
      2、处理事件
    // page.js写法
    Page({
      clickMe: function() {
        this.setData({ msg: "Hello World" })     // 设置状态数据,供wxml中使用
      }
    })
    // app.js写法
    App({
      clickMe: function() {
        this.setData({ msg: "Hello World" })
      }
    })
    

    3、app.js

    App({
      onLaunch: function () {
        // 小程序启动之后 触发
      },
     globalData:{}
    })
    

    4、page.js

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

    5、微信原生API(均已wx开头)

    // 1、网络类,如:
    wx.request({
      url: 'test.php', //仅为示例,并非真实的接口地址
      data: {
         x: '' ,
         y: ''
      },
      header: {
          'content-type': 'application/json' // 默认值
      },
      success: function(res) {
        console.log(res.data)
      }
    })
    // 2、数据存储类(缓存类,类似localStorage。每个方法都有同步和异步两种调用形式,本地数据存储的大小限制为 10MB)
    // 异步调用
    wx.setStorage({
      key:"key",
      data:"value"
    })
    // 同步调用
    try {
        wx.setStorageSync('key', 'value')     
    } catch (e) {    
    }
    
    wx.getStorage({
      key: 'key',
      success: function(res) {
          console.log(res.data)
      } 
    })
    
    try {
      var value = wx.getStorageSync('key')
      if (value) {
          // Do something with return value
      }
    } catch (e) {
      // Do something when catch error
    }
    
    wx.removeStorage({
      key: 'key',
      success: function(res) {
        console.log(res.data)
      } 
    })
    
    try {
      wx.removeStorageSync('key')
    } catch (e) {
      // Do something when catch error
    }
    
    wx.clearStorage()
    
    try {
        wx.clearStorageSync()
    } catch(e) {
      // Do something when catch error
    }
    // 3、界面类(显示一些界面组件,如toast,loading,modal等,有3个特殊的,wx.redirectTo & wx.navigateTo & wx.switchTab)
    // toast
    wx.showToast({
      title: '成功',
      icon: 'success',
      duration: 2000
    })
    // wx.navigateTo,保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面
    wx.navigateTo({
      url: 'test?id=1'
    })
    // wx.redirectTo,关闭当前页面,跳转到应用内的某个页面。
    wx.redirectTo({
      url: 'test?id=1'
    })
    // wx.switchTab,跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
    
    {
      "tabBar": {
        "list": [{
          "pagePath": "index",
          "text": "首页"
        },{
          "pagePath": "other",
          "text": "其他"
        }]
      }
    }
    wx.switchTab({
      url: '/index'
    })
    // 4、媒体类(上传、预览图片;录音、播放语音等)
    // 5、文件类(保存文件等)
    // 6、位置类
    wx.getLocation({
      type: 'wgs84',
      success: function(res) {
        var latitude = res.latitude
        var longitude = res.longitude
        var speed = res.speed
        var accuracy = res.accuracy
      }
    })
    // 7、设备类(获取网络状态、系统信息等)
    wx.getNetworkType({
      success: function(res) {
        // 返回网络类型, 有效值:
        // wifi/2g/3g/4g/unknown(Android下不常见的网络类型)/none(无网络)
        var networkType = res.networkType
      }
    })
    // 8、WXML查询节点 APIz(类似document.querySelector())
    Page({
      getFields: function(){
        wx.createSelectorQuery().select('#the-id').fields({
          dataset: true,
          size: true,
          scrollOffset: true,
          properties: ['scrollX', 'scrollY']
        }, function(res){
          res.dataset    // 节点的dataset
          res.width      // 节点的宽度
          res.height     // 节点的高度
          res.scrollLeft // 节点的水平滚动位置
          res.scrollTop  // 节点的竖直滚动位置
          res.scrollX    // 节点 scroll-x 属性的当前值
          res.scrollY    // 节点 scroll-y 属性的当前值
        }).exec()
      }
    })
    

    相关文章

      网友评论

          本文标题:小程序入门(1)

          本文链接:https://www.haomeiwen.com/subject/yokqsftx.html