热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

微信小程序学习之wxs使用教程

这篇文章主要给大家介绍了关于微信小程序学习之wxs使用教程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

什么是wxs?

wxs(WeiXin Script)是小程序的一套脚本语言, 结合WXML, 可以构建出页面结构.

wxs标签


module属性:

当前标签的模块名, 建议该值唯一, 若存在同名的模块名,则按照先后顺序覆盖(后者会覆盖前者).

src属性:

a. 只能引用.wxs文件, 且必须是相对路径;

b. wxs模块均为单例, wxs模块在第一次被引用时, 会自动初始化为单例对象,多个页面、多个地方、多次使用, 使用的都是同一个wxs模块对象;

c. 如果一个wxs模块在定义后一直没有被引用, 则该模块不会被解析与运行;

wxs模块

wxs代码可编写在wxml文件中的标签内, 或以.wxs为后缀的文件内(在微信开发者工具里面, 右键直接创建.wxs文件,在里面直接编写wxs脚本)

写法1如下:

// test.wxml

  module.exports = {
    msg: 'hello world'
  }

 {{utils.msg}}
// 屏幕输出: hello world

写法2如下:

// text.wxml

// 也可直接使用单标签闭合的写法
// 
 {{utils.msg}}
// test.wxs
module.exports = {
  msg: 'hello world'
}

wxs代码一般建议写在.wxs文件中.

模块说明

  1. 每一个.wxs文件和wxs标签都是一个单独的模块;
  2. 每个模块都有独立的作用域, 即在一个模块里面定义的变量与函数,默认都是私有的, 对其它模块不可见.
  3. 若一个模块想对外暴露其内部的私有变量与函数、只能通过module.exports来实现.

Q1: 若同一wxml引入多个wxs, 其中存在同名的变量or函数, 会是什么表现呢?

// test.wxml


 {{utils.msg}} + {{utils.say()}}
 {{utils1.msg}} +{{utils1.say()}}

// test.wxs
module.exports = {
  msg: 'hello test.wxs',
  say: function (){
    return 'test.wxs的say()'
  }
}
// test1.wxs
module.exports = {
  msg: 'hello test1.wxs',
  say: function (){
    return 'test1.wxs的say()'
  }
}
// 屏幕输出
// hello test.wxs + test.wxs的say()
// hello test1.wxs + test1.wxs的say()

经过验证发现, 每个模块是有独立作用域的.

Q2: 若想在.wxs模块中引入其他wxs文件模块, 该如何实现呢?

通过require函数

// test.wxs
var test1 = require('./test1.wxs')
module.exports = {
  msg: 'hello test.wxs',
  say: function (){
    console.log(test1.msg)
    return 'test.wxs的say()'
  }
}
// 控制台输出
// [WXS Runtime info] hello test1.wxs 

wxs注释

// wxml文件

// .wxs-单行注释

/**
 * .wxs-多行注释
 */
 
/*
var a = 1


上述例子中, 所有的wxs代码均被注释了, 第三种写法比较少见, 在学习的时候看到了顺手记录下.

若是.wxs文件, 则只有单行&多行2种注释方式.

wxs基础知识

加法运算(+)用作字符串的拼接;


module.exports = {
  getnum: function () {
    var a = 10
    var b = 20
    var str = a + '+' + b + '=' + (a+b) 
    return str
  }
}

{{utils.getnum()}}

不能使用``拼接运算符、否则会报错.

wxs目前支持以下几种数据类型:

number(数值)、string(字符串)、boolean(布尔值)、array(数组)、object(对象)、function(函数)、date(日期)、regexp(正则)

wxs 数据类型中时没有null/undefined的.

生成date对象需要使用getDate(), 返回一个当前时间的对象.


module.exports = {
  getNowTime: function () {
    return getDate()
  }
}

{{utils.getNowTime()}}
// 屏幕输出
// Sat May 01 2021 14:42:57 GMT+0800 (中国标准时间)

不能使用new Date(), 会报错.

不支持es6语法, 像解构啊, 箭头函数都是不支持的.

不能使用let/const申明变量、要用var,存在变量提升。


module.exports = {
  getnum: function () {
    let a = 10
    return a
  }
}

{{utils.getnum()}}

应用场景

一般后端返回给前端的是时间戳格式, 但是我们要处理成想要的时间格式, 比如yyyy-mm-dd, 此时我们就可用wxs调用时间转换函数.

也许有人要问了, 在js中用一个函数对数据进行包装, 然后再输出到页面中不也可行吗? 答案是可行的, 只是在追求一个你认为相对更优解.


module.exports = {
  formatTime: function (timeStamp) {
    var now = getDate(parseInt(timeStamp))
    var year = now.getFullYear()
    var mOnth= now.getMonth()+1 
    mOnth= month <10 &#63; '0' + month: month
    var day = now.getDate()
    day = day <10 &#63; '0' + day :day
    return year + '-' + month + '-' + day 
  }
}

{{utils.formatTime(1619852841428)}}
// 屏幕输出
// 2021-05-01

有时候后台返回的网络图片地址是相对路径, 有时候又是完整的图片路径, 若要把图片显示出来, 需要加上配置好的域名前缀.


module.exports = {
  getImg: function (url = '') {
    var origin = 'https://xxx.com'
    if (url.indexOf('https') !== -1 || url.indexOf('http') !== -1) {
      return url
    } else {
      return origin + url
    }
  }
}


// src输出
// https://xxx.com/a.png

踩坑记录

在wxml中调用时使用编译出现了Expected LineFeed

解决方案: 把ES6的东西全部换成ES5, 用var申明.

总结

到此这篇关于微信小程序学习之wxs使用教程的文章就介绍到这了,更多相关微信小程序wxs使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文详细介绍了如何使用 PHP 接收并处理微信支付的回调结果,确保支付通知能够被正确接收和响应。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 理解UML的重要性及其应用
    探讨为什么大多数开发人员难以成为架构师,介绍从现实世界到业务模型的抽象过程,并详细解释UML在软件设计中的关键作用。 ... [详细]
  • ABBYY FineReader:高效PDF转换、精准OCR识别与文档对比工具
    在处理PDF转换和OCR识别时,您是否遇到过格式混乱、识别率低或图表无法正常识别的问题?ABBYY FineReader以其强大的功能和高精度的识别技术,完美解决这些问题,帮助您轻松找到最终版文档。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 在使用Netty 4.1.48版本运行自带的HTTP服务器示例时,观察到大量本地IP环回连接。本文将探讨这些环回连接的原因,并解释其与TCP连接的关系。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
author-avatar
刘美娥94662
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有