VN与其他跨终端框架的一个区别是VN框架在JS侧没有FrameWork。Dom树展开,Css匹配,数据绑定,表达式计算等等操作都在Native侧执行。所以,我们的表达式并不像大多数开源框架那样支持JS的表达式语法。下面介绍一下VN表达式目前支持的能力。
数据表示
| 数据类型 | 样例 | 说明 |
| Boolean | true,false |
| Integer | 1,5 |
| Long | 1L,5l |
| Double | 1d,5D |
| String | 'Hello',"World" |
| ID | dataArray[5],dataObj.name | 这些标识符会在表达式运算的时候从页面提供的json数据中获取实际的取值。 |
运算符
| 运算类型 | 样例 | 说明 |
| +,-,*,/,% | 1+2 | 算数运算符支持数字类型的数据运算 |
| (,) | (1+2)*3 | 用于提高运算优先级 |
| <,<=,>,>=,==,!=,||,&& | 2<5 | 逻辑运算符,运算结果是Boolean类型 |
| |,&,~,^ | 2&5 | 位运算符 |
| : ? | 2>3 ? 2:3 | 三元运算符 |
函数
| 函数类型 | 样例 | 入参 | 返回值 |
| max | max(1,2) | 数值类型 | 返回其中最大的一个 |
| min | min(1,2) | 数值类型 | 返回其中最小的一个 |
| trim | trim(" Hello World ") | 一个字符串 | 返回去掉两端空格后的字符串 |
| toRpx | toRpx("15pt") | 单位字符串 | 返回转化为RPX单位的float值 |