详解基于Wepy开发小程序插件(推荐)


Posted in Javascript onAugust 01, 2019

开发

wepy-plugin-autopages

使用 wepy 开发项目时不需要手动配置 app.wpy 下的 config.pages,autopages 插件会自动监控 pages 目录下文件的变化,自动生成更新对应 app.json 下的 pages。

注意:该插件只会对编译文件dist里配置添加,源文件是不会改动的。
注意:我还发现有个问题是他是按命名顺序添加的,所以开发阶段可以用客户端指定路径,但是发布的话还是乖乖手动添加吧

这插件看情况使用吧,如果是个人项目的话我觉得还是值得用的,毕竟每次新增页面都要手动添加很繁琐,但是如果是合作项目开发到某个阶段的时候还是手动填上去吧,因为便于其他人可以知道你项目的所有跳转路径有哪些。

plugins: [
 autopages: {}
]

wepy-plugin-px2units

将 px 单位转换为 rpx 单位,或者其他单位的 PostCSS插件。

plugins: {
 px2units: {
  filter: /.wxss$/
 }
},

注意:根据实验所得只对wxss文件起作用,在wxml的行内样式不改变。

//输入
.userinfo-nickname {
 width: 200px;
 height: 200px;/*no*/
 margin: 200rpx;
}
//输出
.userinfo-nickname {
 width: 200rpx;
 height: 200px;
 margin: 200rpx;
}

略微有点鸡肋,虽然会节省一点微不足道的代码量,但是它本身还是有些可能需要用到的配置项的。

配置项 作用
divisor(Number): 除数 转换后的值 等于 pixel / divisor
multiple(Number): 倍数 转换后的值 等于 pixel * multiple
decimalPlaces(Number) 小数点后保留的位数
comment(String) 不转换px单位的注释,默认为 /no/
targetUnits(String) 转换单位,默认值为 rpx

wepy-plugin-replace

文本替换,为 plugins 添加 replace 对象,支持单个或者多个规则,多个规则可以以 Array 或者 Object 实现,filter 的对象为生成后文件的路径, 例如'dist/app.js',每个规则也同时支持多个替换条目,同样是以 Array 或者 Object 实现。

module.exports.plugins = {
 'replace': {
  filter: /moment\.js$/,
  config: {
   find: /([\w\[\]a-d\.]+)\s*instanceof Function/g,
   replace: function (matchs, word) {
    return ' typeof ' + word + " ==='function' ";
   }
  }
 }
};

用法很简单,指定后缀文件匹配规则替换函数。

生产

就以我的一个项目为例,在不用插件的情况下打包体积是6.04M。

然后看看怎么一步步将其体积减少。

wepy-plugin-uglifyjs

JS压缩插件

module.exports.plugins = {
 'uglifyjs': {
  filter: /\.js$/,
  config: {
  }
 },
};

因为小程序基本JS代码为主,所以这个效果非常可观,文档只写了这个用法,还有很多自定义选项需要自己去研究,文档给出的参数说明链接是UglifyJS2,即使如此,单单JS一项都好厉害。

使用前 使用后 压缩率
6.04M 2.76M 45.69%

wepy-plugin-filemin

文件压缩插件支持css,xml,json

module.exports.plugins = {
 'filemin': {
  filter: /\.(json|wxml|xml)$/
 }
};

使用前 使用后 压缩率
2.76M 2.72M 98.55%

唔。。。

有点尴尬,那点体积真的微不足道,一来样式本来就不多,二来css本身压缩空间有限,不可能把样式属性简化吧,聊胜于无。

wepy-plugin-imagemin

图片压缩插件

module.exports.plugins = {
 'imagemin': {
  filter: /\.(jpg|png|jpeg)$/,
  config: {
   'jpg': {
    quality: 80
   },
   'png': {
    quality: 80
   }
  }
 }
};

参数说明请看imagemin

使用前 使用后 压缩率
2.72M 2.24M 82.35%

不得不说还是可以的,基本用法大家用过打包器都不陌生就不说了,直到某一天腾讯出了一款重量大杀器,请看看下面——

WeCOS

腾讯推出的小程序瘦身工具,通过 WeCOS,小程序项目中的图片资源会自动上传到 COS 上,且 WeCOS 自动替换代码中图片资源地址的引用为线上地址,移除项目目录中的图片资源,从而减小代码包大小,解决包大小超过限制的问题。

前期准备工作:

  • 进入 腾讯云官网,注册腾讯云账户,指引参考 注册腾讯云。
  • 登录 对象存储控制台,开通对象存储服务,创建存储桶,指引参考 创建存储桶
  • 通过 GitHub 地址 下载 WeCOS 工具。
  • 在 Node.js 官网下载环境并安装。

我就默认你们都搞好了前期,然后我们先安装插件

npm install wecos -g

在与开发目录app同目录下创建一个 wecos.config.json 配置文件,在配置里填写基本的配置信息。

  • appDir 指定了小程序开发目录。
  • appid 为腾讯云账号的appid。
  • bucketname 是为存储图片创建的 bucket 的名称,这里是名为 weixintest 的 bucket。
  • folder 可以指定到 bucket 下的某个目录,本文指定到 /wxtest 目录下。
  • region 是指定上传到 COS 的指定地区,这里指定为 tj ,即天津。目前COS 支持天津、上海、广州。
  • secret_key、secret_id是账户密钥,用户可以自行到腾讯云 COS 控制台上获取。

之后直接运行命令

wecos

命令行显示项目中的图片上传成功。翻看项目目录,发现图片已经被删除,代码中的图片引用也被换成了线上的地址,项目包一下子小了。同时,WeCOS 很贴心的在开发项目外生成了个 wecos_backup 目录,来保存原来的图片作为备份。除此之外,WeCOS 默认启用监听模式,这是为了让开发过程中无感知,当我们不再进行项目开发,停止运行 WeCOS 即可。

和wepy-plugin-imagemin相比。

使用前 使用后 压缩率
2.72M 1.46M 53.67%

前者操作简单无额外依赖,后者效率惊人,具体取舍看项目需要吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
jQuery+css实现图片滚动效果(附源码)
Mar 18 Javascript
js获取html文件的思路及示例
Sep 17 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
jQuery模拟黑客帝国矩阵效果实例
Jun 28 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 Javascript
hovertree插件实现二级树形菜单(简单实用)
Dec 28 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
JS获取当前时间戳方法解析
Aug 29 Javascript
微信小程序实现转盘抽奖
Sep 21 Javascript
js实现限定范围拖拽的示例
Oct 26 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 #Javascript
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 #Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 #Javascript
微信小程序组件传值图示过程详解
Jul 31 #Javascript
vue.js实现回到顶部动画效果
Jul 31 #Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 #Javascript
Vue实现回到顶部和底部动画效果
Jul 31 #Javascript
You might like
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
微信小程序自定义toast的实现代码
2018/11/16 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
python快速查找算法应用实例
2014/09/26 Python
深入理解Python装饰器
2016/07/27 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Django权限设置及验证方式
2020/05/13 Python
Python验证码截取识别代码实例
2020/05/16 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
升职自荐信范文
2013/10/05 职场文书
建设投标担保书
2014/05/13 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技