微信小程序学习笔记(七)

举报
毛利 发表于 2021/07/15 07:41:45 2021/07/15
【摘要】 WXS语法: 在传统的网页开发中, HTML 中是可以写 JavaScript 代码的,而在小程序中,是不允许在 WXML 文件中写 JavaScript 的,但是有些时候,我们需要在 wxml 中实现一些逻辑的处理。比如举个例子,我们渲染一个数字到 wxml 中,在 wxml 文件中根据这个数字来渲染具体星期几。这时候通过 wxml 文件中就做不了了,或者只能在 J...

WXS语法:

在传统的网页开发中, HTML 中是可以写 JavaScript 代码的,而在小程序中,是不允许在 WXML 文件中写 JavaScript 的,但是有些时候,我们需要在 wxml 中实现一些逻辑的处理。比如举个例子,我们渲染一个数字到 wxml 中,在 wxml 文件中根据这个数字来渲染具体星期几。这时候通过 wxml 文件中就做不了了,或者只能在 JavaScript 先计算好再渲染。示例代码如下:

Page({
	data: {
		day: 1
	},
	onLoad: function(options) {
		var weekday = "";
		switch (this.data.day) {
		case 1: weekday = "星期一"; break;
		case 2: weekday = "星期二"; break;
		case 3: weekday = "星期三"; break;
		case 4: weekday = "星期四"; break;
		case 5: weekday = "星期五"; break;
		case 6: weekday = "星期六"; break;
		case 7: weekday = "星期天"; break;
		}
		this.setData({ weekday: weekday
		});
	}
});

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

这时候小程序就提供了一个新的语法叫做 wxs 可以帮我们直接在 wxml 中解决。示例代码如下:

< wxs module = "index" >
var getWeekDay = function(day) { var weekday = ""; switch (day) { case 1: weekday = "星期一"; break; case 2: weekday = "星期二"; break; case 3: weekday = "星期三"; break; case 4: weekday = "星期四"; break; case 5: weekday = "星期五"; break; case 6: weekday = "星期六"; break; case 7: weekday = "星期天"; break; } return weekday;
}
module.exports.getWeekDay = getWeekDay; < /wxs>
<view>{{index.getWeekDay(day)}}</view > 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

wxs 可以理解为 javascript 的一个阉割版本。使用 wxs 的好处如下:

  1. 在 iOS 上,在 wxs 中代码执行效率是在 js 中执行的 2-20 倍。
  2. 可以把更多的逻辑在 wxml 文件中完成。
    wxs代码:

wxs 代码可以写在 wxml 文件中。也可以单独放在 .wxs 后缀的文件中。如果是写在 wxml 文件中,则必须要放在 wxs 标签中,如果是单独放在 .wxs 后缀文件中,就不需要放在 wxs 标签中了。并且必须要给 wxs 一个 module 属性,用来标记这个 wxs 的名称。以下是使用 .wxs 的语法。

// /pages/tools.wxs文件 <wxs module="tools"> var person = {
"username": "zhiliao",
"age": 18
}
module.exports = person; < /wxs>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

以后想使用的时候,就直接在 wxml 代码中使用 wxs 来引用 wxs 文件。示例代码如下:

<wxs src="./.. / tools.wxs " module="tools " />
<view> {{tools.username}} </view>"

  
 
  • 1
  • 2

另外,我们在 wxs 中写完了代码,还需要导出才能够使用。使用 module.exports 即可导出。
require函数:
如果在一个 wxs 文件中,想引用另外一个 wxs 文件,那么可以使用 require 函数引用。示例代码如下:

// tools.wxs var person = {
  "username": "zhiliao",
  "age": 18
}
module.exports.person = person;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

在另外一个 wxs 文件中就可以进行引用了。示例代码如下:

var tools = require("./tools.wxs"); 
console.log(tools.person.username);

  
 
  • 1
  • 2

变量:

变量的定义跟 javascript 一致。

请查看:
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/02variate.html
注释:

注释使用 /注释/ 以及 //注释 的方式,

