小程序-基础加强(二):使用npm包

news2024/11/24 11:24:16

使用npm包


1.小程序对npm的支持与限制

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

①不支持依赖于Node.js内置库的包

②不支持依赖于浏览器内置对象的包

③不支持依赖于C++插件的包

总结:虽然npm上的包有千千万,但是能供小程序使用的包却"为数不多“

使用npm包-Vant Weapp(UI组件库)


1.什么是Vant Weapp

Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力于开发者快速搭建小程序应用。她所使用的是MIT开源许可协议,对商业使用比较友好。

2.安装Vant 组件库

在小程序项目中, 安装Vant组件库分为如下3个步骤:

①通过npm安装(建议指定版本为@1.3.3)

npm i @vant/weapp@1.3.3 -S --production

(在此之前,需要确定有package文件;如果没有使用:npm init -y命令)

②构建npm包

③修改app.json(删除使用v2 )

3.使用Vant组件

安装完Vant组件库之后,可以在app.jsonusingComponents节点中引入需要的组件,即可在wxml中直接使用组件。示例代码如下:

  4.定制全局主题样式

https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties

 

5.定制全局主题样式

查看文档,查看定制样式代码

使用npm包-API Promise化


1.基于回调函数的异步API的特点

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

缺点:容易造成回调地狱的问题,代码的可读性、维护性差!

2.什么是API Promise化

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

3.实现API Promise化

在小程序中,实现API Promise化主要依赖于miniprogram-api-promise这个第三方的npm包。它的安装和使用步骤如下:

 (在小程序中,安装的包会在node_modules中,但是不能直接使用,必须引入到miniprogram_npm,就要重新构建npm)

当重新构建时候,需要删除miniprogram_npm文件夹,避免构建失败。当包在miniprogram_npm文件夹构建完中出现就可以使用了。

 4.调用Promise化之后的异步API

全局数据共享


1.什么是全局数据共享

全局数据共享(又叫做:状态管理)是为了解决组件之间数据共享的问题。

开发中常用的全局数据共享方案有:Vuex、Redux、MobX等。

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

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

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

 全局数据共享-MobX


1.安装MobX相关的包

 2.创建MobX的Store实例

 3.将Store中的成员绑定到页面

3.将Store中的成员绑定到页面

 4.在页面上使用Store中的成员

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

 6.在组件中使用Store中的成员

 分包-基础概念


1.什么是分包

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

2.分包的好处

对小程序进行分包的好处主要有以下两点:

  • 可以优化小程序首次启动的下载时间
  • 多团队共同开发时可以更好的解耦协作

3.分包前项目的构成

4.分包后项目构成 

分包后,小程序项目由1个主包+多个分包组成:

  • 主包:一般只包含项目的启动页面TabBar页面、以及所有分包都需要用到的一些公共资源
  • 分包:只包含和当前分包有关的页面和私有资源

5.分包的加载规则

6.分包的体积限制

 分包-使用分包


 1.配置方法

 

 2.打包原则

①小程序会按subpackages的配置进行分包,subpackages之外的目录将被打包到主包中

②主包也可以有自己的pages(即最外层的pages字段)

③tabBar页面必须在主包内

④分包之间不能互相嵌套

3.引用原则

分包-独立分包 


1.什么是独立分包

独立分包本质上也是分包,只不过它比较特殊,可以独立于主包和其他分包而单独运行。

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

 3.独立分包的应用场景

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

  • 当小程序从普通的分包页面启动时,需要首先下载主包
  • 而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度

注意:一个小程序中可以有多个独立分包。

4.独立分包的配置方法

 5.引用原则

独立分包和普通分包以及主包之间,是相互隔绝的,不能相互引用彼此的资源!例如:

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

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

③独立分包和普通分包之间,不能相互引用私有资源

特别注意:独立分包中不能引用主包内的公共资源

分包-分包预下载


 1.什么是分包预下载

分包预下载指的是:在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度。

2.配置分包预下载

预下载分包的行为,会在进入指定的页面时触发。在app.json中,使用preloadRule节点定义分包的预下载规则,示例代码如下:

 3.分包预下载的限制

同一个分包中的页面享有共同的预下载大小限额2M,例如:

案例-自定义tabBar 


1.案例效果

 在此案例中,用到的主要知识点如下:

  • 自定义组件
  • Vant组件库
  • MobX数据共享
  • 组件样式隔离
  • 组件数据监听器
  • 组件的behaviors
  • Vant样式覆盖

2.实现步骤

自定义tabBar分为3大步,分别是:

①配置信息

②添加tabBar组件

③编写tabBar代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/549540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot +spring security,登录表单进阶配置及原理分析

一.简介 登录表单配置实操 二.创建项目 如何创建一个SpringSecurity项目,前面文章已经有说明了,这里就不重复写了。 三.配置默认用户信息 配置文件添加如下用户信息,代码如下: spring:security:user:name: lglbcpassword: 1…

HNU数据结构与算法分析-作业7-算法设计技术

1. (简答题, 10分)请简述分治法所能解决的问题一般具有哪些特征? 2. (简答题, 10分)请简述动态规划法的四个求解步骤。 3. (简答题, 10分)请比较动态规划法和贪心法,并写出两者的区别。 4. (简答题, 10分)请写出分支限界法和回溯法的区别。 二. 算法设计…

chatgpt赋能Python-pythonendswith

Python endswith方法:介绍、用法和示例 在编程中,经常需要查找字符串是否以特定字符结尾。Python提供了一个方便易用的方法——endswith()。 什么是Python endswith()方法? Python endswith()方法是用于检查字符串是否以特定子字符串结尾的…

