|
6.WXS 脚本语言 6.1 什么是 wxs1、概念- p0 ^" z/ p" C
WXS 是微信小程序中的一种脚本语言,结合 WXML,可以构建出页面的结构。类似于JavaScript,但与 JavaScript 不同,WXS 有自己的语法
! h% ~8 U8 I) r# l3 {4 l 2、wxs 和 JavaScript 的区别/ G0 I( b4 f9 e- O& H, T
% N, }" u1 A- g4 {- wxs 有自己的数据类型
. |6 x) p% A, J2 e9 B8 x1 v - wxs 支持 CommonJS 模块化规范,可以将代码拆分为多个模块,提高代码的可读性和维护性! N5 d* b1 c3 b' e% U) R9 c1 \: ]0 b
- wxs 支持基本的 JavaScript 语法和一些特有的语法,例如 模板字符串、var 等wxs 不支持 ES6 及以上的语法形式,例如:let 、const、解构等等等都不能使用
$ u3 `* d! A# m4 J- m0 ~ b 3、wxs 的使用场景
$ N, m; e% m8 K0 [% n1 m4 q' j3 v7 J- P; k
- 数据处理:实现类似于过滤器一样的功能,例如格式化日期、格式化数据等等
: Q: J. R" C9 I: L" _ - 逻辑控制:例如条件判断、循环、函数调用等等,也可以放在 wxs 中处理用以简化模板其他....2 S( {1 I% S) v
6.2 wxs 中的基础使用1、说明
* w/ t8 ?( v* [' _$ l* aWXS 代码可以编写在 wxml 文件中的 标签内,或以 .wxs 为后缀名的文件内
/ r) W; l$ D2 K 2、定义模块
9 m$ y9 [6 s5 ?' b# _& n5 G2 S- k5 n* N
- 每一个 .wxs 文件和 标签都是一个单独的模块,每个模块都有自己独立的作用域+ o J% [- H! m2 G& \+ M" ~. u7 N
- 即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现
7 d: \4 p% f' U // /wxs/tools.wxs, B6 F# p4 N+ g
​
/ q$ u! O% I2 k var name = "Hello WXS"
! i8 g6 _" F& O# L6 K) z6 N! r$ N ​
$ F- W4 ~ I; u var handler = function(val) {
, Z' b& f) a, S8 x" ?. |- Z return val.toUppercase()
5 }' ^1 y5 ?: T }
- R c' G0 }" O3 V' i ​4 {1 z6 [+ J& @" {5 v0 J
// module : 每个 wxs 模块均有一个内置的 module 对象,! i, B! i' X' ]) N: e% q: X
// exports: 通过该属性,可以对外共享本模块的私有变量与函数
" `( r/ ?. q1 {) o; b' j! J module.exports = {
) h* h# e" F" ^/ ]6 X8 A4 }2 N# u name: name,+ k$ h3 m& ]. h; H# F
handler: handler
. l2 I- Z. F: P }3、.wxml 中使用模块% D2 o: b& ]& K# ^ [, N" R
在 .wxml 中引用 wxs 文件模块,需要使用 wxs 标签,引用的 .wxs 文件必须是相对路径可以通过 module 属性指定当前 标签的模块名可以通过 src 属性可以用来引用其他的 wxs 文件模块. H$ k t7 W% t9 `0 K0 P( ^
, ~0 p3 u4 M5 C6 b i $ C2 G( ]8 {; P9 l, O) n4 z
8 j- T2 {% t8 e8 ^6 r# e ​) {: K) \% ?4 P2 @6 o2 ~+ m
{{ tools.name }} 7 f# P! e9 a: X
{{ tools.handler('wxs')}}
9 n% r" I" J9 j* H: P/ L在 .wxs 模块中使用 require 函数可以引用其他 wxs 文件模块:/ h6 N4 s$ M' v' i
var tools = require("../wxs/tools.wxs");
# Z; [" i7 k0 u3 h2 j! s4 b: i; b ​
. d8 D9 _" V: h& J n console.log(tools.name);. A/ e1 _7 V0 ]4 u- g, h; b7 `
console.log(tools.bar("wxs"))4、示例
3 [1 O0 I8 R! m. v6 D9 w0 g ​1 x a E9 F; S o
: O3 O U! n- w4 t/ P. d
$ Q; O# g7 ?# J0 n8 W: w+ v) q
5 F1 q6 \' u% v! \/ I ?" M, J
! O2 R! m* \9 Q0 J8 Y
var name = 'Tom'9 e1 h4 C- Q5 q6 C8 h8 c. `% O
​
, ]5 B& L* k6 U9 P8 d function handle() {+ b3 f" m/ k6 M. F* b( R: l
return name1 h4 [" I% F2 e& _
}
8 k" P c. P! ~9 F ​* O8 ~3 ~" n% E$ i
module.exports = {
0 d4 A6 C5 a) f4 u name: name,1 L9 B8 v2 [- g6 a
handle: handle
: q0 d( `" V3 c0 C9 ` }
$ }! o( ?! N/ J' K% P3 s + O7 P9 [2 g8 g3 T
​9 }+ Y4 m+ O" q7 G
* O* c% ?9 w- o {{ module.name }}) M) j! x5 ^ R( _, z2 `
{{ module.handle() }}
) b9 c' a, Z& `0 J ​
4 ]! ?0 t( j2 C
1 Z3 L0 E: `1 d1 Z; S
; E6 l& |* F: @8 j7 q( {
I0 R# j: s K0 T. c. E {{ module1.formatPhone('18361261111') }}
* ?% U" d c+ M- Z1 } 6.3 wxs 过滤器案例1、需求7 D# p' X6 B" R- h. k' v
实现对手机号的格式化,将手机的 第四位 到 第七位 使用 * 号代码
, l6 Z) } @4 Q file://F:/32.%E6%88%91%E7%9A%84%E5%89%8D%E7%AB%AF%E7%AC%94%E8%AE%B0/2022%E5%B9%B4%E5%89%8D%E7%AB%AF%E7%AC%94%E8%AE%B0/14-%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%9A%E7%A1%85%E8%B0%B7/01-%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%9F%BA%E7%A1%80.assets/%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%89%8B%E6%9C%BA%E5%8F%B7.jpg?lastModify=16967234372、实现步骤
+ I3 F5 L7 U& F# O/ `8 T# @9 _0 W" \3 P
- 在小程序项目中创建一个名为 /wxs/phone.wxs 的 WXS 文件,用于编写封装函数
5 N. `/ }$ T2 K8 b" G - 在 phone.wxs 文件中,编写一个名为 formatPhone 的函数,用于格式化手机号在小程序的页面中,引入 phone.wxs 文件,并调用 formatPhone 函数
: Z$ J. W! M" z0 j, B' k, s0 s 3、落地代码
3 N3 ]; Q2 ]* v9 v4 C9 s: lpages/index/index.wxs 中的代码:
4 k! W5 k9 H: P u5 P // 格式化手机
( h& f# h+ ^- b& r; V+ u function formatPhone(phone) {, U) P( f4 r7 n
// 如果手机长度不等于 11,直接将手机号返回
: g7 ~# r5 J( w5 f# u( o4 y if (phone.length != 11) {' h& \6 a5 O! I2 ]0 l3 I
return mobile;/ L/ D- f3 ]4 a" D: l# X8 U# w
}
1 ]; n5 [8 w' A+ L
|, B4 {1 Y! k+ b, Y return phone.slice(0, 3) + '****' + phone.slice(7); z$ a* T3 p. m3 s6 [
}+ t6 }& _3 A( D* X1 V& I+ u
​
( l$ y9 |8 r& P, Q // 导出模块
0 U8 K$ q: c2 _9 x3 Y$ ~ module.exports = { g* ~* i7 o+ v. x. a& z
formatPhone: formatPhone) a, F- H/ x7 a6 Q0 U% z, }1 k9 x
}9 y0 U, e( y1 @# O
pages/index/index.wxml 中的代码:
2 O0 q0 D1 s, E4 ?5 O- d5 \" t; c , ^' Z; u& ]4 I' }& N
​
( D% w& h3 \: F0 y 格式化后的号码:{{phone.formatPhone(phoneNum)}}5 E! }! f2 K! _ \' M: n; J
8 c1 k, D2 T8 T) e$ s; W; P
* D3 _9 I; k' o; [% X3 X" w) [
) e4 i" Q* E2 u8 M$ E. l
; Y; ]. M3 w, Q( c' |4 E
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见1 \* O7 H2 w4 J/ \8 r2 x9 s+ ]
, W! H' T) U+ K# x! p3 m7 P* R y: p; R, {) B
! y2 i* W" q2 t% ^+ j3 p
本资源由Java自学网收集整理【www.javazx.com】 |
|