|
6.WXS 脚本语言 6.1 什么是 wxs1、概念3 {/ u# R6 |8 d! g: W
WXS 是微信小程序中的一种脚本语言,结合 WXML,可以构建出页面的结构。类似于JavaScript,但与 JavaScript 不同,WXS 有自己的语法
* y( g3 _2 K8 }1 E" l* S% f 2、wxs 和 JavaScript 的区别
$ N* u2 L) S$ X9 T( w+ C6 e8 S o* e9 l; z
- wxs 有自己的数据类型; l/ T+ d' X( K. n) r* }- X
- wxs 支持 CommonJS 模块化规范,可以将代码拆分为多个模块,提高代码的可读性和维护性6 n2 I) q! d( m% a5 r& R* z
- wxs 支持基本的 JavaScript 语法和一些特有的语法,例如 模板字符串、var 等wxs 不支持 ES6 及以上的语法形式,例如:let 、const、解构等等等都不能使用
. D0 C6 H* `1 J2 [ 3、wxs 的使用场景
/ r* E; |5 H+ k. O/ \' M, t
, M$ c* I2 W8 S' f5 p- 数据处理:实现类似于过滤器一样的功能,例如格式化日期、格式化数据等等& Q1 M" n# M6 S) ]
- 逻辑控制:例如条件判断、循环、函数调用等等,也可以放在 wxs 中处理用以简化模板其他....* c- x" b7 g5 n/ z H7 L
6.2 wxs 中的基础使用1、说明
+ a- j0 Q7 p u7 k5 ^WXS 代码可以编写在 wxml 文件中的 标签内,或以 .wxs 为后缀名的文件内
n4 e" U' W! W' h9 c 2、定义模块' u9 v. l h. O+ B- [" \
& D. p! n0 w% k5 j: H
- 每一个 .wxs 文件和 标签都是一个单独的模块,每个模块都有自己独立的作用域0 n! H) f& j2 f
- 即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现
& {- T& a' ~& z // /wxs/tools.wxs
_! e! @/ B% L) N K7 u% G ​( f# q7 ], f/ n0 Q6 U" r& e
var name = "Hello WXS"
( d9 ~' G j4 t# h( _" u ​
7 r! _0 M! L5 Y8 h0 p: r6 l8 l var handler = function(val) {
3 a0 m8 [' `6 L' ]4 O# G L4 C return val.toUppercase()- F6 \" d0 K$ Z2 |! x- E2 M# W. R
}0 l" b- V( k/ q0 o% t' \" s
​
) d) N& N* A, F: i6 [; ^: C // module : 每个 wxs 模块均有一个内置的 module 对象,, r- T' w# n6 z- s6 t: S: H$ D
// exports: 通过该属性,可以对外共享本模块的私有变量与函数
; {5 y6 l: F- W& c4 {) L( u$ a module.exports = {
) R6 `* H6 V. A6 f, e+ } name: name,
! b! B; L: Z* t& {# U# U% `8 ] handler: handler1 ]( L5 h4 A% b# [2 W
}3、.wxml 中使用模块
" b5 G T1 j$ U3 {8 s1 U9 I, g9 `在 .wxml 中引用 wxs 文件模块,需要使用 wxs 标签,引用的 .wxs 文件必须是相对路径可以通过 module 属性指定当前 标签的模块名可以通过 src 属性可以用来引用其他的 wxs 文件模块
# m$ C" H$ G; [1 i! ~ @! f7 r% j$ g+ @4 D* Y+ }+ I2 m
$ K# o. d; L) c0 r) S# w0 S
g4 W2 T* q& B- z' R* t1 L/ \ ​
+ n( g' Y. B; j4 V8 ~" @ {{ tools.name }} : _. Q; L1 q5 ?) T' _9 @! {
{{ tools.handler('wxs')}} # b- u( i; C9 L* U
在 .wxs 模块中使用 require 函数可以引用其他 wxs 文件模块:
/ f1 T. K" r5 K. P5 L/ G var tools = require("../wxs/tools.wxs");2 G2 X/ c$ A4 D1 m/ E
​: K" H+ @! y2 @$ x& ^4 l( {+ G
console.log(tools.name);
2 R# u( Q9 H" J9 V& A console.log(tools.bar("wxs"))4、示例 " ?* b- b% n4 F8 A4 K; Y5 p8 m
​
: w b3 }3 w6 h0 {& { 9 _5 E1 P. H& F
. V; x/ Y0 A: U5 T6 {- B( f 0 Z: P) p, \) @' x( j/ V4 n. D/ r
6 D2 H3 T+ P$ v; D
var name = 'Tom'
+ h) O% ?9 M& Y8 l' q ​
. l p, |. J7 `" F# e function handle() {
" b/ r6 _; H$ T4 T5 \) d! v return name
8 S: p! c0 n& c. _- i }" g- t2 z, L& j! C
​' d1 V- p2 Y5 [# P7 ^+ w
module.exports = {
1 `$ J E% ^: ?' U( Q4 I7 C7 Z name: name,
( U ~. K/ b& Z% W3 A& T5 A8 M handle: handle5 X3 q, @! e9 O' K
}
+ P: f* c' c& l8 w 9 T( t6 q& k1 G# n: Q' U: o
​
; K, F" h. _1 m4 n) G! {3 [: F ' Y w" F O4 s f
{{ module.name }}& d( [8 b1 I. |6 R8 v
{{ module.handle() }}7 l9 M/ L+ }: j9 V
​! k& c7 s4 d$ C0 N8 e- v
1 B7 V5 A& _0 ^0 b; x% A+ L- [; _ 9 a8 X% B% ]. x2 c- U
/ H- Z1 m9 E" Q: [" |6 e
{{ module1.formatPhone('18361261111') }}
, D5 }) G" U! M9 j/ p- C 6.3 wxs 过滤器案例1、需求
3 y% ^/ }! B1 ^; B$ S$ E4 G3 J7 \实现对手机号的格式化,将手机的 第四位 到 第七位 使用 * 号代码
4 ?" f8 b+ h7 I* L" D" V/ N 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、实现步骤) V2 B% j' M: u P! g: Y; o O
0 v3 b' Q4 x) ^; W; k- 在小程序项目中创建一个名为 /wxs/phone.wxs 的 WXS 文件,用于编写封装函数: x. t& x7 _7 f! f% ^2 g, y' Q
- 在 phone.wxs 文件中,编写一个名为 formatPhone 的函数,用于格式化手机号在小程序的页面中,引入 phone.wxs 文件,并调用 formatPhone 函数: x* f/ K) x8 U3 i5 x4 b! G
3、落地代码" u* p3 X' v8 f9 V* E+ E
pages/index/index.wxs 中的代码:- e1 F9 t/ z' R `+ d) p
// 格式化手机
& v" q+ K2 W; o6 k* v! a" C function formatPhone(phone) {8 O2 q2 s% `6 w0 x
// 如果手机长度不等于 11,直接将手机号返回
' Y* n3 ^* U3 y# \ if (phone.length != 11) {# b" }! ?0 H# U+ I& S
return mobile;
1 \' F! ^% J7 X O" z }
# V G, [" h# x4 T' F7 k 7 g! m( B, S! `( [5 m& A3 R! D
return phone.slice(0, 3) + '****' + phone.slice(7);
9 d9 g8 I$ Y) O }
8 i4 e" ?, F0 ?' Q, m2 }7 `9 F ​; l- Q0 o+ _- m) y" B
// 导出模块
$ r+ F/ T/ u: g, H module.exports = {8 w. f0 ?6 Z: t2 }+ i6 ^5 W1 S
formatPhone: formatPhone5 t! [: S/ I: G1 n& G8 E f
}
; m/ J; z8 p9 Y+ D, h8 E) hpages/index/index.wxml 中的代码:
4 X% u! o0 `) v: v% H! C+ c 9 z3 v9 t% I2 O) ?8 }% K$ Z2 h
​
$ Z4 H& b7 E: J 格式化后的号码:{{phone.formatPhone(phoneNum)}}' x: b" o' e) R5 q: H( L
3 D0 D' C. ^3 A/ V% v0 O" D6 l' J/ T# L8 ~8 b( M6 _, a. I) f0 C
+ A# x$ ]8 R9 Z! r$ [
+ f. c% D; y/ F- O7 p& @
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见' T! m5 H5 E: T4 y y+ N: }
* D) U! ?/ R; L0 g2 ^% s7 y2 |
. Z+ h9 d0 T" W- ~+ F$ E* R( N
" C, ^8 c1 E2 S4 M本资源由Java自学网收集整理【www.javazx.com】 |
|