前端专场|青训营笔记|小程序云开发基础知识

116 阅读9分钟

第一章 小程序云开发的目录结构

一、目录结构(云开发环境下,小程序的前端和后端代码均在一个目录下)

(1)cloudfunctions文件夹云开发环境下的后端代码,‘|’竖线后为云环境的名称。

(2)miniprogram文件夹云开发环境下的前端代码

(3)README文件README.md,自述文件,使用Markdown语法书写的项目描述

(4)开发工具配置project.config.json,开发工具在创建项目时自动创建的关于小程序项目的配置,例如是否使用云开发、项目名称、appid和编译配置等。

(5)utils文件夹:通常仅有一个js文件,用于存放公共的js代码,方便在不同页面调用。

(6)images文件夹:通常手动创建,用于存放小程序使用到的全部静态图片。

(7)sitemap.json: sitemap配置,用来配置小程序及其页面是否允许被微信索引。

二、代码文件类型(在一个小程序中,一共有四种类型的文件)

(1).json:用于描述页面的配置。

(2)wxml:用于描述页面的结构。

(3)wxss:用于描述页面的样子。

(4).js:用来处理页面和用户的交互。

三、.json配置

1、配置作用

. json是一种数据格式,并不是编程语言,在小程序中,JSON扮演的静态配置的角色。

.json文件的内容都是一个json对象,被包裹在一个大括号中办,通过key-value的方式来表达数据。

需要注意的是:

. json的key必须包裹在一个双引号中

. json文件中无法使用注释

2、app.json(全局配置)

(1)作用

小程序根目录下的app.json文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多tab等。

(2)字段

pages字段:用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。

window字段:定义小程序所有页面的顶部背景颜色,文字颜色定义等。

(3)常见配置项

属性类型默认值描述
navigationBarBackgroundColorHexColor#000000导航栏背景颜色
navigationBarTextStylestringwhite导航栏标题颜色,仅支持black/white
navigationBarTitleTextstring 导航栏标题文字内容

3、页面配置

(1)作用

每一个小程序页面也可以使用同名.json文件来对本页面的窗口表现进行配置,进而独立定义每个页面的一些属性,例如顶部颜色、是否允许下拉刷新等等。

(2)注意

页面配置的.json文件存放在页面文件夹中,例如“根目录/pages/index/index.json”文件描述了index页面的配置。

页面中配置项会覆盖app.json的 window 中相同的配置项。(更高优先级)

4、其他配置

(1)工具配置project.config.json

通常大家在使用一个工具的时候,都会针对各自喜好做一些个性化配置,例如界面颜色、编译配置等,这些配置会保存在此文件中。

(2)sitemap配置sitemap.json:用于配置小程序及其页面是否允许被微信索引。

第二章 小程序语法

一、wxml语法(wxml:WeiXin Markup Language)

1、基础知识

(1)什么是wxml?

是从HTML (HyperText Markup Language)衍生而来的一种专门在小程序前端页面使用的语言,这是一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。

因此,wxml与HTML一样,都是使用标记标签来描述页面结构,页面内容写在标签内部,标签由尖括号包围的关键词构成,可以分为两类。

(2)什么是组件?

组件是视图层的基本组成单元。组件自带一些功能与微信风格一致的样式。一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内。

每一种组件都有一种“独特”的功能,编写wxml的第一步就是选择合适的组件。

2、常用组件和属性

(1)通用属性

属性名类型描述注解
idString组件的唯一标识保持整个页面唯一
classString组件的样式类在对应的wxss中定义的样式类
styleString组建的内联样式可以动态设置的内联样式
hiddenBoolean组件是否显示所有组件默认显示
data-*Any自定义属性组件上触发事件时,会发送给事件处理函数
bind*/catch*EventHandler组件的事件响应详见事件

(2)视图容器view :这里是内容

作用:相当于一个盒子,使得页面更加整齐有序。

注意:标签内部可以是组件也可以是文本内容。

常用属性:class和style。

(3)文本组件text :<text class= "mytext”>今天天气真好</ text >

作用:展示文字文本,是一种基础组件。

常用属性: class和style。

(4)媒体组件

图片image :<image class= "myview" src= "logo.png">

作用:在页面中显示一张图片。

注意:支持JPG、PNG、SVG、WEBP、GIF等格式,2.3.0起支持云文件lD。

常用属性:class和style。

属性类型默认值必填说明最低版本
srcstring 图片资源地址1.0.0
modestringscaleToFill图片裁剪、缩放的模式1.0.0

(5)表单组件

按钮button :<button class= "myview" type= "default" bindtap= "action”>

这里是一个按钮

</ button >

作用:在页面中显示一个按钮。

