前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# WXML语法结构

首先我们需要下载 微信开发者工具。

打开开发者工具后,首先新建一个项目,选择左侧菜单中小程序按钮,点击右侧加号进行创建。

创建的时候需要填写一些信息,比如路径、APPID等。待创建完成后,你会看到和下方一样的官方界面。我们通过官方给的这个基础项目来慢慢的深入了解。

我们可以直接在微信开发者工具中查看到渲染出来的页面、项目目录结构、控制台等。此处的控制台操作与平常开发中使用的浏览器的控制台十分相似。

在项目目录结构中可以看到/pages中分为两个页面结构。index、logs。index则为上面看到的入口页面,点击头像会跳转至logs操作日志页面。

这里顺便提一下其中的app.js文件,打开根目录的小程序实例注册文件app.js。文件中App实例方法有绑定生命周期回调函数、错误监听和页面不存在监听函数、全局参数等等。结构如下:

可以看到除了生命周期之类的回调函数,调用了很多wx.xx的方法,开发过公众号h5点同学应该很熟悉,微信SDK API。微信集成了很多方法以SDK的方式开放给开发者来使用,正是以wx. 的方式调用。小程序中也是一样的,但是api多了很多,放这里一个 传送门 。

在大概了解了基础目录结构之后,我们具体看一下WXML文件。

网页编程一般采用的是HTML + CSS + JS的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样子,JS 通常是用来处理这个页面和用户的交互。

同样道理,在小程序中也有同样的角色,其中 WXML 充当的就是类似 HTML 的角色。打开 pages/index/index.wxml目录后,你会看到如下的内容:

一眼看上去之后,是不是有种感觉,文件结构与HTML类似,与VUE更像,一些语法类似wx:if 这样的写法也有很多,都是这样写在模版文件中的。

但是还有很多不一样的地方,可以很明显的看到的是<View />标签。我们没有在别的文件中见过这样的标签,再看看其他微信小程序自带的一些组件写法<block />、<text />等等。那么这些是什么呢。

这是小程序框架设计的一套标签语言,结合小程序的基础组件、事件系统,可以构建出页面的结构。 WXML 文件后缀名是 .wxml ,简单的 WXML语句在语法上同 HTML 非常相似。WXML 要求标签必须是严格闭合的,没有闭合将会导致编译错误。属性也是大小写敏感的,也就是说class和 Class 在 WXML 中是不同的属性。

WXML肯定是有自己独特的“个性”的,先看一下wxml具体的使用方式,通过具体的使用方式来对比一下和Web中html的区别。

# 行内属性

所有的标签都有一些相同的行内属性

  • id
  • style
  • class
  • data-*
  • hidden
  • bind*/catch*

# 数据绑定

在 Web 开发中,开发者使用 JavaScript 通过 Dom 接口来完成界面的实时更新。 在小程序中,使用 WXML 语言所提供的数据绑定功能,来完成此项功能。WXML 通过 {{变量名}} 来绑定 WXML 文件和对应的javaScript文件中的data对象属性。

# 逻辑语法

通过{ 变量名 } 语法可以使得 WXML 拥有动态渲染的能力,除此外还可以在 "{}" 内进行简单的逻辑运算。

  • 三元运算
  • 算数运算
  • 字符串的拼接
  • 放置常量(数字、字符串或者是数组)

# 条件逻辑

WXML 中,使用if-else来判断是否需要渲染该代码块:

# 列表渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为 item。

# 模板

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。使用 name 属性,作为模板的名字。然后在<template />内定义代码片段。

fe

基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