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风格的代码,编译成微信小程序所需要的繁杂代码。


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

    评论

    相关推荐

    OpenHarmony程序分析框架论文入选ICSE 2025

      近日,ICSE 2025软件工程实践Track放榜,面向OpenAtom OpenHarmony(以下简称“OpenHarmony”)的ArkTS程序分析基础框架--方舟程序分析器(论文题目为
    的头像 发表于 01-02 13:41 76次阅读
    OpenHarmony<b class='flag-5'>程序</b>分析<b class='flag-5'>框架</b>论文入选ICSE 2025

    SSM框架的源码解析与理解

    MVC模式,使得开发Web应用程序变得更加高效和简单。 1. Spring框架 基本功能: Spring是一个开源的Java平台,它提供了全面的基础设施支持,以便开发Java应用程序。Spring
    的头像 发表于 12-17 09:20 275次阅读

    SSM框架在Java开发中的应用 如何使用SSM进行web开发

    (full-stack)的应用程序框架,它提供了全面的基础设施建设支持,能够帮助开发者构建出企业级的应用程序。Spring的核心是控制反转(I
    的头像 发表于 12-16 17:28 508次阅读

    JavaWeb框架比较

    JavaWeb框架为开发人员提供了构建Web应用程序所需的基础设施和组件,每种框架都有其独特的特点和适用场景。以下是对几种主流JavaWeb框架的比较: Spring MVC 优点
    的头像 发表于 11-25 09:14 235次阅读

    迅为iTOP-RK3568开发板驱动开发指南-第十八 PWM

    介绍 ✦第九 设备模型 第85章设备模型基本框架-kobject和kset 第86章 创建kobject实验 第87章 创建kset实验 第88章 为什么要引入设备模型 第89章 进一步探究设备模型
    发表于 10-29 10:13

    Dubbo源码浅析(一)—RPC框架与Dubbo

    比较常用,像我们应用内部程序**(注意此处是程序而不是方法,程序包含方法)**互相调用即为本地过程调用,而远程过程调用是指在本地调取远程过程进行使用。 而RPC框架就是为了帮助我们在本
    的头像 发表于 08-16 15:18 765次阅读
    Dubbo源码浅析(一)—RPC<b class='flag-5'>框架</b>与Dubbo

    日志框架简介-Slf4j+Logback入门实践

    前言 随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架非常重要。虽然应
    的头像 发表于 07-30 10:00 1151次阅读
    日志<b class='flag-5'>框架</b>简介-Slf4j+Logback入门实践

    bootstrap框架用什么软件开发

    Bootstrap是一个流行的前端框架,用于快速开发响应式和移动优先的Web应用程序。它提供了一套预定义的CSS和JavaScript组件,使得开发者可以快速构建出漂亮的用户界面
    的头像 发表于 07-11 09:50 532次阅读

    文档更新 |迅为 RK3568开发板驱动指南-第十五/十六

    attribute实验 第81章 实现多级目录实验 第82章 移植设备树插件驱动实验 第83章 设备树插件驱动分析实验 第84章设备树插件参考资料介绍 ✦第九 设备模型 第85章设备模型基本框架-kobject
    发表于 07-08 11:04

    鸿蒙Ability Kit(程序框架服务)【应用启动框架AppStartup】

    `AppStartup`提供了一种更加简单高效的初始化组件的方式,支持异步初始化组件加速应用的启动时间。使用启动框架应用开发者只需要分别为待初始化的组件实现`AppStartup`提供
    的头像 发表于 06-10 18:38 720次阅读

    硬件---电路设计ADC采样

    硬件---电路设计ADC采样 在现代电子领域中,模拟数字转换器(ADC)扮演着关键的角色,作为将模拟信号转换为数字形式的核心技术。ADC的出色性能和广泛应用使其成为数字系统、通信设备和各种传感器
    的头像 发表于 05-10 15:42 7632次阅读
    硬件<b class='flag-5'>篇</b>---电路设计<b class='flag-5'>之</b>ADC采样

    OpenHarmony4.0源码解析媒体框架

    媒体框架简介 媒体框架 multimedia_player_framework 主要提供音视频的录制与播放功能。 框架简介 从框架图中可以看出,媒体
    的头像 发表于 02-26 22:05 968次阅读
    OpenHarmony4.0源码解析<b class='flag-5'>之</b>媒体<b class='flag-5'>框架</b>

    微软发布Agent框架UFO,引领UI交互新纪元

    微软近日宣布推出全新的Agent框架——UFO(UI-Focused Agent),旨在构建更智能、更直观的用户界面交互体验。该框架基于OpenAI的GPT-4V图像识别模型开发,专为Windows操作系统上的应用程序设计,能够
    的头像 发表于 02-19 11:15 1214次阅读

    OpenHarmony NAPI 框架介绍

    环境中的 JS 变量与方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下简称 “OpenHarmony”)应用层基于 javascript 语言开发,而系统框架层则基于 C++ 语言。它们之间需要一
    的头像 发表于 02-01 17:34 720次阅读
    OpenHarmony <b class='flag-5'>之</b> NAPI <b class='flag-5'>框架</b>介绍

    R-Rhealstone框架使用教程

    本篇文章描述基于Rhealstone的系统实时性的测量基准的框架--R-Rhealstone框架
    的头像 发表于 01-18 10:54 1555次阅读
    R-Rhealstone<b class='flag-5'>框架</b>使用教程