小程序基础开发

  • 相对路径、目录结构
小程序目录结构

'./'表示当前目录(非my_jsdoc.js,而是‘目录’!),'../'表示上一级目录。
示例中,第一个"../"表示当前目录(launchPage)的上一级目录(Logins),
第二个'../'表示再往上一级目录到(pages),
第三个'../'表示pages的上级目录,即根目录,
然后根目录下寻找'/utils'目录,最终找到目标文件utils.js;
在上面的相对路径中,还可以在开头加上'./',表示当前目录。但这个'./'可以省略,因为默认就是从当前目录开始的。

  • 扩展运算符 ... 可以将一个对象展开
<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>
Page({
  data: {
    obj1: {
      a: 1,
      b: 2
    },
    obj2: {
      c: 3,
      d: 4
    }
  }
})

最终组合成的对象是 {a: 1, b: 2, c: 3, d: 4, e: 5}。

  • 事件处理函数bindtap

在视图中定义了按钮单击事件,并绑定处理该单击事件的函数,则需要在Page中定义该事件函数。

wxml:
<view bindtap="viewTap">单击我</view>
<--  catchtap跟bindtap的区别:catchtap可以阻止冒泡事件!只有当前view响应点击事件,事件不会穿透到下层视图    -->
<view catchtap="viewTap2">单击我</view>
Page:
Page({
    viewTap: function() {
       console.log('hello, tap me!')
   },
    viewTap2: function() {
       console.log('hello, tap me 2!')
   }
})

数据绑定使用 Mustache 语法(双大括号)将变量包起来,可用于:

内容
<view> {{ message }} </view>
组件属性(需要在双引号之内)
<view id="item-{{id}}"> </view>
...

见官网:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/data.html

\color{blue}{.js数据同步到.wxml};.js需要先定义属性;其中data是创建页面自动生成的,data是关键字,是页面的数据对象;当前所有数据需要定义在data对象内,作为属性。如下例的someText
.js

Page({
    data: {
       someText: "Morning, Zark!",
       myColor: '#ff0000',
   },
   someFunction: function() {
      this.setData({someText:"Good night,Zark!"})
  }
})

.wxml:

    <text style='color:{{myColor}};'>{{someText}}</text>

数据的引用:上面一行代码展示了在标签属性(style,以及其他属性)中,和标签的值中,分别是如何引用.js中定义的属性的。在标签属性中,引用需要包含在引号内;作为标签的值,则不可以加引号。

.js文件中如果直接用this.data.someText="Good night,Zark!",是不能改变<text>内显示的内容的,
\color{red}{必须用}this.setData({someText:"Good night,Zark!"}),才能使UI和数据同步刷新!

\color{blue}{wx:if条件渲染};

<view wx:if="{{num > 100}}">大于100</view>
<view wx:elif="{{num > 30}}">大于30</view>
<view else>小于等于30</view>

\color{blue}{block,wx:if 条件渲染};

//block什么也不干,只是相当于一个大括号括起来的代码块,方便对一块代码进行统一管理。
<block wx:if="{{condition}}">
  <view>show view1</view>
  <view>show view2</view>
</block>

\color{blue}{wx:for 列表渲染; 相当于iOS里的} \color{red}{UITableView} 或安卓里的 \color{red}{ListView}

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。
默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

<view wx:for="{{array}}">
  {{index}}: {{item.message}}
</view>

//使用 wx:for-item 可以指定数组当前元素的变量名,
//使用 wx:for-index 可以指定数组当前下标的变量名:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
  {{idx}}: {{itemName.message}}
</view>
text换行问题
去除中文后面空的占位,word-break: keep-all;
中文字符不再上浮,接下来要解决的是换行的问题word-wrap: break-word;
https://blog.csdn.net/qq_37465264/article/details/80234913

列表渲染:多数组数据提取,标记点击事件id
这里的'id'可以是任何自定义的名称,如,.wxml可以是data-row='{{index}}';
对应的,在.js中就要用e.currentTarget.dataset.row取值

.js

data: {
    iconUrls: ["../../../../img/personalCenter/purse_account_detail.png", "../../../../img/personalCenter/purse_cashout_record.png"],
    listTitles: ["账户明细", "提现记录"]
  },