常用属性:class和style。

属性类型默认值必填说明最低版本
sizestringdefault按钮大小1.0.0
typestringdefault按钮的样式类型1.0.0
disabledbooleanfalse是否禁用1.0.0
open-typestring 微信开放能力1.0.0

输入框input :<input class= "myview"value=“初始内容”type= “text" placeholder=“请在此输入”> </ input >

作用:在页面中显示一个输入框。

常用属性:class和style。

属性说明属性说明
value输入框的初识内容placeholder-style指定placeholder的样式
typeinput类型placeholder-class指定placeholder的样式类
password是否时密码类型disabled是否禁用
placeholder输入框为空时的占位符maxlength最大输入长度,设置为-1的时候不限制最大长度

二、数据绑定和渲染

1、什么是数据绑定?

通过{{}}的语法把一个变量绑定到界面上

2、如何使用数据绑定

(1)使用方法

wxml文件:在标签内容或者属性中使用{{变量名}}

js文件:对该变量进行定义

当wxml在加载组件及组件的属性时,会自动将该格式下的变量名拿到js文件中寻找,并将数据值渲染到页面上。

(2)使用位置

内容:{{imessage }}

组件属性(需要在双引号之内):

控制属性(需要在双引号之内):

关键字(需要在双引号之内):</ checkbox>,注意:这里的true和false并不代表变量,而是boolean类型,表示真值和假值。

(3)可以进行简单运算

三元运算:Hidden

算数运算:{{a + b}}+ {{c}} + d,注意:这里的加号并非运算符而是字符串,若a=1,b=2,c=3,d=4则最终显示3+3+d,逻辑判断、字符串运算、数据路径运算等,也可以在双重花括号内直接进行组合,构成新的对象或者数组。

3、渲染

(1)列表渲染(wx:for=””)

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

(2)条件渲染(wx:if=””)

在框架中,使用wx:if="{{condition}}”来判断是否需要渲染该代码块:

true

也可以用wx:elif 和wx:else来添加一个else块:

<view wx : if="{{length > 5}}">1

<view wx :elif="{{length > 2}}">2

<view wx :else>3

如果要一次性判断多个组件标签,可以使用一个标签将多个组件包装起来,并在上边使用wx :if控制属性。

`<`block wx :if="{{true}}">

    `<`view>view1</view>

    `<`view>view2< /view>

`</`block>

三、事件响应

1、什么是事件

事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如id, dataset, touches。

2、处理事件响应步骤

(1)第一步:在组件中绑定一个事件处理函数。

将点击事件绑定在组件上的方法:使用bindtap属性,属性值为js中的事件处理函数的函数名。

<view id="tapTest" data-hi="weChat" bindtap="tapName ">Click me!

(2)第二步:在相应的定义中写上相应的事件处理函数,参数是event。

对于点击事件,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。

3、通过事件响应在视图层获取数据

通过事件响应可以在逻辑层(js)中获取到视图层(wxml)中的数据。

获取方式:对任意一个组件使用id属性和data-属性,同时绑定事件响应(如bindtap)即可,绑定什么变量名就获取什么变量名。

获取绑定的data数据wxml组件绑定方式:data-变量名,例如data-x,获取到的变量名为x,可以对一个组件设置多个data-xxx例如:

<view id="tapTest" data-hil"weChat" bindtap="tapName">Click me !

在页面对应的js文件中编写事件响应的函数

四、视图层数据更新

1、this关键字

(1)this关键字:表示当前对象的一个引用。

(2)使用方法

我们可以使用this来访问页面的数据或者调用页面内的函数,例如,访问页面的数据:this.data.xxx,(这里的data是我们在页面中定义的页面初始数据那一部分)

调用页面内的函数:this.onload()(这里的onLoad是我们在页面中定义的函数的函数名称)(3)注意

如果我们在API中使用this,其将不会指向页面,无法访问页面数据及函数。需要我们在调用API之前暂存当时指向页面的this,例如:var that = this。

this不是固定不变的,它会随着执行环境的改变而改变。

在小程序中,我们在js文件的任何位置都可以将this当作变量使用。当我们在某个位置使用时,其所指向的对象往往是上一层对象。

五、数据传递

1、全局数据

(1)全局数据在哪?——在app.js文件中:

App({

    globalData: {

    userInfo: null

}

})

(2)全局数据的读写——getAPP():该方法指向了该小程序下的app.js文件

2、页面之间传递

1、页面之间传递数据的方法

(1)通过全局数据:将数据保存在全局数据中,每个页面再从全局数据中读取。

(2)通过URL传递:通过页面跳转过程中携带参数。

(3)通过页面间事件通信通道(EventChannel)传递参数