微信小程序学习笔记

在微信小程序小技巧

1,在微信小程序的开发者工具中按住alt + shift + F 可以格式化代码样式。
2,在app.json中的"pages"数组中,直接添加页面路径可以快整创建一个新的小程序页面(包括了js、json、wxml、wxss四个文件。)
3,在JS中,Boolean类型的默认值是false,如果默认值是false,则可以不需要赋值。Number类型的默认值是0,同样,如果默认值是0,则可以不需要赋值。

catchtap绑定事件不会事件冒泡 bindtap会事件冒泡


  
    开启小程序之旅

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

使用wx.navigateTo在跳转页面的时候,是把页面隐藏,而使用wx.redirectTo是把页面关闭和卸载

  onTap:function(event){
    // wx.navigateTo({  // 页面被隐藏
      // url: '../posts/post',
    // });

    // wx.redirectTo({  // 页面被关闭和卸载
    //   url: '../posts/post',
    // });
 },

如果在项目的底添要添加tabBar就需要用wx.navigateTo,使用wx.redirectTo,底部的tabBar就不会显示出来,只有使用wx.navigateTo的时候,tabBar才会显示出来。

使用 this.setData(post_content1);等同于把post_content1中的数据放在data中,可以直接在页面中使用,例如:
{{date}}

Page({
  data: {},
  onLoad: function (options) {
    var post_content1={
      date:"Sep 18 2016",
      post_img:"/imgages/6.jpg",
      content:"曾涉嫌曝光美国机密或被逮捕并引渡至美国的考虑。"
    }
    this.setData(post_content1);
  }
})

给this.data赋值最好用this.setData(newData),或者像下面这样:
this.setData({
post_key: postsData.postList
});

如果是非异步数据的话也可以用下面的方式,不过不推荐
this.data.postData = postData;

修改data中的值

Page({
  data: {
    test:1 
  },
  onLoad: function (options){
      this.setData({
        test: 2
     })
  }

如果要修改data中的值,必需要使用this.setData来修改,否则不生效。

swiper组件的使用方式

动态数据的使用方式


  
    
      
        
      
    
  

非动态数据的使用方式


  
  
  
  
  
 

js代码

Page({
  data: {
    imgUrls: [
      '/images/6.jpg',
 'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',
'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',
'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'
    ],
    indicatorDots: true,
    autoplay: true,
    interval: 5000,
    duration: 1000,
    indicatorActiveColor: "#b3d4db",
    circular: true,
  }
})

微信小程序中用for循环来展示集合数据

js代码

Page({
  onLoad: function (options) { 
    var post_content = [
      {
        date: "Sep 18 2016",
        title: "外媒:厄瓜多尔疑与英国达成协议,将交出藏身大使馆的阿桑奇",
        img: {
          post_img: "/images/6.jpg",
          author_img: "/images/3.jpg"
        },
        content: "曾涉嫌曝光美国机密或被逮捕并引渡至美国的考虑,阿桑奇选择一直留在大使馆内。",
        view_num: "112",
        collect_num: "96",
      },
      {
        date: "Sep 18 2016",
        title: "以色列外交部:该国已将“白盔”成员从叙利亚撤出",
        img: {
          post_img: "/images/6.jpg",
          author_img: "/images/3.jpg"
        },
      content: "“白盔”获得西方的支持并且广为人知,该组织宣称其目的是在战地拯救平民,但被叙利亚政府指责与极端分子有联系,并进行敌对宣传活动。纳赫容在推特中表示:根据美国、加拿大和欧洲国家的请求,以色列对叙利亚民间组织(‘白盔')的成员及其家人展开人道撤出行动。",
        view_num: "112",
        collect_num: "96",
      }
    ]
    this.setData({
      post_key: post_content
    }); 
  }

wxml代码
item是每一项,index是索引,wx:if="{{true}}"根据if判断的值来展示数据,{{"新闻主体:"+item.content}}动态和非动态数据的结合, 给属性添加值必须要用""引起来:src="{{item.img.post_img}}"


  
    
      
      {{item.date}} === {{item.collect_num}}
    
    {{index}}=={{item.title}}
    
    {{"新闻主体:"+item.content}}
    
      
      
      
      
    
  

在微信小程序中,个人建议:

纵向的元素用px做为尺寸单位,横向的元素用rpx做为尺寸单位,标题文字用rpx做为尺寸单位,小文字用px做为尺寸单位。

开发UI时,选择模拟器为iPhone 6,适配最佳;当设计稿是以iPhone 6的尺寸来设计的,我们在做小程序开发的时候,就可以按照设计稿的原始尺寸1:1的方式使用rpx单位,例如图片是的width是300,那么在小程序中可以直接设置为:width:300rpx;

组件最好不要留空白间距。

小程序中,组件只能从全局样式中继承font和color。

调用外部数据的方式

a.js // 调用的js

var postsData = require("../../data/posts-data.js");  // 引入数据
Page({
  data: {
  },
  onLoad: function (options) {  // options参数下面没有用到的时候可以不需要。
   
   // 调用方式一
    this.setData({
      post_key: postsData.postList
    }); 

   // 调用方式二
    this.data.post_key = postsData.postList
  },
})

data.js // 数据的js

var local_database = [
  {
    date: "Sep 18 2016",
    title: "“一行两会”同时公布重磅文件 将影响30万亿资金",
    img: {
      post_img: "/images/10.jpg",
      author_img: "/images/2.jpg"
    },
    content: "例如投资起点和估值方法的公募理财产投资起点从5万调整为1万。",
    view_num: "112",
    collect_num: "96",
  },
...
]
module.exports = {
  postList: local_database
}

a.wxml // 页面中使用


  
    
      
      {{item.date}} === {{item.collect_num}}
    
    {{index}}=={{item.title}}
    

    {{"新闻主体:"+item.content}}
    
      
      
      
      
    
  

小程序总是会读取data对象来做数据绑定,这个动作我们称为动作A,而这个动作A的执行,是在onLoad事件执行之后发生的。
绝大多数情况下,可以直接在onLoad内部直接给data赋值就可以了。

如果在onLoad下面执行了一个异步操作,而这个异步里面去给data赋值就需要用到this.setData({})

template模板的使用

template.wxml 模板文件


template.wxss 模板的样式文件

.news-item{
  display: flex;
  flex-direction: column;
  margin: 40rpx auto;
  padding: 30rpx 0;
  background: #fff;
  border-top: 1px solid #ededed;
  border-bottom: 1px solid #ededed;
}

a.wxml文件,下面展示模板文件在页面中的使用

 // 引入模板