小程序总结

197 阅读5分钟

1.小程序与普通网页开发的区别

graph TD
小程序与普通网页开发的区别  --> 运行环境不同
小程序与普通网页开发的区别  --> API不同
小程序与普通网页开发的区别  --> 开发模式不同

2.小程序项目基本结构

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

utlis 用来存放工具性质的模块

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

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

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

project.config.json 项目的配置文件

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

3.WXML和WXSS

WXML和HTML的区别:

1.标签名称不同

2.属性节点不同

3.提供了类似于vue中的模板语法

WXSS和CSS的区别:

1.新增了rpx尺寸单位

2.提供了全局的样式和局部样式

3.WXSS仅支持部分CSS选择器

4.小程序的宿主环境

宿主环境,指的是程序运行所必须的依赖环境.

小程序的宿主环境依赖于微信

1.通信模型

2.运行机制

3.组件

4.API (事件监听API/同步API/异步API)

5.WXML模板语法

1.数据绑定(Mustache语法)

2.事件绑定(bindtap/bindinput/bindchange)

3.事件传参与数据同步(this.setData中修改原数据;传参使用data-*="",e.target.dataset.*接收)

4.条件渲染(wx:if/hidden;使用block包裹不会被渲染出标签)

5.列表渲染(wx:for/wx:for-index=""/wx:for-item="")

6.tabBar配置

backgroundColor 背景色

selectedlconPath 选中时的图片路径

borderStyle 上边框的颜色

iconPath 未选中时的图片路径

selectedColor 文字选中时的颜色

color 文字未选中的颜色

7.小程序中网络数据请求的限制

1.只能请求HTTPS类型的接口

2.必须将接口的域名添加到信任列表中

跳过 request 合法域名校验

如果后端只提供了http协议的接口,暂时没有提供https协议的接口,可以在小程序开发者工具的本地设置中,开启不检验合法域名.项目上线时,需要开启并更换接口.

关于跨域和Ajax的说明

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

Ajax技术的核心是依赖于浏览器中的XMLhttpRequest这个对象,由于小程序的宿主环境是微信客户端,所以小程序中不能叫做"发起Ajax请求",而是叫做"发起网络数据请求"

8.导航的跳转和传参

声明式导航

<navigator url="/pages/index/index" open-type="switchTab">跳转tabBar页面</navigator>
<navigator url="/pages/homo/homo" open-type="navigate">跳转非tabBar页面</navigator>
<navigator open-type="navigateBack" delta="1">后退</navigator>

注意点:跳转时url路径开头必须加上‘/’

编程式导航

wx.switchTab({url: '/pages/index/index',}) 跳转tabBar页面
wx.navigateTo({url: '/pages/homo/homo',}) 跳转非tabBar页面
wx.navigateBack() 后退

注意点:delta="1"是默认值,不加也可以

导航传参

url="/pages/index/index?name='张三'& age=18"

参数与路径之间使用 ? 分割,参数与参数值用 = 相连,不同参数用 & 分隔

9.下拉刷新和上拉加载配置

下拉刷新

"enablePullDownRefresh": true, 开启下拉刷新
"backgroundColor": "#f45634",  设置背景颜色
"backgroundTextStyle": "dark"  设置loading的样式,仅支持dark和light
 // 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
     this.setData({
       msg:0
     })
     wx.stopPullDownRefresh() 停止下拉刷新
  },

上拉加载

"onReachBottomDistance": 200 默认触底距离是50
 // 页面上拉触底事件的处理函数
 onReachBottom() {
     console.log('上拉事件触发了---');
  },
  wx.showLoading({title: '数据加载中...',}) 开启loading效果
  wx.hideLoading()                              关闭loading效果

如何开启上拉加载的节流阀?

1.在data里定义isloading,为 true 表示正在进行数据请求,为 false 表示没有进行任何数据请求

2.在开启loading效果时,将值设为 true,在关闭loading效果时,将值设为 false

3.在上拉加载处理函数中进行判断,值为 true,阻止后续请求;值为 false,发起请求

10.小程序的生命周期

应用生命周期函数

App({

onLauch:小程序初始化完成时调用,全局只触发1次

onShow:小程序从后台进入前台显示时触发

onHide:小程序从前台进入后台时触发 })

页面生命周期函数

page({

onLoad:监听页面加载,一个页面只调用1次

onShow:监听页面显示

onReady:监听页面初次渲染完成,一个页面只调用1次

onHide:监听页面隐藏

onUnload:监听页面卸载,一个页面只调用1次

})

11.wxs

wxs的典型应用场景就是"过滤器",在WXML页面内部书写,直接调用.(和js相同,有内嵌式和外链式)

注意点:

1.wxs不支持类似于ES6以及以上的语法形式,定义变量只能使用 var

2.wxs遵循CommonJs规范

12.全局组件和局部组件

"usingComponents": {
    "my-text":"component/text/text"
  }

全局组件和局部组件的区别

1.组件的.json文件中需要声明"component":true属性

2.组件的.js文件中调用的是Component()函数

3.组件的事件处理函数需要定义在methods节点中

自定义组件样式

1.app.wxss中的全局样式对组件无效

2.只有calss选择器会有样式隔离效果,id/属性/标签选择器不受样式隔离的影响

注意:在组件和引用组件的页面中不要使用id/属性/标签选择器

13.插槽

// 在组件的.js文件中声明开启多个插槽
options:{
     multipleSlots:true
   },
// 给多个占位插槽添加name属性
<slot name="text1"></slot>
<slot name="text2"></slot>
// 往匹配的插槽里添加内容
<text slot="text1">插槽的引入1</text>
<text slot="text2">插槽的引入2</text>

14.组件通讯

1.属性绑定

  • 用于父组件向子组件的指定属性设置数据,仅能设置JSON兼容的数据

2.事件绑定

  • 用于组组件向父组件传递数据,可以传递任意数据

3.获取组件实例

  • 父组件还可以通过this.selectComponent()获取子组件的实例对象

  • 这样就可以直接访问子组件的任意数据和方法

15.分包

配置分包

  "subPackages": [
    {
      "root":"pakA",
      "pages": [
        "pages/jin/jin"
      ],
      "independent": true // 开启独立分包
    }
  ],

注意点:

1.主包无法引用独立分包内的私有资源

2.独立分包之间,不能相互引用私有资源

3.普通分包可以引用主包的公共资源

分包预下载

"preloadRule": {                                  
    "pages/logs/logs":{      // 进入页面的路径
      "packages": [          // 配置要下载的分包根目录
        "pakA"  
      ],
      "network": "all"       // 网络配置
    }
  },