微信小程序零基础入门(上)

目录

第一章、前言

1.1 小程序与网页开发的区别

1.2 首次开发小程序的准备工作

第二章、小程序基础结构了解

2.1 项目构成

2.1.1 项目的基本组成结构

2.1.2 小程序页面的组成部分

2.2 JSON配置文件

2.2.1 JSON配置文件的作用

2.2.2 新建小程序页面

2.2.3 修改项目首页

2.2.4 什么是WXML

2.2.5 什么是WXSS

第三章、小程序的宿主环境了解

3.1 宿主环境简介

3.2 通信模型

3.3 运行机制

3.4 组件

3.4.1 组件分类

3.4.2 常用的视图容器组件

3.4.3 常用的基础内容组件

3.4.4 常用的其他组件

3.5 API

第四章、WXML模板语法

4.1 数据绑定

4.2 事件绑定

第五章、WXML模板语法

5.1 条件渲染

5.2 列表渲染

第六章、配置

6.1 全局配置

6.1.1 window

6.1.2 tabBar

6.2 页面配置

6.3 网络数据请求


第一章、前言

该文章会将微信小程序内的一些文件结构、作用、以及小程序内的组件、语法等等都会做详细的赘述,同时我会类比为vue2让我们更加容易的理解小程序的知识。

1.1 小程序与网页开发的区别

(1)运行环境

        ·网页:运行在浏览器环境

        ·小程序:运行在微信环境

(2)API

       因为运行环境的不同,所以在小程序中无法调用DOM和BOM的API;但是小程序可以调用微信程序提供的各种API,例如:扫码、支付、地理定位……

(3)开发模式

        ·网页:浏览器+代码编辑器

        ·小程序:有一套自己的开发模式——

                - 申请小程序开发账号

                - 安装小程序开发者工具

                - 创建和配置小程序项目

1.2 首次开发小程序的准备工作

(1)注册登录小程序开发账号

微信公众平台

(2)登录成功后需要获取AppID

小程序

(3)下载安装微信开发小程序、扫码登录

        ·下载

微信开发者工具(稳定版 Stable Build)下载地址与更新日志 | 微信开放文档

        ·安装、首次创建微信小程序项目

微信小程序零基础入门【小程序的下载、安装与首项目配置】_❆VE❆的博客-CSDN博客

第二章、小程序基础结构了解

2.1 项目构成

2.1.1 项目的基本组成结构

        · 根目录下的文件

(1)pages用来存放所有小程序的页面

(2)utils用来存放工具性质的模块(例如:格式化时间的自定义模块)

(3)app.js小程序项目的入口文件

(4)app.json小程序项目的全局配置文件

(5)app.wxss小程序项目的全局样式文件

(6)project.config.json项目的配置文件

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

2.1.2 小程序页面的组成部分

        ·pages目录中以单独的文件夹存在,每个页面由4个基本文件组成

(1).js文件(页面的脚本文件,存放页面的数据、事件处理函数等等)

(2).json文件(当前页面的配置文件,配置窗口的外观、表现等)

(3).wxml文件(当前页面的模板结构文件) -- 类似html

(4).wxss文件(当前页面的样式表文件) -- 类似css

2.2 JSON配置文件

2.2.1 JSON配置文件的作用

(1) JSON是一种数据格式,在实际开发中,JSON总是以配置文件的形式出现。小程序中也一样:通过不同的.json配置文件,可以对小程序配置项目进行不同级别的配置

(2) 4种json配置文件

        · 项目根目录中app.json配置文件 ---> app.json是当前小程序的全局配置,包括小程序的所有页面路径、窗口外观、界面表现、底部tab等等

        -- pags:用来记录当前小程序所有页面的路径

        -- window:全局定义小程序所有页面的背景色、文字颜色等

        -- style:全局定义小程序组件所使用的样式版本

        -- sitemapLocation:指明sitemap.json的位置

        · 项目根目录中project.config.json配置文件; ---> 用来记录我们对小程序开发工具所做的个性化配置

        -- setting中保存了编译相关的配置

        -- projectname中保存的项目名称

        -- appid中保存的是小程序的账号ID

        ·项目根目录中sitemap.json配置文件  ---> 微信已经开放了小程序内搜索,效果类似与pc页面的SEO。它是用来配置小程序页面是否允许微信索引

        ·每个页面文件夹中的.json配置文件  ---> 对本页面的窗口外观进行配置,页面中的配置项会覆盖app.json的window中的相同配置项 

