小程序脚本语言WXS详解
WXS脚本语言是 Weixin Script脚本的简称,是JS、JSON、WXML、WXSS之后又一大小程序内部文件类型。截至到目前小程序已经提供了5种文件类型。
解构小程序的几种方式,其中一种方式就是通过文件类型:JS、JSON、WXML、WXSS、WXS。前面四种之前已经介绍过,今天主要是介绍WXS这种文件类型。如果你是PHP、JAVA、C#程序员的话写过服务端代码的话,就很好理解WXS这种脚本语言了。能够更加方便的动态实现页面上的一些基本逻辑判断,而不用全部的依赖后台实现,再通过接口返回。
一、WXS创建方式
WXS的使用,有两种方式。 一种是直接在WXML中编写
module="foo">
var some_msg = "hello world";
module.exports = { msg : some_msg, }
{{foo.msg}}
另外一种是使用单独的WXS文件,然后在WXML中引入即可
src="./../logic.wxs" module="logic" />
二、WXS文件的构成
1、数据类型 类似小程序大厦的砖头、保暖砖、预制件之类的内容,这些都是通用的内容,这些是编程语言的基本构成项,数据类型可以是简单的类型,也可以是复杂的类型。从普通的数字再到复杂的对象。
WXS 语言目前共有8种数据类型:
number : 数值 string :字符串 boolean:布尔值 object:对象 function:函数 array : 数组 date:日期 regexp:正则
WXS中使用var或let来定义变量,从定义中很难看出变量的类型,判定一个变量是什么类型。 可以使用变量的属性constructor。 还可以使用 typeof这种方式来判定变量的类型
例如:
var number = 10;
console.log( "Number" === number.constructor );
console.log( 'number' === typeof number );
2、变量 变量就是构建小程序这座大厦的基本件,虽然是很小,但是有自己的规范,主要有如下几个方面: 命名规范, 首字符必须是:字母(a-zA-Z),下划线(), 剩余字符可以是:字母(a-zA-Z),下划线(), 数字(0-9)。 大小写不同则是不同的变量
保留字符
delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for while do break continue switch case
default
3、操作运算符 根据操作对象的个数,可以分为一元、二元、多元运算符。 我们常用的加减乘除这些都需要两个操作对象才能完成,那这些就是二元运算符。 自增或自减这些只需要一个运算符就可以完成。这些就是一元运算符。 需要二个以上的运算对象的那就是多元运算符了。
4、选择结构 选择结构,又称为判断结构, 如果C条件满足了则执行一种情况,条件不满足则执行另外一种情况 。 另外一种是多条件的,如果C1条件满足了,则执行A部分,如果C2条件满足了则执行B部分,如果C3条件满足则执C部分,以此类推,所有条件都不满足是则执行Z部分。
// if ... else
if (表达式) 语句;
else 语句;
if (表达式)
语句;
else
语句;
if (表达式) {
代码块;
} else {
代码块;
}
// if ... else if ... else ...
if (表达式) {
代码块;
} else if (表达式) {
代码块;
} else if (表达式) {
代码块;
} else {
代码块; }
switch (表达式) {
case 变量:
语句;
case 数字:
语句;
break;
case 字符串:
语句;
default:
语句;
}
5、循环结构 简单的事情,不想重复的写代码,那就可以把公共执行的部分剥离出来
for (语句; 语句; 语句)
语句;
for (语句; 语句; 语句) {
代码块;
}
while (表达式)
语句;
while (表达式){
代码块;
}
do {
代码块;
} while (表达式)
支持使用 break,continue 关键词。 break是结束整个循环 continue是中断当前本次循环
到这里的时候就先停一下 通过1和2这两个部分完成的组件,再通过3、4、5这三大部分的“粘合剂” 就可以完成后面6和7慢慢的你会发现写小程序就是盖房子一样的,把原材料准备好,使用粘合剂给连接起来就可以了。
6、模块(自定义的函数) 在WXS中编写业务逻辑与内容,使用 moudle.exports的方式把变量或函数公开。
// /pages/tools.wxs
var foo = "'hello world' from tools.wxs";
var bar = function (d) { return d; }
module.exports = {
FOO: foo,
bar: bar,
};
module.exports.msg = "some msg";
在使用的地方地方,需要引入对就的模块才能使用
<wxs src="./../tools.wxs" module="tools" />
{{tools.msg}} view>
{{tools.bar(tools.FOO)}} view>
注意:tool.FOO FOO是大写,因为上面部分是使用FOO做为对外公开的变量名。
7、函数库(已经定义好的函数)
console
console.log() console.info() console.warn() console.error()
这是引用的chrome的经典内容。
Math
Math.PI Math.ceil() Math.floor()
带有()是对应的方法,没有带括号的是属性,
Number
MAX_VALUE
MIN_VALUE
NEGATIVE_INFINITY
POSITIVE_INFINITY
JSON
stringify(object): 将 object 对象转换为 JSON 字符串,并返回该字符串。
parse(string): 将 JSON 字符串转化成对象,并返回该对象。
Global
属性
NaN
Infinity
undefined
方法
parseInt
parseFloat
isNaN
isFinite
decodeURI
decodeURIComponent
encodeURI
encodeURIComponent
以上内容的更多用法可以参考ES语法 http://es6.ruanyifeng.com/
三、注释
单独的把这一块拿出来,一方面是说明其重要性,另一方面是学习一门语言与他人沟通中很重要的 一部分。WXS 主要有 3 种注释的方法。
module="sample">
// 方法一:单行注释
/* 方法二:多行注释 */
/* 方法三:结尾注释。即从 /* 开始往后的所有 WXS 代码均被注释
var a = 1;
var b = 2;
var c = "fake";
在编程实践中,只要能把思路理清就能把代码实现出来,在大师兄的公司基本上推荐的是先写注释内容,然后再把注释内容转换为代码。
//加载页面数据 //给评论区加载数值 //臭鸡蛋数 //转发数 //投票数
所以对于大家学习一门新语言时,不要惧怕,只要能表达清自己的思路,然后再一步一步的把注释内容转为代码语言即可,通过我们之前的学习的调试工具就一点点完成自己的小程序。
总结下: 根据不同的需要给不同的数据类型通过变量的方式命名,通过操作运算符组合成自己的想要的业务代码。
相关文章:微信小程序新功能WXS解读
文章来源:微信小程序联盟
小程序脚本语言WXS详解的更多相关文章
- 小程序脚本语言WXS,你想要的都在这里了
WXS脚本语言是 Weixin Script脚本的简称,是JS.JSON.WXML.WXSS之后又一大小程序内部文件类型.截至到目前小程序已经提供了5种文件类型. 解构小程序的几种方式,其中一种方式就 ...
- 微信小程序 this和that详解及简单实例
微信小程序中,在wx.request({});方法调用成功或者失败之后,有时候会需要获取页面初始化数据data的情况,这个时候,如果使用,this.data来获取,会出现获取不到的情况,调试页面也会报 ...
- 微信小程序获取用户手机号详解
最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...
- 【微信小程序】支付过程详解
一.介绍 今天跟大家分享微信小程序集成支付. 二.分析 1.小程序支付API 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html ...
- 微信小程序flex容器属性详解
flex容器属性详解 flex-direction决定元素的排列方向 flex-wrap决定元素如何换行 flex-flow 是 flex-direction 和flex-wrap的简写 justif ...
- 微信小程序--问题汇总及详解之图片上传和地图
地图用的是百度的地图,链接:http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/getlocation 获取日期时间可以用小程序里自带的js文件 ...
- 微信小程序--问题汇总及详解之form表单
附上微信小程序开发文档链接:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html form表单: 当点击 <form/> ...
- 微信小程序~生命周期方法详解
生命周期是指一个小程序从创建到销毁的一系列过程 在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面 先来看一张小程序项目结构 从上图可以看出,根目录下面有包含了app.js ...
- 微信小程序支付之代码详解
微信小程序自带的一套规则,类似vue语法,但是好多功能都集成在api中,给了很多初学者轮子,所以首先要熟悉这些api,忘记可照官网继续开发 这里主要说下微信小程序的支付,原理类似上篇介绍的公众网页支付 ...
随机推荐
- Given two binary string, return their sum (also a binary string)
主要思路:将二进制转化为十进制,然后进行十进制加法,最后再将加法所得的结果转化为二进制 public class BinarySum2 { public static void main(String ...
- SELECT中的if_case流程函数
DQL中常用的流程函数if_case ---流程函数在一个SQL语句中实现条件选择 模拟对职员薪水进行分类: mysql> create table salary_tab(userid ,)); ...
- vue学习笔记(1)—— 组件化实现todoList
一.环境搭建 1.npm 大型应用时推荐用npm安装,npm能很好的和webpack等模块打包器配合使用.具体安装步骤请参考网上的诸多教程.完成后使用如下命令安装vue. $ npm install ...
- ArrayList 和Vector ,HashTable和HashMap异同
相同点: 1.都实现了List接口(List接口继承自Collection接口) 2.有序集合,数据可重复,可按索引号取值(而HashSet无序,不可重复) 不同点: 1.Vector是线程安全的,而 ...
- 读书笔记 之《Thinking in Java》(对象、集合)
一.前言: 本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上. 真的感觉,看书是个好习惯啊,难怪人家说"书籍是人类 ...
- Oracle插入多个值的问题
首先我们建立表T123 SQL),age int); 然后试图向表中像DB2一样插入多个value,却得到了错误的信息. SQL),(); ),() * ERROR at line : ORA: SQ ...
- OS作业模拟进程分配与回收
OS的一个作业, 模拟进程的分配与管理 # initialize the memories and the process list(actually a dict) total_memory = 1 ...
- 理清JS数组、json、js对象的区别与联系
最近在敲代码时,遇上了一个关于JS数组的问题,由此引发了关于对象和json的联想,曾经觉得很畅顺的知识点突然模糊了.于是,为了理清这些东西,有了如下这篇文章.觉得没问题的猿们可以当复习,而那些带着疑问 ...
- 【每天一道算法题】时间复杂度为O(n)的排序
有1,2,……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且一次只能交换两个数. 这个是以前看到的算法题,题目不难.但是要求比较多,排序算法中,时间 ...
- Go语言结构体(struct)
Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比如保存图 ...