微信小程序 (1) (rpx) + ( 改变导航栏颜色 ) + ( 嵌套样式 ) + ( swiper轮播图组件 ) + ( 页面的生命周期 ) + ( wx:if="" ) + (

注意事项:

  • 只有标签包裹的文本可以在真机上长按选中
  • 可以嵌套,里面有转义字符,则解析成转义字符,而不是字符串。
  • 小程序,默认的顶层标签是 ,可以用其修改全局样式等
  • 如果一个标签的属性值是boolean值,不能直接用字符串false表示 布尔的false,因为false是一个字符串,js转成布尔值后是true ---------- 所以要用双大括号包裹false,表示是微信小程序中的语法
  • condition: 是状态的意思
  • launch: 是发射的意思
  • defer: 是延迟的意思
  • grid: 是格子的意思
  • category: 是类型的意思
  • pannel: 是面板的意思
  • 在app.json中的路径,最前面用绝对路径时,不要加斜杠!!!!!!!!
微信小程序 (1) (rpx) + ( 改变导航栏颜色 ) + ( 嵌套样式 ) + ( swiper轮播图组件 ) + ( 页面的生命周期 ) + ( wx:if=
效果图

(1) rpx 相对像素值

在iPhone6上,1rpx=1物理像素=0.5px。

因为设计师标注的尺寸一般是物理分辨率。所以如果以iphone6为标准出设计稿的话,那么我们就可以不需要经过换算直接标准rpx。


.banner {
    width:200rpx;
    height:200rpx;
    border-radius:50%
}

(2) 改变导航栏颜色

  • 如果想单独改变某个页面的导航栏颜色,需要在单个页面文件夹中添加.json文件,并且不能再用window
app.json ( 所有页面 )



{
    "pages":[
        "pages/welcome/welcome"     // 注册页面
    ],
    "window": {
        "navigationBarBackgroundColor": "#b3d4db"     // 设置导航栏背景颜色
    }
}

----------------------------------------------------------------------------

posts.json ( 单个页面 )


{
     "navigationBarBackgroundColor":"#000"    // 配置单个导航栏的背景,记得没有window
     "navigationBarTitleText":"主页"    // 配置导航栏标题文字
}

(3) 嵌套样式



     hellow, 十月
    

(4) swiper轮播图组件



    
        
             
        
         
             
        
         
             
        
    
    








https://www.cnblogs.com/nosqlcoco/p/wxsmallcycle.html

小程序的生命周期:

  1. 应用生命周期
  2. 页面生命周期
  3. 应用生命周期影响页面生命周期

应用生命周期:

  1. 首次打开小程序,触发onLaunch事件 ( launch: 是发射的意思 ),( 全局只触发一次 )
  2. 小程序初始化完成后,触发 onShow事件,监听显示
  3. 小程序从前台进入后台,触发 onHide事件
微信小程序 (1) (rpx) + ( 改变导航栏颜色 ) + ( 嵌套样式 ) + ( swiper轮播图组件 ) + ( 页面的生命周期 ) + ( wx:if=
应用生命周期

页面生命周期:

  1. 小程序注册完成后,加载页面,触发onLoad方法。
  2. 页面载入后触发onShow方法,显示页面。
  3. 首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只触发一次。
  4. 当小程序后台运行或跳转到其他页面时,触发onHide方法。
  5. 当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。
  6. 当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload
微信小程序 (1) (rpx) + ( 改变导航栏颜色 ) + ( 嵌套样式 ) + ( swiper轮播图组件 ) + ( 页面的生命周期 ) + ( wx:if=
页面生命周期

应用生命周期影响页面生命周期

  • 小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
  • 当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
  • 当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法
微信小程序 (1) (rpx) + ( 改变导航栏颜色 ) + ( 嵌套样式 ) + ( swiper轮播图组件 ) + ( 页面的生命周期 ) + ( wx:if=
应用生命周期影响页面生命周期

前台和后台:

  1. 后台:
    当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台
  2. 前台:
    当再次进入微信或再次打开小程序,又会从后台进入前台

(5) 页面的生命周期

onLoad : 监听页面加 ( 可以在onLoad生命周期中请求数据 )

onShow : 监听页面显示

onReady : 监听页面初次渲染完成

onHide : 监听页面隐藏

onUnload :监听页面卸载

(6) wx:if="{{false}}" 隐藏 和 显示

(7) 循环

  • 在js文件中引入本地json文件时,使用require语法时,路径必须是 ( 相对路径 ) !!
  • 如果对象中的属性名带有 - ,则在js中使用的时候,不能用点语法,只能用方括号,在方括号中必须用引号,否则会当作变量处理。
  • 当 wx:for 的值为字符串时,会将字符串解析成字符串数组

  {{item}}


等同于


  {{item}}


     

wxml


 
        
            {{item.age}}
            {{item.name}}
            {{index}}
        
 

-----------------------------------------------------------
js


  data: {
      switchShow: true,
      forData: [
          {age:10,name:"wang"},
          {age:30,name:"li"}
      ]
  }


(8) setData() 参数格式

接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。

js


  onLoad: function (options) {
      console.log('onLoad')
      var forDataFromLoad = [
          { age: 20, name: 'zhagn'},
          {age: 40, name: 'jian'}
      ]

      this.setData({
          getData: forDataFromLoad
      })
  },

-------------------------------------------------------
wxml




            {{abc.name}}
        

(9) tap事件 ----- 相当于react中的onClick事件

tap事件:手指触摸后马上离开

  • 事件绑定: bindtap
  • 页面跳转:wx.navigateTo( { url : '.......' } ) 具有子集关系,可以返回,最多5个层级。
  • 页面重定向:wx.redirectTo( {url: '.......' } ) 不具有子集关系,不能返回
  • wx.navigateTo()方法的完整写法
 wx.navigateTo({
        url: '../posts/posts',
        fail: function() {},
        success: function() {},
        complete: function() {},
 })

navigateTo 和 redirectTo与页面生命周期 onUnload() 和 onHide() 的关系?

  1. wx.redirectTo() 会触发 onUnload()方法 ,页面卸载。
  2. wx.navigateTo() 会触发 onHide()方法,页面隐藏,因为还可以返回,并没有被卸载,只是隐藏了。

生命周期 onUnload() 和 onHide() 的区别?

  • onHide() 只是隐藏了,未被卸载。
wxml

        开启小程序之旅
    


js
goHome: function(e) {
    //   wx.navigateTo({
    //       url: '../posts/posts'
    //   })

    wx.redirectTo({
        url: '../posts/posts'
    })
}

(9.1) wx.navigateTo() 页面跳转

(1) 自定义属性的获取: event.currentTarget.dataset.属性名
(2) 路由跳转传递的参数获取:onLoad(options)生命周期函数的options对象获取
  • options.key
posts.wxml
(1) 自定义属性以 data- 开头
(2) 自定义属性通过   event.currentTarget.dataset.属性名    获取
(3) image很多时,可以在父级元素上用 catchtap ,  通过event.target获得自定义属性
(4) 注意采用事件冒泡的方式,自定义属性是通过:event.target.dataset.属性名  获取    (区别2和4的不同)

(5) 
target 是当前点击的组件
currentTarget 是事件捕获的组件







-----------------------------
posts.js
(1) wx.navigateTo({ url: '页面地址'}) 页面跳转
(2) 传递的参数通过  ?key=value&key2=value2....  的形式

  goxArticle: function(event) {
      const idx = event.currentTarget.dataset.idx;
      wx.navigateTo({
          url: '/pages/posts/posts-detail/posts-detail?id=' + idx,
      })
  },


-----------------------------
posts-detail.js

onLoad: function(options) {         ------------ onLoad(options)的options对象有跳转携带的数据
   console.log(options.id, 'options.id')   ------------ 获取页面跳转携带的参数
}

(10) bindtap事件 和 catchtap事件的区别

  • bindtap 绑定的事件会冒泡 ------------------ 冒泡
  • catchtap 绑定的事件不会冒泡 ----------- 不冒泡
  • 事件冒泡指的是事件的冒泡阶段,由最里层向外层传播,会触发父元素绑定的事件

(11) template 模板

  • 定义:
    

在wxml中定义,必须有个name属性

注意: 在模板中应用图片等静态资源时,用绝对路径!!!!!
  • 引入并使用:
      ----------------  引入,相对路径