2.2.2 新建小程序页面

        在根目录app.json   --> pages中新增页面的存放路径(填写路径,微信小程序会自动创建基本页面的文件夹

"pages":[
    "pages/home/home",
    "pages/message/message",
    "pages/contact/contact"
  ],

2.2.3 修改项目首页

        为了方便我们在开发中能看着对应页写代码,我们可以把将存放的路径放在首行,微信小程序就会展示放在首行路径对应的页面。

        以上为例:我们直接展示的就是home页面

2.2.4 什么是WXML

(1)定义:WXML是小程序框架设计的一套标签语言,用来构建小程序页面的结构,其作用类似于网页的HTML。

(2)与HTML的区别:

        · 标签名称不同

                -- HTML:(div,span,img,a)

                -- WXML:(view,text,image,navigator) --与上对应的

        · 属性节点不同

                -- HTML:

<a herf="#">超链接</a>

                -- WXML:

<navigator url="pages/home/home"></navigator>

        · 提供了类似于Vue的模板语法(优先学习vue2)

                -- 数据绑定

                -- 列表渲染

                -- 条件渲染

2.2.5 什么是WXSS

(1)一套样式语言,用于描述WXML的组件样式,类似于网页开发中的css

(2)WXSS与CSS的区别:

        · 新增了rpx尺寸单位

                -- 什么是rpx:可以根据屏幕宽度进行自适应。规定屏幕宽度为750rpx。

                                      公式:1rpx = (屏幕宽度)/ 750rpx

                -- CSS:需要手动进行像素单位换算,例如rem

                -- WXSS:在底层支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算

        · 提供全局样式和局部样式

               项目根目录中的app.wxss会作用于所有小程序页面;局部页面的 .wxss 样式仅对当前页面生效

        · WXSS仅支持部分CSS选择器

                .class和#id、element(标签元素)、并集选择器,后代选择器、::after 和::before等伪类选择器/伪元素选择器

第三章、小程序的宿主环境了解

3.1 宿主环境简介

(1)什么是宿主环境:指的是程序运行所必须的依赖环境

(2)小程序的宿主环境:手机微信

(3)小程序宿主环境包括的内容:通信模式、运行机制、组件、API

3.2 通信模型

 (1)小程序中通信的主体是渲染层和逻辑层

        · WXML模板和WXSS样式工作在渲染层

        · JS脚本工作在逻辑层

(2)小程序中的通信模型分为两部分:

        ·渲染层和逻辑层之间的通信——由微信客户端进行转发

        ·逻辑层和第三方服务器之间的通信——由微信客户端进行转发

3.3 运行机制

(1)小程序的启动过程

        -- 把小程序的代码包下载到本地

        -- 解析app.json全局配置文件

        -- 执行app.js小程序入口文件,调用App()创建小程序实例

        -- 渲染小程序首页

        -- 小程序启动完成

(2)页面的渲染过程

        -- 加载解析页面的.json配置文件

        -- 加载页面的.wxml模板和.wxss样式

        -- 执行页面的.js文件,调用Page()创建页面的实例

        -- 页面渲染完成

3.4 组件

官方组件库:视图容器 | 微信开放文档

3.4.1 组件分类

小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。官方把小程序的组件分成9大类——

(1)视图容器

(2)基础内容组件

(3)表单组件

(4)导航组件

(5)媒体组件

(6)map地图组件

(7)canvas画布组件

(8)开放能力

(9)无障碍访问

3.4.2 常用的视图容器组件

(1)view

        -- 普通的视图区域

        -- 类似于HTML中的div,是一个块级元素

        -- 常用来实现页面的布局效果

        -- 使用方法:

                当成写页面时的div使用

(2)scroll-view

        -- 可滚动的视图区域

        -- 常用来实现滚动列表效果

        -- 使用方法:

                ·添加 scroll-y 属性:允许在纵向上滚动

                ·添加 scroll-x 属性:允许在横向上滚动

                使用竖向滚动时,必须给scroll-view一个固定的高度

.container{
  width: 100px;
  height: 150px;
}
scroll-view的使用--需要给高度/宽度 
<scroll-view class="container" scroll-y>
  <view>A</view>
  <view>B</view>
  <view>C</view>
</scroll-view>

(3)swiper和swiper-item

        -- 轮播图容器组件和轮播图item组件

        -- 使用方法:

                两者搭配使用,在swiper-item中加入对应的轮播图内容

                常用属性--

                        · indicator-dots显示指示点

                        · indicator-color指示点的颜色

                        · indicator-active-color当前指示点的颜色

                        · autopaly 是否自动切换

                        · interval自动切换的时间间隔

                        · circular是否采用衔接滑动

.swiper-contaner{
  height: 150px;
}
.item{
  height: 100%;
  line-height: 150px;
  text-align: center;
}
swiper-item:nth-child(1) .item{
  background-color: skyblue;
}
swiper-item:nth-child(2) .item{
  background-color: red;
}
swiper-item:nth-child(3) .item{
  background-color: greenyellow;
}
<swiper class="swiper-container" indicator-dots>
  <!-- 第一个轮播图 -->
  <swiper-item>
    <view class="item">A</view>
  </swiper-item>
  <!-- 第二个轮播图 -->
  <swiper-item>
    <view class="item">B</view>
  </swiper-item>
  <!-- 第三个轮播图 -->
  <swiper-item>
    <view class="item">C</view>
  </swiper-item>
</swiper>

3.4.3 常用的基础内容组件

(1)text

        -- 文本组件

        -- 类似于HTLML中的span标签,是一个行内元素

        -- 使用方法:
                可以通过text组件的selectable属性,实现长按选中文本内容效果

<view>
  手机号支持长按选中效果:
  <text selectable>1393294928</text>
</view>

(2)rich-text

        -- 富文本组件

        -- 支持把HTML字符串渲染为WXML结构

        -- 使用方法:

                通过rich-text组件的nodes属性节点,把HTML字符串渲染为对应的UI结果

<rich-text nodes="<h1 style='color:red;'>标题</h1>"></rich-text>

3.4.4 常用的其他组件

(1)button

        -- 按钮组件

        -- 功能比HTML的button按钮丰富

        -- 通过open-type属性可以调用微信提供的各个功能(客服、获取用户授权、获取用户信息等)

        -- 使用方法: 

<view>----------通过type指定按钮类型--------</view>
<button>默认按钮</button>
<button type="primary">主色按钮</button>
<button type="warn">警告按钮</button>
<view>----------size="mini"小尺寸按钮------</view>
<button size="mini">默认按钮</button>
<button size="mini" type="primary">主色按钮</button>
<button size="mini" type="warn">警告按钮</button>
<view>----------plain镂空按钮------</view>
<button size="mini" plain>默认按钮</button>
<button size="mini" type="primary" plain>主色按钮</button>
<button size="mini" type="warn" plain>警告按钮</button>

(2)image

        --图片组件

        --image组件默认宽约300px,高度240px

        -- 使用方法:

<view>----------image图片组件------</view>
<image style="border: 1px solid red;"></image>
<image src="/images/1.jpg"></image>
<image src="/images/1.jpg" mode="aspectFill"></image>
<image src="/images/1.jpg" mode="aspectFit"></image>
<image src="/images/1.jpg" mode="heightFix"></image>
<image src="/images/1.jpg" mode="widthFix"></image>

        -- image常用属性:

                ·scaleToFill 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素

                ·aspectFit 保持纵横比缩放图片,使图片的长边能完全显示出来

                ·aspectFill 保持纵横比缩放图片,使图片的短边能完全显示出来

                ·widthFix 宽度不变,高度自动变化

                ·heightFix 高度不变,宽度自动变化

(3)navigator

        -- 页面导航组件

        -- 类似于html中的a链接

        -- 使用方法:

<navigator url="/pages/index/index">我的index</navigator>

3.5 API

微信开发文档API:基础 | 微信开放文档

(1)事件监听API

        ·特点:以on开头,用来监听某些事件监听的触发

        ·例子:wx.onWindowResize(function callback)监听窗口尺寸变化的事件

(2)同步API

        ·特点1:以Sync结尾的API都是同步API

        ·特点2:同步API的执行结果,可以通过函数返回值直接获取,如果执行出错,会抛出异常

        ·例子:wx.setStorageSync('key','value')向本地存储写入内容

(3)异步API

        ·特点:类似jQuery中的$.ajax(options)函数,需要通过success、fail、complete接受调用结果

        ·例子:wx.request()发起网络数据请求,通过success回调函数接受数据

第四章、WXML模板语法

4.1 数据绑定

(1)数据绑定的基本原则(与vue的data用法相似)

        -- 在data中定义数据

        -- 在WXHL中使用数据

(2)在data中定义页面的数据

        -- 在页面对应的.js文件中,把数据定义到data对象中即可

(3)Mustache语法格式

        --  把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来即可。        

        -- 使用方法:

// 页面初始的数据
data:{
   info:'hello world',
   imgSrc:'https://img1.baidu.com/it/u=3009731526,373851691&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500',
   randomNum:Math.random()*10,
},
<view>
    {{info}}
    <image src="{{imgSrc}}"></image>
    <view>{{randomNum}}</view>
    <view>{{randomNum > 5 ? '数字大于5':'数字小于5'}}</view>
    <view>{{randomNum*100}}</view>
</view>

        -- Mustache语法的应用场景:

                · 绑定内容 -->展示

                · 绑定属性 -->元素属性上,例如:src

                · 运算(三元运算、算术运算等)

4.2 事件绑定

(1)小程序中常用的事件

tapbind:tap手指触摸后马上离开,类似HTML中的click事件
inputbind:input文本框的输入事件
changebind:change状态改变时触发

===>bindtap的语法

        -- 通过bindtap可以为组件绑定tap触摸事件(点击事件)

        -- 在页面的.js文件中定义对应的事件处理函数(也就是方法),事件参数通过形参event接收:

===>bindinput的语法

        -- 通过bindinput,绑定文本框输入事件

        --在在页面的.js文件中定义对应的事件处理函数

(2)事件对象的属性列表

事件回调触发的时候,会收到一个事件对象event,它的详细属性有:使用*event.xxxx*

属性类型说明
typestring事件类型
timeSteampInteger 页面打开到触发事件所经过的毫秒数
targeObject 触发事件的组件的一些属性值集合
currentTragetObject当前组件的一些属性值集合
detailObject额外的信息
touches ArrayArray 触摸事件,当前停留在屏幕中的触摸点信息数组
changedTouched ArrayArray触摸事件,当前变化的触摸点信息的数组

===>targe与currentTraget的区别

        -- targe:是触发事件的源头组件

        -- currentTraget:是当前事件所绑定的组件

(3)事件传参

        -- 小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数

        -- 解决:

                · 为组件提供'data-*'自定义属性传参,其中 *代表的是参数的名字,其中不加{{}}传入的参数为字符串

<button type="primary" bindtap="btnTap2" data-info="{{2}}" data-info2="{{3}}" data-info3="4">传参{{Num}}</button>

                ·在事件处理函数中,通过,*event.target.dataset.参数名*,获取具体的参数的值

btnTap2(e){
    console.log(e)
    this.setData({
      Num:this.data.Num+e.target.dataset.info
    })
  },

(4)实现文本框和data之间的数据同步

        -- 定义数据

        -- 渲染结构

        -- 美化样式

        -- 绑定input事件处理函数

第五章、WXML模板语法

5.1 条件渲染

(1)wx:if --> (用法相当于vue中的v-if)

        -- 使用*wx:if="{{判断语句}}"*来判断是否需要渲染该代码

        -- 也可以搭配wx:elifwx:else来添加判断

data:{
    type:1
}

<view wx:if="{{type === 1}}">男</view>
<view wx:elif="{{type === 2}}">女</view>
<view wx:else>保密</view>

(2)结合<block>(类似vue中的template)使用wx:if,一次控制多个组件

        -- 如果一次性控制多个组件的展示与隐藏,可以使用一个<block></block>标签将多个组件包装起来,并在<block>标签上使用wx:if控制属性

<block wx:if="{{false}}">
	<view>view1</view>
	<view>view2</view>
</block>

(3)hidden(隐藏) -->(相当于vue中的v-show:true/false显示)

        -- 在小程序中,直接使用hidden="{{判断语句}}"也能控制元素的显示与隐藏

//dispalay:block/none
<view hidden="{{!flag}}">条件为 true 的时候隐藏元素,否则显示</view>
//节点的创建与销毁
<view wx:if="{{flag}}">这是使用 wx:if 控制的元素</view>

5.2 列表渲染

(1)wx:for -->(相当于v-for)

        -- 默认情况下,循环项为索引用index表示,当前循环项用item

        -- 通过wx:for可以根据指定的数组,循环渲染重复的组件结构,语法示例如下:

data:{
    arr: ['苹果', '华为', '小米']
}
<view wx:for="{{arr}}" wx:key="index">
	索引是:{{index}},item 项是:{{item}}
</view>

(2)可以自行针对索引index,item名进行修改:wx:for-index和wx:for-item

        -- wx:for-index="idx"

        -- wx:for-item="itemName"

data:{
    arr: ['苹果', '华为', '小米']
}
<view wx:for="{{arr}}" wx:for-index="idx" wx:for-item="itemName" wx:key="idx">
	索引是:{{idx}},item 项是:{{itemName}}
</view>

(3)wx:key的使用

        -- 类似于Vue列表渲染中的:key,小程序在实现列表渲染时,也指定唯一的key值,从而提高渲染的效率

data:{
    userList: [
      { id: 1, name: '小红' },
      { id: 2, name: '小黄' },
      { id: 3, name: '小白' }
    ]
}
<view wx:for="{{userList}}" wx:key="id" class="username">{{item.name}}</view>

第六章、配置

6.1 全局配置

6.1.1 window

(1)小程序中窗口组成部分

        --nacigationBar:导航栏区域

        --background:背景区域,默认不可见,下拉才显示

        --页面主体区域:用来显示wxml的布局

(2)了解window节点常用的配置

        -- 导航栏

nacigationBarTitleText String 字符串导航栏标题文字内容
nacigationBarBackgroundColorHexColor#000导航栏背景颜色
nacigationBarTextStyle string white 导航栏标题颜色,仅支持black/white

        -- 下拉背景区域

backgroundColorHexColor#fff窗口的背景色
backgroundTextStylestring dark下来loading的样式,仅支持dark/light

        -- 开启下拉刷新和上拉触底的距离

enablePullDownRefreshBooleanfalse是否全局开启下拉刷新
onReachBottomDistance Number NumberNumber 页面上拉触底时距页面底部的距离,单位为px

6.1.2 tabBar

(1)tabBar是移动端应用常见的页面效果,用于实现多页面的快速切换,分为:

        -- 底部tabBar

        -- 顶部tabBar

        -- 注意:tabBar中配置项:最少2个、最多5个的tab页签

        -- 渲染顶部tabBar时,不显示icon,只显示文本

 (2)tabBar的6个组成部分

        -- backgroundColor:tabBar的背景色

        -- selectedIconPath:选中时图片路径

        -- borderStyle:tabBar上边框的颜色

        -- iconPath:未选中时的图片路径

        -- selectedColor:tab上的文字选中时候的

        -- color:tab上文字的默认(未选中)颜色

 (3)tabBar节点的配置项

  属性类型必填 默认值描述
positionstringbottomtabBar的位置,bottom/top
borderStylestring blacktabBar上边框的颜色,black/white
color HexColortab上文字的默认(未选中)颜色
selectColorHexColortab上文字选中的颜色
backgroundColorHexColor否 tabBar的背景色
list(重点)Arraytab页签的列表,2-5个

(4)list每个tab项的配置选项

pagePathstring 必填页面路径,页面必须在pages中预先定义
textstring必填tab上显示的文字
iconPathstring非必填 未选中时图标路径,position为top时,不显示icon
selectedIconPathstring非必填未选中时图标路径
//全局配置中配置tabBar的选项
"tabBar": {
    "list": [{
      "pagePath": "pages/home/home",
      "text": "首页",
      "iconPath": "/images/tabs/home.png",
      "selectedIconPath": "/images/tabs/home-active.png"
    },{
      "pagePath": "pages/message/message",
      "text": "消息",
      "iconPath": "/images/tabs/message.png",
      "selectedIconPath": "/images/tabs/message-active.png"
    },{
      "pagePath": "pages/contact/contact",
      "text": "联系我们",
      "iconPath": "/images/tabs/contact.png",
      "selectedIconPath": "/images/tabs/contact-active.png"
    }]
  },

6.2 页面配置

(1)页面配置的作用

        -- 小程序中,每个页面都有自己的.json配置文件,用来对当页面的窗口外观、页面效果等进行配置。

(2)页面配置和全局配置的关系

        --小程序中,app.json中的window节点,可以全局配置小程序中每个页面的窗口表现

        --如果某些小程序页面,想要拥有特殊的窗口表现,此时需要是使用页面级别的.json配置文件

        --页面配置与全局配置冲突时,就近原则

(3)页面配置中常用的配置项

        与6.1.1 windows常用配置项相同

6.3 网络数据请求

(1)小程序中网络数据请求的限制

       ·两个限制:

                -- 只能请求HTTPS类型的接口

                -- 必须将接口的域名添加到信任列表

 (2)如何配置request合法域名

配置步骤:登录微信小程序管理后台->开发->开发设置->服务器域名->修改request合法域名

(I)

(II)

 (III)

(3)发起GET请求

        ·调用微信小程序提供的wx.request()方法,可以发起GET数据请求:

        ·wx.request()的常用api,如下:

wx.request({
  //开发者服务器接口地址
  url: 'https://……/api/get',
  //HTTP 请求方法
  method:'GET',
  //请求的携带参数
  data:{
    name:'李四',
    age:23
  },
  //设置请求头
  header: {
    'content-type': 'application/json' // 默认值
  },
  //接口调用成功的回调函数
  success:(res) =>{
    console.log(res)
    console.log(res.data)
  },
  //接口调用失败的回调函数
  fail:(err) =>{
    console.log(err)
  },
  //接口调用结束的回调函数(调用成功、失败都会执行)
  complete:(res,err) =>{
    console.log(res,err)
  },
})

(4)发起POST请求

        · 调用微信小程序提供的wx.request()方法,可以发起POST数据请求:

wx.request({
  url: 'https://……/api/post',
  method:'POST',
  data:{
    name:'李四',
    age:23
  },
  success:(res) =>{
    console.log(res)
  }
})

(5)跳过request合法域名校验

        -- 如果后端程序员只提供了http协议的接口,没有提供https协议接口

        -- 解决:详情->本地设置->勾选:不校验合法域名....

(6)关于跨域和Ajax的说明

        -- 跨域问题只存在于基于浏览器Web开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域的问题

之后内容接下:

微信小程序零基础入门(下)_❆VE❆的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值