微信小程序开发知识点总结

微信小程序自我小总结

微信小程序是一个介于原生app和H5之间的一个东东。不过微信小程序是依赖微信开发平台的,甚至连IDE都是专用的,做出来的成品,也只能在微信中通过搜索或扫码找到入口,然后进行访问。这些天一直用微信小程序来写公司的项目。有一些小小的心得,怕过久了会忘记(laodayeyaoqiu)。

首先是下载开发工具,磨刀不误砍柴工。这是一个针对微信小程序开发的IDE工具,集预览,打包发布,调试,语法提示于一身,但是我还是不太习惯,我习惯是在sublime中进行代码的编辑,只是用它进行代码的调试。并且BUG太多,以图为证
,仅管如此,我相信这工具会完善的越来越好!(以下内容都是网上图片,自己懒得截图)

安装

安装简单不多说,打开扫码登陆,然后就可以进行下面的操作了。


结构


js:javascript 逻辑代码区。
json:页面配置区。
wxml:类类似HTML布局区,
wxss:CSS样式区
( json 与 wxss 并不是必须的,可按照产品风格做调整)

子文件中的 .json只能设置window相关的配置项,以决定本页面的窗口表现,所以无需写window这个键
window :用于设置小程序的状态栏、导航条、标题、窗口背景色。

同时我在说一下它的源码结构,就这样了,感觉废话太多,重点是自己总结一下知识点

  1. 视图层(将逻辑层的数据展现在视图上)
  2. 逻辑层(通过改变数据[setData方法]来改变视图)
  3. 配置文件

重点-知识点(项目中产生的疑惑)

1.先说一下页面-不多说

页面我并不是主要参与其中,但是也有许多的坑需要填写,比如遇到了样式背景颜色不出来,比如不支持外链图片等,我了解到的WXML,WXCSS的知识点比如: view 组件对应 html 里的 div,text 对应 span,wxss 里选择器只支持 element, #id, .className, ::after, ::before,样式使用 @import 导入

2. js部分

  • 提醒
  • 微信小程序不运行在浏览器,所以不能操作Dom,也没有document、window对象,类似于APP的东东,当然也没有cookies
    每一个页面路径最多5层,当已经打开了5个页面之后,wx.navigateTo不能正常打开新页面,此处记一下跳转API
    当然还有其他跳转方法,具体链接小程序API文档
  • 没有外链,只能用app.json里配置的路由,a标签不可用的
  • wx:for循环渲染时,要添加wx:key,否则报警告
  • 在滚动 scroll-view 时会阻止页面回弹,所以在 scroll-view 中滚动,是无法触发 onPullDownRefresh
  • 默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item,可用<block>来渲染一个包含多节点的结构块,eg


  • 当绑定事件时bindetap,需要当前标签的索引,标签索引需对应绑定事件的那一行
  • 页面传参
    • 开发时,注意需要打印出来,每次都会出错,感觉很重要

Page({
onLoad (option) {
// 看看是不是你想要的
console.log(option.id)
}
})

+ 参数传值
- data-id
设置data-id
data-*注意事项:data-*名称不能有大写字母.data-*属性中不可以存放对象

<view class="orderbox-djlist cf" bindtap="goodsDetail" data-id="{{goods.sGoodsInfo.list[0].iGoodsId}}">
<image class="djlist-img" mode="widthFix" src="{{goods.sGoodsInfo.list[0].sGoodsPic}}"></image>
</view>

