|
6.WXS 脚本语言 6.1 什么是 wxs1、概念
9 s1 s, q9 |/ I+ e3 v& bWXS 是微信小程序中的一种脚本语言,结合 WXML,可以构建出页面的结构。类似于JavaScript,但与 JavaScript 不同,WXS 有自己的语法
) f# ?; D0 ]% k( d" i$ z+ Q 2、wxs 和 JavaScript 的区别6 i, O+ q; z. @/ b
' R+ u& B! b1 P: m/ I& V, f6 n
- wxs 有自己的数据类型
z5 \# ~* s; e2 w3 ]" M6 O$ H - wxs 支持 CommonJS 模块化规范,可以将代码拆分为多个模块,提高代码的可读性和维护性
* m9 s7 d6 ?+ K# f - wxs 支持基本的 JavaScript 语法和一些特有的语法,例如 模板字符串、var 等wxs 不支持 ES6 及以上的语法形式,例如:let 、const、解构等等等都不能使用: t+ G% S5 s' j7 V5 q: t2 r% W
3、wxs 的使用场景$ N) L9 n2 A* w% S: C
1 S( r! P% Y$ t: b; H1 K
- 数据处理:实现类似于过滤器一样的功能,例如格式化日期、格式化数据等等
" ^+ D* s) A2 r - 逻辑控制:例如条件判断、循环、函数调用等等,也可以放在 wxs 中处理用以简化模板其他....
, ?( _2 }- J) H+ V 6.2 wxs 中的基础使用1、说明
: c; X4 ?* v* IWXS 代码可以编写在 wxml 文件中的 标签内,或以 .wxs 为后缀名的文件内
9 t$ K7 C( b0 f4 [4 z 2、定义模块
, [! c( j' f+ v L
. Q) T# o3 E3 O3 x F/ Z# i- 每一个 .wxs 文件和 标签都是一个单独的模块,每个模块都有自己独立的作用域6 B' g& l8 J+ u; e0 j& s3 o7 K
- 即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现
4 g$ C. [ y2 A9 f+ p0 U0 _$ O // /wxs/tools.wxs
: F6 i( H# r4 l& V9 ]% { ​& n( y, f+ V8 x4 |
var name = "Hello WXS"* q. K9 k7 k# N
​
$ x5 E% r7 Y. X/ E8 p4 a, \ var handler = function(val) {
: ~% Y o1 J3 D' V; X7 G return val.toUppercase()
! Y$ P# r6 k: W' F- J }
9 e6 B# ^+ [& M: e; l8 r0 B ​
+ z! o3 ?6 C( k# T6 ] // module : 每个 wxs 模块均有一个内置的 module 对象,
* i2 z: F5 c5 ] i4 ?) w7 \9 O // exports: 通过该属性,可以对外共享本模块的私有变量与函数; C' c! A: {# O/ e# t
module.exports = {9 F8 Z- u* ~* T2 ?6 [' H
name: name,
G: h6 r2 h H handler: handler
" q- F. j( H( ~ }3、.wxml 中使用模块
, O+ D) _1 P7 c! z" q在 .wxml 中引用 wxs 文件模块,需要使用 wxs 标签,引用的 .wxs 文件必须是相对路径可以通过 module 属性指定当前 标签的模块名可以通过 src 属性可以用来引用其他的 wxs 文件模块
6 O [7 \' L. T0 N# |! C& ]
1 w" d* z" x, e
5 R6 J/ p; \/ `* q7 w6 S , q A) g1 u+ C0 g% }9 Q" p+ C. z
​+ F( m7 O" q4 A9 v% P" f
{{ tools.name }} ) I: s. }( d4 n* S9 L
{{ tools.handler('wxs')}}
$ @& ?8 t9 P* \在 .wxs 模块中使用 require 函数可以引用其他 wxs 文件模块:# ?, z* I. h* U: U% \% x+ b7 @
var tools = require("../wxs/tools.wxs");1 O9 T3 b d: ?3 i
​- N8 R4 _$ k0 |5 m
console.log(tools.name);3 v- s" V8 z, ?' P
console.log(tools.bar("wxs"))4、示例 1 Y- }6 i0 w% ]8 L
​6 ?! }. D. `( W
0 e9 x5 |2 J6 T% E' D* \
( P4 E% _) G6 c
( P' c/ D/ G* f2 c/ r& [ ( H: n% J! E7 r4 q
var name = 'Tom'
5 m9 n5 f1 h m# `$ | ​
$ ~' n) K- _$ Q* l% }, k! x) R6 F function handle() {4 n" a1 {! W8 E: N6 o5 z
return name# r% ~7 a2 m( S# c+ G/ ?
}* W! F, X/ X4 i
​) d- R( L2 l9 i3 {. O
module.exports = {, T, W6 b" F2 K, \6 T2 k
name: name,
$ \0 f8 ~% i& ?- x4 E5 @; \ handle: handle
( @7 G8 s1 n- m2 u5 ~) R+ R }4 [) W7 w- c! X& s: X% I
! {0 T0 ?1 o; _" \9 w ​* `$ z) B6 X* @) x+ `4 S: x
0 [, h# J6 r+ X
{{ module.name }}
( d5 Y1 h" g+ v! F! R {{ module.handle() }}9 i/ m+ }( K4 B* T8 w, R" H
​1 W8 _! y6 R1 H
. S7 H( [* M/ J7 p" v* A
( \/ v! V6 J8 C
9 X8 O1 W& X9 S1 M {{ module1.formatPhone('18361261111') }}
8 |' f# T6 m% t* l 6.3 wxs 过滤器案例1、需求3 C! a5 O5 |. D. M
实现对手机号的格式化,将手机的 第四位 到 第七位 使用 * 号代码9 y9 m0 m7 S6 ~- Y) t5 _
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、实现步骤# e! v. b6 D- b+ Y- s. z
' s9 x6 c. H% @* k( o# c8 H/ w# {/ L
- 在小程序项目中创建一个名为 /wxs/phone.wxs 的 WXS 文件,用于编写封装函数
# q! S( K3 J1 X1 v& D- I - 在 phone.wxs 文件中,编写一个名为 formatPhone 的函数,用于格式化手机号在小程序的页面中,引入 phone.wxs 文件,并调用 formatPhone 函数
/ f/ S1 U* k) f6 ~ 3、落地代码
" U% E$ K/ T2 [1 G; x8 p4 Lpages/index/index.wxs 中的代码:
7 i# G; K+ T) N5 O! k9 H // 格式化手机
. a' Y) Z: s4 }6 s5 `% X function formatPhone(phone) {! ?* k2 P2 E( \: \- v4 E2 f
// 如果手机长度不等于 11,直接将手机号返回3 E3 P( z* p) X! O# F, ]
if (phone.length != 11) {
, P1 M' X; E$ l return mobile;
}8 J3 p" J( {9 g+ t* l/ q }
. H3 V. u: C3 U3 y/ h7 M8 Y
1 u% R6 K$ Q" A$ p return phone.slice(0, 3) + '****' + phone.slice(7);
2 H1 m6 u4 c, x6 B }) Q- D( Y; O8 b) U! p- v5 U
​$ B. r) g7 f& ?" K
// 导出模块
8 U2 t& c! `3 l. _ module.exports = {
+ ~3 j# p- i, y# o, K) G+ \ formatPhone: formatPhone
+ X. d6 f U5 f3 z. Q# f }
. j2 e$ G6 m/ U1 Epages/index/index.wxml 中的代码:0 Z7 g8 A+ q# v5 D" m
# X# w! P& b, \: b ​
9 x! m3 c6 B8 m0 A/ m5 V 格式化后的号码:{{phone.formatPhone(phoneNum)}}$ S. I; |! M: x5 ^
% `& A& i" U5 r! o) o7 H
7 k9 s9 _' p7 O$ I$ L
5 N* g/ G, d; Y2 U6 P& n! |+ I8 H. o ]
i+ _$ M+ S; F- U
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见
" S: p9 a4 y6 [- h1 |5 b5 \0 i5 x$ d! L5 R C6 n
/ p& A; d; }( _9 u) k: e4 v7 ]2 y! [" p# E
本资源由Java自学网收集整理【www.javazx.com】 |
|