微信小程序 WXS实现json数据需要做过滤转义(filter)

前言

最近有在做小程序开发,在开发的过程中碰到一点小问题,描述一下先。

本人在职的公司对于后台获取的 json 数据需要做过滤转义的很多,不同的状态码会对应不同的文字,但是在微信小程序中又没有类似 vue 中的 | 方法进行快速的过滤,大都是用数据遍历洗数据来实现的,说实话,很麻烦,即使提取了公共方法那也麻烦,总之要洗数据就麻烦

WXS 为何物

在上代码之前先简单的介绍一下 WXS 是什么,以及和 javascript 有什么区别,虽然官方文档中都有,但我认为博客的存在意义就是尽量减少看官们的页面跳转,能够在一个页面说明的问题就不要再跳转,外链应该作为课后拓展的手段。

WXS 介绍

  • 是小程序出的一套脚本语言,用于 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()

正确的使用 WXS

首先,新建一个 config.wxs 文件,用于存储状态码对应转义后的文字。

var orderType = {
  "-1": "type one",
  "0": "type two",
  "1": "type three"
};
module.exports.orderType = orderType;

可以看到我们对外暴露变量的时候用的是 module.exports,在 wxs 文件中只能使用该方法 官方文档同样,在引入其他模块的时候,只能使用 require

接着,创建一个 index.wxs 文件,用于对外暴露一些过滤的方法。

//引用config.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" 或者其他的命名来包裹。

原文地址:https://www.cnblogs.com/gavinjay/p/9468310.html

时间: 2024-08-11 17:25:50

微信小程序 WXS实现json数据需要做过滤转义(filter)的相关文章

微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?

原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复 还是先把问题列出来,让问题来驱动探索: 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找? 首先分析了一下源码,日志目录应该同NW.JS的应用目录相关,,,查查查,,一直查到NW.JS的C++源码,搞得太复杂,大概知道位置,但还是不确切.决定不往这条线找,换另一条路: 把日志文件修改输出到我指定目录

微信小程序前台的用户数据入库(后台Laravel)

首先 我们可以看到微信小程序官方 文档 wx.login api-login.jpg 通过此图 我们知道 前台要传 一个 code给后台,后台拿到code 并结合appid和appsecret请求微信接口服务,拿到openid和session_key 查阅文档 我们可以清楚知道 后台要获得用户数据 就需要前台除了传code 还需要传 iv和 encryptedData iv和encryptedData 后台拿到这两个 并结合拿code去请求得到的session_key便可以解密获得用户数据 包括

微信小程序开发07-列表页面怎么做

接上文:微信小程序开发06-一个业务页面的完成 github地址:https://github.com/yexiaochai/wxdemo 我们首页功能基本完成,我对比了下实际工作中的需求,完成度有70%以上,如果再花一两天时间,便能跟之前工作做的差不多了,今天我们继续实现一个页面列表,便结束这次的学习,后面几天要出差,所以总结性的文章本周未必能出来,静待下周吧. 这里考虑demo复杂度,列表页功能完成度也仅仅完成主功能模块,与真实工作完成度对比60%左右吧,于是我们开始愉快的代码,首先是将我们

微信小程序传数组(Json字符串)到Java后端

一:小程序端: wxml中代码: <!--index.wxml--> <view> <view> <button bindtap="onShow"> 调接口 </button> </view> </view> js中代码: //index.js //获取应用实例 const app = getApp() Page({ onShow:function(){ console.log('123456') le

微信小程序 project.config.json 配置

可以在项目根目录使用 project.config.json 文件对项目进行配置. miniprogramRoot Path String 指定小程序源码的目录(需为相对路径) qcloudRoot Path String 指定腾讯云项目的目录(需为相对路径) pluginRoot Path String 指定插件项目的目录(需为相对路径) compileType String 编译类型 setting Object 项目设置 libVersion String 基础库版本 appid Stri

微信小程序——动态修改页面数据及参数传递

动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造成数据不一致,代码如下: data: { array: [{ text: '数组' }] } onLoad:function(){ this.data.array[0].text=1; console.log(this.data.array[0].text); } 修改代码: onLoad:function(

微信小程序开发-page.json解析

页面.json用来对本页面的窗口表现进行配置.它只能针对window配置,并且会覆盖 app.json 的 window 中相同的配置项. {?? ???????? ? ????/**?? ????*?以下是页面顶部导航栏设置?? ????**/?? ????"navigationBarBackgroundColor"?:?"[Color]",?//?导航栏背景颜色,默认值:#000000?? ????"navigationBarTextStyle&quo

微信小程序wxs如何使用

新建一个.wxs文件 <!-- 引入.wxs文件 src为相对路径,module指定当前模块的名称 --> <wxs module="filter" src="./func.wxs"></wxs> <view>{{filter.xxx(item)}}</view> 原文地址:https://www.cnblogs.com/wang-xx/p/11753711.html

微信小程序 watch监听数据变化 类似vue中的watch

1.参考 https://github.com/donghaohao/vuefy 2.项目使用 列表循环  图片上传对应每个学生 需要监听学生的变化  上传对应的图片 原文地址:https://www.cnblogs.com/zhengao/p/10734826.html