取值 + 传值
![](http://upload-images.jianshu.io/upload_images/6314694-32ff012ab3332bef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

+ 小程序建议用ES6语法,遇到的知识点
  - 扩展运算符( spread )是三个点(...)。该运算符主要用于函数调用,它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列(以前知道,很少用)。
down了一些小例子以便巩固![](http://upload-images.jianshu.io/upload_images/6314694-ca15f4ccf2a67b39.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
替代数组的 apply 方法

    - 由于扩展运算符可以展开数组,所以不再需要apply方法,将数组转为函数的参数了。

// ES5 的写法
function f(x, y, z) {
// ...
}
var args = [0, 1, 2];
f.apply(null, args);
// ES6 的写法
function f(x, y, z) {
// ...
}
var args = [0, 1, 2];
f(...args);

+ 滚动加载(用其他例子,可能公开,不写项目例子)
    微信没有document、window对象,所以没有onscroll给你用,那怎么办呢?还好微信提供了<scroll-view>,实现如下:

wxml文件

<scroll-view scroll-y="true" scroll-into-view="{{toView}}" bindscrolltolower=“loadMovies”>
    <view wx:for="{{movies}}" wx:key="index">
        {{item.name}}
    </view>
</scroll-view>

js文件

Page({
    data: {
        movies: []
    },
    getMovies () {
        let _self = this
        wx.request({
          url: 'https://......',
          data: {},
          success: function(res) {
            // res.data才是你后端返回的真实数据
            _self.setData({
                movies: res.data
            })
          }
        })
    },
    loadMovies () {
        // 得到要更新的数据,setData重置movies
    }
})
+ 事件总结/冒泡事件
小程序的事件主要有:
> 
 touchtab 点击事件
 touchstart 开始滑动
 touchmove 滑动中
 touchend 滑动结束
 touchcancel 滑动中断

  小程序中的wxml中绑定事件有两种:以touchtab为例 ,在wxml中必须有bind/catch不然无法实现上述事件
bindtouchtab和catchtouchtab bind的不会阻止事件冒泡(元素最里层到最外层函数执行),catch会阻止冒泡,只是冒泡到当前层结束
+ 使用模板(发现模板真是个好东西哦!)
1:定义模板:name设置模板的名字

<template name="toast">
<view class="dialog-alert {{toast.display}}">
<view class="dialog-alert-txt">{{toast.msg}}</view>
</view>
</template>

2:使用模板

<import src="../../components/toast/toast.wxml"></import>

然后使用模板is后写模板的name..通过data来传递需要是数据
<template is="toast" data="{{item}}"></template>

+ onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新
首先要在json文件里设置window属性

| 属性 | 类型| 描述|
|:-------------:|:-------------:| :-----:|
| enablePullDownRefresh| Boolean|是否开启下拉刷新 ,详见页面相关事件处理函数。 |
| onPullDownRefresh| function|页面相关事件处理函数——监听用户下拉动作 |
| onReachBottom| function|页面上拉触发底事件的处理函数 |

下拉加载说明:
    当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

onPullDownRefresh(){
  console.log('--------下拉刷新-------')
  wx.showNavigationBarLoading() //在标题栏中显示加载

wx.request({
url: 'https://URL',
data: {},
method: 'GET',
// OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 设置请求的 header
success: function(res){
// success
},
fail: function() {
// fail
},
complete: function() {
// complete
wx.hideNavigationBarLoading() //完成停止加载
wx.stopPullDownRefresh() //停止下拉刷新
}
})

页面上拉触发底事件说明:
  首次进入页面,如果页面不满一屏时会触发 onReachBottom ,应为只有用户主动上拉才触发;手指上拉,会触发多次 onReachBottom,应为一次上拉,只触发一次;所以在编程时需要将这两点考虑在内。
onReachBottom() {
    // 没有到达最后一页,就加载数据
    if (!this.data.lastPages) {
        let page = this.data.pages + 1; // 下一页

        this.data.pages = page; // 更新页码

        this.showMoreLoading();

        // 渲染数据
        this.renderOrderList(page, this.data.orderID); // orderStatus 只有订单这里有用
    }
},
这么多吧,好困,睡觉~~~



[![越努力,越幸运!](http://i1.buimg.com/580471/c316e85fcb94bcad.jpg "李志坚")](http://www.jianshu.com/u/a6116675f9e3)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容