0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

小程序实用框架之WePY篇

张康康 2019-08-26 18:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一.WePY 是什么?

8c58a2cdc0d14556be4ea3efb016b5d3.png

前端开发者肯定对 Vue.js 和 Webpack 这两个开源项目非常熟悉。Web App 或 H5 开发过程中,我们常常将 Vue.js 用作核心库,用 Webpack 做模块化打包,让其能够运行于浏览器端。那么 WePY 是什么东西呢?我们可以把 WePY 理解成 Web 端的 Vue.js 和 Webpack 的结合体,它能够通过编译手段运行在小程序端,并且可以使用 Vue.js 的一些语法和特性。

二.WePY 的功能与特点

首先我们先说说原生小程序开发中的痛点

1) 频繁调用 setData及 setData过程中页面跳闪

2) 组件化支持能力太弱(几乎没有)

3) 不能使用 less、jade 等

4) 无法使用 NPM 包及 ES 高级语法

5) request 并发次数限制

6) 一个页面对应4个文件,看的眼花缭乱

WePY相比于小程序,主要优点如下:

1、开发模式容易转换 wepy在原有的小程序的开发模式下进行再次封装,更贴近于现有MVVM框架开发模式。框架在开发过程中参考了 一些现在框架的一些特性,并且融入其中,以下是使用wepy前后的代码对比图。

官方DEMO代码:

92d3aec181894931bcad1afd317194fb.png

基于wepy的实现:

68c28da8d0b04d69aa43af73b66a62b6.png

  1. 真正的组件化开发小程序虽然有标签可以实现组件复用,但仅限于模板片段层面的复用,业务代码与交互事件 仍需在页面处理。无法实现组件化的松耦合与复用的效果。

wepy组件示例

f06074565da2480c98184e9e32bc4c3a.png

a7f8d65e42a646bfa2c6591194e0d10c.png

3.支持加载外部NPM包 小程序较大的缺陷是不支持NPM包,导致无法直接使用大量优秀的开源内容,wepy在编译过程当中,会递归 遍历代码中的require然后将对应依赖文件从node_modules当中拷贝出来,并且修改require为相对路径, 从而实现对外部NPM包的支持。

4.单文件模式,使得目录结构更加清晰 小程序官方目录结构要求app必须有三个文件app.json,app.js,app.wxss,页面有4个文件 index.json,index.js,index.wxml,index.wxss。而且文 件必须同名。 所以使用wepy开发前后开发目录对比如下:

5.默认使用babel编译,支持ES6/7的一些新特性。

6.wepy支持使用less默认开启使用了一些新的特性如promise,async/await等等

三.WePY 开发总结

1. 自定义 interceptor

创建 network 文件夹 新建 interceptor.js

905a88a18cde4861880f48009136a578.png

新建 index.js

ea0d39b4900a40918ccb31616037292f.png

最后在 app.wpy中引入 req

32a58eb7489649c6b3b64228fc35e715.png

2. request 加入失败重试

创建 retry.js

12c2dd461794457598bea47580addb29.png

修改 network 下index.js

f561ca58f06f4231ba87acb6715b6005.png

3. repeat标签嵌套两级以及以上组件传值给自组件传值问题

5d0dec913c8345239d9817922eaa41ba.png

这个问题其实是wepy的一个bug,在github上已经有好多人提过Issues,官方并没有给出解释,经过自己的摸索,有两种解决方式:

  1. 对于纯组件用小程序原生的模板template代替

子组件中第二层循环采用此写法,直接使用template

628b7aa6cdca40c498a42d953a89db0d.png

在主页面中引入此模板

3764ef33293c4eb9970ba3d982b78e86.png

wepy最终会把所引用的组件代码,都打包到一个主页面中的,所以在主页面引入模板即可

  1. 第一种方法可以解决这个问题,并且还节省了代码量,但这属于wepy和原生小程序混写,后面又发现另一种解决办法

对于第二层循环要传的值,用repeat标签包裹一层

f8b79e03898b49ecab58f5fa3490cb4f.png

4. 小程序开发工具变慢

在开发过程城中,随着项目文件的越来越大,会发现小程序的开发工具越来越慢,甚至一个跳转都要等几秒钟才能跳转过去,这个时候需要把小程序打包出来的文件dist文件夹删掉,然后重新打包,会快很多,wepy也提供了命令,直接运行 npm run clean 也能达到同样的效果。

5. 小程序在手机上预览,出现卡顿现象

出现这种情况有多方面的原因,如果你之前用过原生小程序开发过项目,那么直接点击开发工具上的预览按钮,然后用手机扫码预览是一个常见的操作,但是在使用wepy过程中,你使用npm run dev 命令后,是出于开发环境,dist文件夹中的代码并没有进行压缩,优化,所以手机预览的时候会显得很慢,运行 npm run build打成生产包预览,可以解决。

6. 个别手机样式错乱

安装 autoprefixer 即可

7. mixin

wepy的mixin,与vue中的mixin执行顺序相反

  • wepy中,会先执行组件自身的,再执行mixin中的

  • vue中对于钩子函数,会先执行mixin中的,再执行组件自身的;vue中methods如果和mixin同名,那么只会执行自身的方法

