最近有在作小程序开发,在开发的过程当中碰到一点小问题,描述一下先。javascript
本人在职的公司对于后台获取的 json
数据须要作过滤转义的不少,不一样的状态码会对应不一样的文字,可是在微信小程序中又没有相似 vue
中的 |
方法进行快速的过滤,看了前人的代码大都是用数据遍历洗数据来实现的,说实话,很麻烦,即便提取了公共方法那也麻烦,总之要洗数据就麻烦(对,我就是这么懒,懒人推进世界发展 =3=)html
在翻看小程序的文档的时候,正好看到了 WXS
的介绍 官方文档 一拍脑门,这不就成了么?vue
在上代码以前先简单的介绍一下 WXS
是什么,以及和 javascript
有什么区别,虽然官方文档中都有,但我认为博客的存在乎义就是尽可能减小看官们的页面跳转,可以在一个页面说明的问题就不要再跳转,外链应该做为课后拓展的手段。java
WXS
介绍android
wxml
模板文件中,在模板文件中能够完成页面的结构。WXS
中不能调用 javascript
中定义的函数或者变量,也不能调用小程序提供的 API
,他的运行环境和 javascript
是隔离的。WXS
是无效的,就是说若是 WXS
代码包裹在未渲染的代码中,只要渲染的 wxml
部分调用了此模块,此段 WXS
代码依然会被加载。ios
设备上小程序的 WXS
会比 javascript
快 2~20 倍,在 android
设备上运行效率无异。module.exports
实现。require
实现。var
来定义变量,表现形式和 javascript
同样,会有变量提高。WXS
模块只能在定义模块的 wxml
文件中被访问到,使用 <include>
或 <import>
时,WXS
模块不会被引入到对应的 wxml
文件中。new Date()
应该使用 getDate()
。上代码ios
首先,新建一个 config.wxs
文件,用于存储状态码对应转义后的文字。json
var orderType = { "-1": "type one", "0": "type two", "1": "type three" }; module.exports.orderType = orderType;
能够看到咱们对外暴露变量的时候用的是 module.exports
,在 wxs
文件中只能使用该方法 官方文档 一样,在引入其余模块的时候,只能使用 require
。小程序
接着,建立一个 index.wxs
文件,用于对外暴露一些过滤的方法。微信小程序
var config = require("./config.wxs"); function _filterOrderType(value) { return config.orderType[value.toString()] || "order type undefined" } // 时间戳转换成 yyyy-MM-dd HH:mm:ss function _filterTimestamp(value) { // 有些特殊 不能使用 new Date() var time = getDate(value); var year = time.getFullYear(); var month = time.getMonth() + 1; var date = time.getDate() < 10; var hour = time.getHours() < 10; var minute = time.getMinutes() < 10; var second = time.getSeconds() < 10; month = month < 10 ? "0" + month : month; date = date < 10 ? "0" + date : date; hour = hour < 10 ? "0" + hour : hour; minute = minute < 10 ? "0" + minute : minute; second = second < 10 ? "0" + second : second; return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second; } module.exports._filterOrderType = _filterOrderType; module.exports._filterTimestamp = _filterTimestamp;
最后在咱们须要进行过滤处理的 wxml
页面上引入这个模块,使用便可。微信
<wxs src="../filter/index.wxs" module="filter" /> <view>{{filter._filterOrderType(item.type)}}</view> <view>{{filter._filterTimestamp(item.time)}}</view>
这里须要注意一下,在 wxml
页面上使用模块的时候,须要用一个 module="filter"
或者其余的命名来包裹。
WXS
和 javascript
虽然相似,可是仍是有一些不一样的地方,若是在 debug
的时候发现报错了,能够在底下回复或者直接私信我,虽然不能秒回,可是多一我的多一条思路,也许我能给您提供一些别的思路,或者您的问题会给我带来一些新的思考,我正是这么期待着。
本文能够随意转载,只要附上原文地址便可。
若是您认为个人博文对您有所帮助,请不吝赞扬,点赞也是让我动力满满的手段 =3=。