...
  cellClicked: function (e) {
    let index = e.currentTarget.dataset.id;
    console.log(e.currentTarget.dataset.id)

    if (index == 0) {
      wx.navigateTo({
        url: './accountDetail/accountDetail',
      })
    }else if (index == 1) {

    }
  },

.wxml

<view class='cell' wx:for="{{listTitles}}" wx:for-index="index" bindtap='cellClicked' data-id='{{index}}'>
      <view class='cellContent'>
        <view class='cellLeftView'>
          <image class='cellIcon' src="{{iconUrls[index]}}"></image>
          <text>{{item}}</text>
        </view>
        <image class='cellArrow' src='../../../../img/personalCenter/list_arrow_right.png'></image>
      </view>
      <view class='cellSp'></view>
    </view>

条件渲染

  • 效果:(列表背景不一样)


    条件渲染
  • 1 、新建文件 rankingBgTool.wxs,内容如下(小程序内view背景图片只能用base64编码,网上随便搜图片转base64):
 var backgroundUrlGenerator = {
  urlforRanking: function(row) {
    var url = ''
    if (row == 0) {
      url = 'data:image/png;base64,iVBORw......5ErkJggg=='
    } else if (row == 1) {
      url = 'data:image/png;base64,iVBORw0KG.........Jggg=='
    } else {
      url = 'data:image/png;base64,iVBORw0KGgo.........Jggg=='
    }
    return url;
  }
}
module.exports = {
  urlforRanking: backgroundUrlGenerator.urlforRanking
}
  • 2、然后在invitationDetail.wxml文件中导入(顶部写就可以,不用包含在其他wxml标签内),其中的'urlGen'是可任意自定义别名,src必须是相对路径!!不要忘了关闭标签的斜杠。
<wxs module='urlGen' src='./rankingBgTool.wxs'/>
使用:
<scroll-view  scroll-y class='tableView'>
  <view class='cell' wx:for='{{friendArray}}' wx:for-item='cellDic2' wx:for-index='row'>
      <view class='cellContentView' style='background-image:url({{urlGen.urlforRanking(row)}});'>
      ...
      </view>
    </view>
</scroll-view>

类似的,还可以用.wxs工具对渲染的数据加工,比如对小数点位数进行控制等。

.wxs文件日期处理

daysRemain: function (dateString) {
//dateString format: yyyy-MM-dd HH:mm:ss
    var date_apply = getDate(dateString)
    var interval_date = date_apply.getTime()
    var interval_after3d = interval_date + (24*60*60*1000)*3
    var threeDaysAfterApplay = getDate(interval_after3d)
    var today = getDate()
    
    var interval_today = today.getTime()
    var interval = interval_today - interval_date
    //含小数,如果传入的是过去的时间,则结果为正数,否则为(负数 || 0)
    var days = interval/(24*60*60*1000)
  
  },

因为小程序限制总大小<2M(电脑上无限制,但上传就有限制),所以,本地高清大图就不要想了,我都是用宽度400像素以下的图片,质量当然一般,但也过得去;能用代码的就用代码(比如纯色按钮,渐变色liner-gradient按钮等)

回调失败信息展示(err.errMsg)

fail: function (err) {
        console.log(err)
        wx.showToast({
          icon: 'none',
          title: err.errMsg,
        })
      },

. text插入空格
两种方式

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

推荐阅读更多精彩内容

  • 因新工作主要负责微信小程序这一块,最近的重心就移到这一块,该博客是对微信小程序整体的整理归纳以及标明一些细节点,初...
    majun00阅读 7,345评论 0 9
  • 一.微信开发工具简介. 1. 创建新的项目. 2. 微信小程序开发工具功能分类. 3. 调试期支持http. 微信...
    大鹏的鹏阅读 380评论 0 0
  • 一.WXML。 对于微信小程序而言,视图层就是所有.wxml文件与.wxss文件的集合。微信小程序在逻辑层将数据进...
    大鹏的鹏阅读 247评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,107评论 1 32
  • 当黄昏到来, 秋天的景色已经到达。 独自漫步在乡间的小路上, 两边的银杏树仿佛在微笑。 哪怕会被泥土埋没, 也会笑...
    幽竹一夏阅读 262评论 1 2