首页 > 编程语言 >小程序6

小程序6

时间:2022-11-20 16:57:38浏览次数:19  
标签:info 程序 分包 主包 组件 页面

学习目标:
1.能够知道如何安装和配置vant-weapp组件库
2.能够知道如何使用Mobx实现全局数据共享
3.能够知道如何对小程序的API进行Promise化

使用npm包

小程序对npm的支持与限制

目前,小程序中已经支持使用npm安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm包有如下3个限制

  • 不支持依赖于Node.js内置库的包
  • 不支持依赖于浏览器内置对象的包
  • 不支持依赖于C++插件的包

Vant Weapp

什么是Vant Weapp

Vant Weapp是有赞前端团队开源出来的一套小程序UI组件库,主力开发者快速搭建小程序应用。它所使用的是MIT开源许可协议,对商业使用比较友好(牛X,确实牛X)

安装Vant组件库

在西澳程序中,安装Vant组件库主要分为如下三部:
1.通过npm安装
2.构建npm包
3.修改app.json

Vant的使用:这是组件的集合,要使用组件就需要先导入组件;可以在特定使用某个组件的页面的.json中使用;也可以在app.json中使用;并且要将app.json中的"style": "v2"关闭

使用vant组件

可以在app.json的usingComponents节点中引入需要的组件,即可在wxml中直接使用组件。代码示例:

结果:

css变量的使用

通过css变量定制全局主题样式

全局样式,是对全局都起作用;在app.wxss的page函数中声明CSS变量,而后再需要用到这个变量值的地方只填对应变量名即可,声明如下:

  • 为什么使用page节点?
    变量是有作用域的,page是一个标签,这个标签所包含的作用域就是整个页面;也就是说,如果只是想作用于某个页面或某个组件的话,那就根据情况把“page”替换掉;所以,花括号前面起到的作用实际上是声明作用域的作用
  • 变量名的规定?
    实际上在vant官网给出了各个组件的CSS变量名,我们只要到上面寻找到自己想要的变量即可;这些变量会自动寻找到对应组件进行修改

API Promise化

基于回调函数的异步API的缺点

默认情况下,小程序官方提供的异步API店铺是基于回调函数实现的,例如,网络请求的API需要按照如下的方式调用:

造成的结果就是容易造成回调地域的问题,代码的可读性、维护性

什么是API的Promise

API的Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步API,升级改造为基于Promise的异步API,从而提高代码的可读性、维护性,避免回调地域的问题

实现API Promise化

把包安装完之后,还需要构建这个包;而在构建的时候有个注意点,就是在构建新包之前,要把原来的miniprogram_npm在文件中删掉,然后再构建;再次构建完毕后,miniprogram_npm中的新旧目录都会出现

如何使用Promise包


作用:将小程序中,需要异步的函数,都进行了Promises化,并转存到了wxp中
比如,request()网络请求函数,就是一个异步函数;那么我们再次使用的时候就不是直接写request(),而是wx.p.request();它的返回值就是一个Promise对象,里面放有很多数据;对象中有很多数据,可以通过解构的方式获取想要的数据,比如,想要获取到对象当中的data数据,那么,就可以
const {data: res} = await wx.p.request({});那么数据就存放在了res中

全局数据共享

什么是全局数据共享?

全局共享全局数据共享(又叫做:状态管理)是为了解决组件之间数据共享的问题
开发中常用到的全局数据共享方案有:Vuex Redux Mobx

数据共享的概念:当需要共享或传递某个节点的数据时,需要多次传递;而全局数据共享只需要将结点的数据挂载到STORE上,这样节点的获取和传递数据就会非常的方便

小程序中的全局数据共享方案

在西澳程序中,可使用mobx-miniprogram配合mobx-miniprogram-bindlings实现全局数据共享。其中:

  • mobx-miniprogram用来创建Store实例对象
  • mobx-miniprogram-bindlings用来把Store中的共享数据或方法,绑定到组件或页面中使用

安装mobx-miniprogram包和mobx-miniprogram-bindlings包

创建Store实例对象

在JS文件中专门创建Store的实例对象,用import{observable}创建出共享实例对象;而后再调用observable({})函数,他的返回值就是一个Store对象,我们在用一个常量去接收
而后

再在observable({})函数中声明数据方法等;

数据的使用

外界导入了Store后,就可以使用这两个数据了外界是不能够直接修改内部的数据的,而是通过调用Store中的函数,来对内部的数据进行修改;而这个函数要基于action函数;action函数是按需从mobx-miniprogram包中导出的;action函数专门用来修改Store中的数据

将Store中的成员绑定到页面中使用

  • 1.在页面的头部区域导入需要的成员
    一在页面中导入createStoreBindings方法,通过这个方法就可以将Store中的数据和方法绑定到页面中
    二:在页面中导入创建的store对象
  • 2.在page中的onLoad生命周期中进行绑定的工作
    在onLoad中,利用createStoreBindings方法对数据进行绑定,传递两个参数;第一个是要绑定的页面,this代表绑定到当前页面;第二个是{store,fields:[],actions:[]}
    store:代表数据源
    fields:代表字段(数据名)
    action:代表前面定义声明的action方法名
    而后再把函数的返回值放到一个自定义属性中,为方便后期进行数据的清理
  • 3.在onUnload函数中做一些清理性的工作
    在onUnload中,利用this.storeBindings.destroyStoreBindings()方法对页面的数据进行清理;因为有时候页面卸载,残留的数据需要被清理一下