以上是wepy的简要介绍,有兴趣的朋友可以阅读源码。 综合来讲,wepy的核心在于编译环节,能够将优雅简洁的类似VUE风格的代码,编译成微信小程序所需要的繁杂代码。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3576 Android15 框架扩展— RkAi 架构

    在 Rockchip RK3576 平台的 Android 定制框架中,RkAi 子系统是核心的 AI 能力扩展模块。本文将从架构设计、文件职责、启动流程、接口设计等维度,完整拆解 RkAi 子系统
    的头像 发表于 05-13 08:09 506次阅读
    RK3576 Android15 <b class='flag-5'>框架</b>扩展— RkAi 架构<b class='flag-5'>篇</b>

    MBC41系列超低外形开放式框架电源:医疗应用的理想

    MBC41系列超低外形开放式框架电源:医疗应用的理想选 在电子设备的设计中,电源供应是至关重要的一环。对于医疗、电信、数据通信和工业设备等领域,一款性能可靠、符合标准的电源尤为关键。今天,我们就来
    的头像 发表于 04-28 15:15 128次阅读

    MBC350系列低轮廓开放式框架电源:医疗应用的理想

    MBC350系列低轮廓开放式框架电源:医疗应用的理想选 在电子设备的设计中,电源的选择至关重要,尤其是在医疗、电信、数据通信和工业设备等对电源性能要求较高的领域。今天,我们就来深入了解一下
    的头像 发表于 04-28 12:50 258次阅读

    MBC225系列低轮廓开放式框架电源:医疗及多领域的理想

    MBC225系列低轮廓开放式框架电源:医疗及多领域的理想选 在电子设备的设计中,电源的选择至关重要,它直接影响着设备的性能和稳定性。今天,我们来详细了解一下MBC225系列低轮廓开放式框架电源
    的头像 发表于 04-28 12:50 216次阅读

    inVENTUS POWER MSA150系列150瓦医疗开放式框架电源:高效可靠

    inVENTUS POWER MSA150系列150瓦医疗开放式框架电源:高效可靠选 在医疗设备电源设计领域,一款性能卓越、安全可靠的电源是至关重要的。inVENTUS POWER的MSA150
    的头像 发表于 04-28 11:15 319次阅读

    EPP - 500系列500W 5''×3''绿色开放式框架电源:高效稳定

    EPP - 500系列500W 5''×3''绿色开放式框架电源:高效稳定选 在电子设备的设计与开发中,电源供应的稳定性和高效性是至关重要的。今天,我们就来深入了解一款出色的电源产品——EPP
    的头像 发表于 04-04 15:50 845次阅读

    码神之路Netty-从零实现RPC框架课分享

    ——RPC(远程过程调用)框架。它像人体的神经系统一样,连接着各个服务器官,确保指令的准确传达。Netty,作为 Java 领域当之无愧的网络通信王者,其高性能、高并发的设计理念,使其成为构建现代 RPC 框架的不二选。本文将
    的头像 发表于 02-13 11:38 205次阅读

    LuatOS框架的使用(上)

    在资源受限的物联网终端设备中,如何实现快速开发与稳定运行是关键挑战。LuatOS框架通过将Lua语言与底层硬件抽象层深度融合,提供了一套简洁高效的开发范式。本文将围绕LuatOS框架的使用展开,从
    的头像 发表于 01-27 19:38 488次阅读
    LuatOS<b class='flag-5'>框架</b>的使用(上)

    简单易用的嵌入式软件程序框架

    1、程序框架的重要性 很多人尤其是初学者在写代码的时候往往都是想一点写一点,最开始没有一个整体的规划,导致后面代码越写越乱,bug不断。 最终代码跑起来看似没有问题(有可能也真的没有问题),但是要加
    发表于 12-25 07:45

    闪灯程序的构建与调试

    在上一文章中我们成功了搭建了环境,那么接下来就用闪灯程序来认识一下编译和调试工具吧!
    的头像 发表于 11-05 14:52 4570次阅读
    闪灯<b class='flag-5'>程序</b>的构建与调试

    PYQT 应用程序框架及开发工具

    大家好,本团队此次分享的内容为开发过程中使用到的PYQT 应用程序框架及开发工具。 pYqt 是一个多平台的 python 图形用户界面应用程序框架,由于其面向对象、 易扩展(可
    发表于 10-29 07:15

    NVIDIA TensorRT LLM 1.0推理框架正式上线

    TensorRT LLM 作为 NVIDIA 为大规模 LLM 推理打造的推理框架,核心目标是突破 NVIDIA 平台上的推理性能瓶颈。为实现这一目标,其构建了多维度的核心实现路径:一方面,针对需
    的头像 发表于 10-21 11:04 1568次阅读

    请问STM32如何移植Audio框架

    最近在学习音频解码,想用一下Audio框架。 1、这个该如何移植到自己创建的BSP并对接到device框架中?看了官方移植文档没有对没有对该部分的描述。 2、我只想实现一个简单的播放功能,只用一个DAC芯片(比如CS4344)是否就能达到我的需求?
    发表于 09-25 07:17

    BitsButton嵌入式按键处理框架

    , clang] 七、按键模拟器 为了脱离开发板进行程序的逻辑验证,我用python编写了一个按键模拟器,可以直接在pc端验证程序的逻辑,详情见:按键模拟器 八、测试框架亮点? BitsButton
    发表于 08-02 11:24

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志拦截能力,Android侧提供原生接口,用于注入LogInterface接口,框架日志及ts日志通过该接口输出,本文的核心内容是介绍如何在Android平台上有效利用
    发表于 06-15 23:20