另外增加了一种 /* xxx 的方式,这种方式会把 /* 后的所有代码全部都注释了。
运算符:

请查看:
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/04operator.html 。语句:
包括有 if 语句、 for 循环语句、 while 循环语句、 switch 分支语句。
具体查看:
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/05statement.html

数据类型:

  • number : 数值
  • string :字符串
  • boolean:布尔值
  • object:对象
  • function:函数
  • array : 数组
  • date:日期
  • regexp:正则

其中每种数据类型的方法请参考:

https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/06datatype.html
内置类库:

wxs 提供了一些内置的类库,方便开发者调用。

具体请看:
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/07basiclibrary.html

wxs案例:

根据时间,来显示距离现在的时间间隔。

  1. 如果时间间隔小于1分钟以内,那么就显示“刚刚”
  2. 如果是大于1分钟小于1小时,那么就显示“xx分钟前”
  3. 如果是大于1小时小于24小时,那么就显示“xx小时前” 4.如果是大于24小时小于30天以内,那么就显示“xx天前”
  4. 否则就是显示具体的时间2017/10/20 16:15。

view和scroll-view: view:
视图容器。相当于是传统网页中的 div ,可以用来存放任何的其他子元素。

相关的属性请参考:

https://developers.weixin.qq.com/miniprogram/dev/component/view.html
scroll-view:

有时候我们的一些视图在手机指定的宽度和高度不够存放。那么可以放在 scroll-view 中。

设置横向滚动:

  1. 给 scroll-view 添加 scroll-x=“true” 属性。
  2. 给 scroll-view 添加 white-space:nowrap; 样式。
  3. 给 scroll-view 中的子元素设置为 display:inline-block; 。
    示例代码如下:
    index.wxml代码:
<scroll-view class='scroll-x-view' scroll-x>
  <view class='scroll-view-item bg_red'></view>
  <view class='scroll-view-item bg_blue'></view>
  <view class='scroll-view-item bg_green'></view>
  <view class='scroll-view-item bg_yellow'></view>
</scroll-view>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

index.wxss代码:

.scroll - x - view { width: 100 % ; height: 100px; background: gray; white - space: nowrap;
}.scroll - x - view.scroll - view - item { width: 200px; height: 100px;
}.bg_red { background: red;
}.bg_blue { background: blue;
}.bg_green { background: green;
}.bg_yellow { background: yellow;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

设置竖向滚动:

  1. 给 scroll-view 添加 scroll-y=“true” 属性。
  2. 给 scroll-view 设置高度。
    wxml 和 wxss 示例代码如下:
<scroll-view class='scroll-x-view' scroll-y>
 <view class='scroll-view-item bg_red'></view>
 <view class='scroll-view-item bg_blue'></view>
 <view class='scroll-view-item bg_green'></view>
 <view class='scroll-view-item bg_yellow'></view>
</scroll-view>
.scroll-x-view{   width: 100%;   height: 200px;   background: gray;
}
.scroll-x-view .scroll-view-item{   width: 100%;   height: 100px;
} .bg_red{   background: red;
}
.bg_blue{   background: blue;
}
.bg_green{   background: green;
}
.bg_yellow{   background: yellow;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

scrolltoupper和scrolltolower事件:鼠标滚动到距离顶部或者左边、鼠标滚动到底部或者右边多少距离的时候会执行这个事件。默认的间隔是 50 像素。示例代码如下:

< scroll - view class='scroll-x-view' scroll - y bindscrolltoupper="scrollToUpper">
	<view style="height:1000px;">
	</view>
	</scroll - view>
	Page({ scrollToUpper: function(event) { console.log(event); } });

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

bindscroll事件:

只要 scroll-view 发生了滚动,就会执行这个事件。

< scroll - view class = 'scroll-x-view'scroll - y bindscrolltoupper = "scrollEvent" > <view style = "height:1000px;" > </view>
</scroll - view > Page({ scrollEvent: function(event) { console.log(event); }
});

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/90050004

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。