将Store中的成员绑定到组件中

  • 1.按需导入;storeBindingsBehavior函数负责将store中的成员映射到组件中、store代表数据源
  • 2.在Component中的behaviors中放入storeBindingsBehavior函数,实现动态绑定
  • 3.创建storeBindings对象,在里面绑定字段(数据)
  • 4.创建actions对象(在storeBindings中创建):在里面生命要绑定的方法

分包

什么是分包

分包指的是把一个完整的小程序项目按照需求划分为不同的子包,在构建是打包成不同的分包,用户在使用时按需求进行加载

分包的好处

对小程序有以下好处:
1.可以优化小程序首次启动的下载时间
2.在多团队共同开发时可以更好的解耦协作

分包前项目的构成

分包前,小程序项目中所有的页面资源都被打包到了一起,导致整个项目体积过大,影响小程序首次启动的下载时间

分包后的项目构成

分包后项目的构成:小程序项目有1个主包+多个分包组成
主包:一般只包含项目的启动页面TabBar页面、以及所有分包都需要用到的一些公共资源
分包:只包含和当前分包有关的页面私有资源

分包的加载规则

1.在小程序启动时,默认会下载主包启动包内页面:tabBar页面需要放到主包中
2.当用户进入芬堡内某个页面时,客户端会把对应分包下载下来,下载完毕后再进行展示:非tabBar页面可以按照功能的不同,划分为不同的分包之后,进行按需下载

分包的体积限制

目前,小程序分包的大小有以下两个限制:
1.整个小程序所有分包大小不超过16M(主包+所有分包)
2.但各分包/主包大小不能超过2M

使用分包

配置方法

目录结构:

需要在subpackages中对分包(不包含主包)进行声明,有几个包就要声明几次;声明的内容包括(上图):
1.root:"包的根目录"
2.name:"分包名"(分包才有这一项)
3.pages:这是个数组,存放当前分包下,所有页面的相对路径


增加别名:name属性;
获取分包体积:详情中可见

打包原则

1.小程序会按subpackages的配置进行分包,subpackages之外的目录将被打包到主包中
2.主包也可以有自己的pages(即最外层的pages字段)
3.tabBar页面必须在主包内
4.分包之间不能互相嵌套

引用原则

1.主包无法引用分包内私有资源
2.分包之间不能相互引用私有资源
3.分包可以引用主包内公共资源

独立分包

什么是独立分包

独立分包本质上也是分包,只不过他比较特殊,可以独立于主包和其他分包而单独运行
当用户想要打开小程序时,需要进入主包,而后由主包启动小程序,启动成功以后,有可以从主包进入到其他分包;但有时需要通过分包也可以进入到小程序中,此时就需要用到独立分包,从而启动小程序

独立分包和普通分包的区别

主要区别:

  • 普通分包必须依赖于珠宝才能运行
  • 独立分包可以在不下载主包的情况下,独立运行

独立分包应用场景

开发者可以按需,将某些具有一定功能独立性的页面配置到独立分包中。原因如下:

  • 当小程序才能够普通分包页面启动时,需要先下载主包,而用户只希望执行分包里面的页面,不希望下载主包,这样就造成了资源浪费
  • 小程序的运行不依赖于主包可以很大程度上提升分包页面的启动速度

打包原则

案例tabBar

1.在tabBar中设置custom:true
2.与pages文件夹平级创建关于自定义tabBar的组件
3.文件名必须是custom-tab-bar,组件名必须是index

环境会自动匹配组件下的配置文件进行配置

1.注册需要用到的标签

2.将代码中出现的数据以及函数进行声明和定义

3.实现自定义,我们可以跟换自己需要用到的图标,在vant官方文档中有介绍
可以通过 slot 自定义图标,其中 icon slot 代表未选中状态下的图标,icon-active slot 代表选中状态下的图标。

徽标的渲染:
info代表徽标值。我们可以看到图标和标签之间还有一段距离;如何消除这个距离?
调试器检查元素;我们可以找到这段小空白对应的style文件;进而找到对应的代码,将属性所在的属性值按照需求进行更改,而后在wxml代码中查看其父级标签,后在.wxss文件中利用标签选择器对属性值进行更改;这个过程就做样式覆盖
样式覆盖,而当我们使用Vant Weapp组件时,必须要开启styleIsolation:'shared'选项,在组建的Component中的options对象中

info的渲染不是每一个图标都需要;而实现按需未指定图标增添info徽标的方法就是,在列表中指定的元素中添加info属性;而后在wxml中渲染info属性时,就会根据元素有没有info属性来进行渲染,就是在循环时,写上2info="{{item.info}}",有info属性的元素,语句item.info就生效,没有info属性的元素,info就不生效(利用item.info?item.info:''语句可以使当info值为0时,不渲染出来info)

标签:info,程序,分包,主包,组件,页面
From: https://www.cnblogs.com/hezhipeng/p/16903658.html

相关文章