第六章总结-莫凡商城的注册、登录功能

1.微信小程序表单组件 1.1button按钮组件 type的属性值有三种 primary 绿色default 白色warn 红色 除了这种方式可以设置按钮大小,还有其他的通过视图来控制按钮的方式,因为我们知道,微信小程序的按钮并不都是这三种颜色。其他方式比如把按…

Web APIs之DOM

一.Web API基本认知 二.获取DOM对象 三.操作元素内容 四. 操作元素属性 五.定时器-间歇函数 一、Web API基本认知 *作用和分类 *什么是DOM *DOM树 *DOM对象 1.作用和分类 (1)作用:使用JS去操作html和浏览器 (2&#xff09…

service mesh学习

背景 单体服务的痛点导致单体服务被拆分为多个微服 每个微服必须要解决负载均衡、服务发现、熔断等功能 为了让上层开发更加快速和无需关注通用能力,在网络栈和应用业务层之间抽出一个透明网络代理层。 Service Mesh 轻量级网络代理,负责微服之间的通…

H5 实现蜂巢(六边形)导航,支持用户交互和动态添加,纯css实现无需布局计算

最近公司的项目出了版新的UI设计图,所以准备进行样式改版 而其中就有个导航要改成蜂巢(六边形)导航,当我看到时其实也挺迷糊的。 说一下我一开始的想法哈: 我一开始是打算使用背景颜色线性渐变 或者 用4个子元素覆盖4角 来实现 六边形的视觉…

二、数据字典开发

文章目录 二、数据字典开发1、搭建service-cmn模块1.1 搭建service-cmn模块1.2 修改配置1.3 启动类 2、数据字典列表2.1 数据字典列表接口2.1.1 model模块添加数据字典实体2.1.2 添加数据字典mapper2.1.4 添加数据字典controller 2.2 数据字典列表前端2.2.1 添加路由2.2.2 定义…

centos 8 安装nacos2.0.3

去官网下载软件包 下载地址:https://github.com/alibaba/nacos/releases 上传到服务器指定位置,并解压 修改nacos存储为数据库 vi /xxx/nacos/conf/application.properties ## 在最后添加以下内容 spring.datasource.platformmysql db.num1 db.url.0j…

chatgpt赋能Python-pythonend

Pythonend – 一站式 Python SEO 工具 Pythonend 是一款基于 Python 的 SEO 工具,它为企业和个人提供了一站式的 SEO 解决方案。无论您是想要提高网站排名、监测关键词排名、分析竞争对手或进行网站优化,Pythonend 都可以帮助您解决这些问题。 Pythone…

【Linux】——进程信号

目录 信号入门 生活的角度 技术应用的角度 信号列表 信号处理常见方式概览 信号产生 通过终端按键产生信号 核心转储 调用系统函数向进程发信号 由软件条件产生信号 SIGPIPE信号 SIGALRM信号 硬件异常产生信号 阻塞信号 信号其他相关常见概念 内核中…

软件测试:测试用例

一、通用测试用例八要素  1、用例编号;   2、测试项目;   3、测试标题;   4、重要级别;   5、预置条件;   6、测试输入;   7、操作步骤;   8、预期输出 二、具体分析通用测试用…

红帽6.5进入单用户重置root密码

前言 ​一、重启Linux系统 二、按 “e” 键进入该界面 三、上下键选中第二个kernel选项,继续按 “e” 键进行编辑。 五、根据提示按下按键“b”,进入单用户模式引导 六、进入到单用户模式,修改密码 七、重启系统 八、进行登录 前言 大…

图片转excel表格,人工处理与OCR方案的优劣对比

随着信息化进程的发展,我们常常需要将图片文件中的表格信息转换成Excel表格文件,并进行后续数据处理和分析。对于这一需求,常用的解决方案有人工录入和OCR识别两种方式。本文将对这两种方案进行比较,评估其优劣。 一、人工做表并…

二、MongoDB入门

文章目录 一、MongoDB入门1、常用操作1.1 INSERT1.2 Query1.3 Update1.4 Remove1.5 aggregate1.5.1 插入数据1.5.2 统计sum1.5.3 常见的聚合表达式 1.6 索引 一、MongoDB入门 1、常用操作 1.1 INSERT > db.User.save({name:zhangsan,age:21,sex:true}) > db.User.find…

linux(inode)学习

目录: 1.认识磁盘结构 2.没有被打开的文件在磁盘里是怎么保存的 ------------------------------------------------------------------------------------------------------------------------------ 如果一个文件没有被打开,这个文件在哪里呢&#…

卡方检验.医学统计实例详解

卡方检验是一种常用的假设检验方法,通常用于分析两个或多个分类变量之间的关系。在医学研究中,卡方检验被广泛应用于分析两种或多种治疗方法的疗效,或者分析某种疾病的发病率与某些危险因素之间的关系。下面我们来看一个卡方检验在医学实例中…

虚幻商城模型转MetaHuman

一、导入虚幻商城的模型到UE 1.去虚幻商城下载一个人物模型,这里以SchoolGirl为例 2.导入UE,并找到模型,这里是SkeletalMesh 二、启动MetaHuman插件 1.通过Edit->Plugins启用MetaHuman和MetaHumanSDK插件,这里MetaHuman插件是用于创建MetaHuman的,MetaHumanSDK插件…

基于高效率IP路由查找的内容

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 实现最基本的前缀树查找,调研并实现某种IP前缀查找方案,- 基于forwarding-table.txt数据集(Network, Prefix Length, Port) - 本实验只考虑静态数据集,不考虑表的添加或更新- 以前缀树查找结果为基准,检…