小程序对npm的支持与限制
目前,小程序中已经支持使用npm安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm包有如下3个限制:
(1)不支持依赖于Node.js内置库的包
(2)不支持依赖于浏览器内置对象的包
(3)不支持依赖于C++插件的包
总结:虽然npm上的包有千千万,但是能供小程序使用的包却"为数不多"。
Vant Weapp
1.什么是Vant Weapp
Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应用。它所使用的是MIT开源许可协议,对商业使用比较友好。
官方文档地址:介绍 - Vant Weapp
2.安装Vant组件库
在小程序项目中,安装Vant组件库主要分为如下3步:
(1)通过npm安装(建议指定版本为@1.3.3)
(2)构建npm包
(3)修改app.json
示例:
打开命令行,输入命令
点击小程序的资源管理器空白区域,右键,点击在外部终端窗口中打开(或在内建终端中打开)
E:\web_work\weixin\miniprogram-1>npm init -y
Wrote to E:\web_work\weixin\miniprogram-1\package.json:
{
"name": "miniprogram-1",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": \[\],
"author": "",
"license": "ISC"
}
E:\web_work\weixin\miniprogram-1>npm i @vant/weapp@1.3.3 -S --production
npm WARN config production Use `--omit=dev` instead.
added 1 package in 3s
修改 app.json
将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。
步骤三 构建 npm 包(老版本微信开发者工具需要)
打开微信开发者工具,点击 工具 -> 构建 npm,
详细的操作步骤,大家可以参考Vant官方提供的快速上手教程:
3.使用Vant组件
安装完Vant组件库之后,可以在app.json的usingComponents节点中引入需要的组件,即可在wxml中直接使用组件。示例代码如下:
引入
在app.json或index.json中引入组件,详细介绍见快速上手。
"usingComponents": {
"van-button": "@vant/weapp/button/index"
}
wxml中使用
<van-button type="info">按钮</van-button>
4.定制全局主题样式
Vant Weapp使用CSS变量来实现定制主题。关于CSS变量的基本用法,请参考MDN文档:
使用 CSS 自定义属性(变量) - CSS:层叠样式表 | MDN
5.定制全局主题样式

配置文件
https://github.com/youzan/vant-weapp/blob/dev/packages/common/style/var.less
Vant Weapp 使用 CSS 变量组织样式,在 app.wxss 里写入变量即可全局生效。
/* app.wxss */
page {
/* 以按钮主色为例,将默认绿色改为红色 */
--button-primary-background-color: #ee0a24;
--button-primary-border-color: #ee0a24;
/* 也可以修改其他全局变量,如主色调 */
--color-primary: #ee0a24;
}
在 GitHub 上打开 packages/common/style/var.less 即可查看到完整的变量列表,变量名去掉 @ 前缀、加上 -- 就是对应的 CSS 变量名。
使用npm包-API Promise化
1.基于回调函数的异步API的缺点
默认情况下,小程序官方提供的异步API都是基于回调函数实现的,例如,网络请求的API需要安装如下的方式调用:

缺点:容易造成回调地域的问题,代码的可读性,维护性差!
2.什么是API Promise化
API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于 Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。