小程序 | WePY 组件化开发框架

在说说WePY框架之前,先小结一下自己对前端工作的基本认识。对普通的前端开发者来讲,做到心中有数,方能得心应手。在工作中遇到问题时,能快速地定位到是环境层面的问题?还是开发层面的问题?还是性能优化层面的问题?这很重要,因为快速地定位问题是找到问题根源的前提,进而做到宠辱不惊。我通常把日常工作拆解为如下三大模块的任务:

任务1:基于(nodejs/npm/webpack/eslint/editorconfig/git)等工具搭建工程开发环境,以保证我们可以在开发环境中使用ES6、TypeScript、Less等更加便捷的进阶技术,可以使用npm对依赖库进行管理,可以使用eslint进行代码规范等。所谓“工欲善其事,必先利其器”,小到代码编辑器的选择、插件的选择、代码高亮等;大到构建出合理的工程结构目录以便于代码管理,并实现开发环境下热更新、代理服务,前端自动化等。

任务2:借助于前端框架(Vue/React/Angular/Wepy)等实现MVVM组件化开发,灵活使用这些框架所提供的特色功能,如组件的设计与复用、组件实例的生命周期与钩子函数、组件之间的数据传递与事件通信、Slot内容分发插槽,Mixin混合、数据动态绑定、事件绑定、列表循环渲染、表单输入与取值、条件渲染、动态样式等。在这个任务下,要深刻理解当前所选用框架的核心特点并灵活使用。特别是组件的设计与封装,需要花工夫精心设计,这不仅需要开发者对框架特色深入理解,还需要开发者对产品、UI和数据接口的综合考虑;可扩展性、灵活性,是组件设计的核心。

任务3:最终使用webpack打包工具进行打包,代码优化,性能优化、部署上线等。但凡涉及到这方面的话题,就比较复杂,大多数情况下我们使用框架配套的命令行工具可以构建出标准模板的项目目录以及打包配置,比如Vue的 vue-cli,Wepy的 wepy-cli等。打包优化常常使用的就是Webpack这个神奇而牛逼的工具了。

前端工作乱如麻,希望一点小结能帮助自己再次梳理工作中的主要内容,对知识进行对比性学习,不盲目崇拜任何一项技术,不跟风;而应该结合项目的实际需求灵活地选择框架和技术。大家都说前端框架大同小异,我也希望有时间和机会能深入地研究其中之一的源码,通过源码分析帮助自己更加深入地理解前端开发工作。好了,就扯淡这么多了,接下来就分享一下“关于WePY框架入门使用”所需要掌握的一些基本知识点。



1、安装Wepy脚手架工具

在 nodejs / npm 环境下安装 wepy-cli :

npm install wepy-cli -g

使用 wepy-cli 创建项目标准模板:

wepy init standard project_name
cd project_name
npm install
npm run dev      // 运行开发环境

项目打包:

npm run build



2、认识 Wepy项目的目录结构

小程序 | WePY 组件化开发框架_第1张图片
wepy项目的目录结构

其中,/src/components/ 目录用于放置我们自定义的组件,/src/pages/ 目录用于放置程序中的页面。app.wpy 是程序的入口文件,放置着各种配置项。WePY框架对原生小程序开发进行了二次封装,将更加贴近于MVVM架构模式。

注意(重要):应在WePY项目的根目录添加 project.config.json文件,它的作用如下图示:

小程序 | WePY 组件化开发框架_第2张图片



3、代码编辑器和调试环境

建议使用 atom 编辑器进行开发,配置代码高亮的方法如下:

小程序 | WePY 组件化开发框架_第3张图片
atom

调试环境直接使用“微信开发者工具”,调试前得先申请一个小程序账号,需要 appid才能打开WePY小程序项目。



4、WePY代码规范

1)变量、方法名使用驼峰命名法,并且要避免使用 开头的。
2)程序入口文件、组件文件、页面文件,都以 .wpy 为后缀。其它外链文件不受限制。
3)要使用 ES6 语法进行开发,整个WePY框架就是在 ES6 下开发的。
4)WePY 支持 Promise,可以直接在程序中使用 async / await 等新特性。
5)小程序原生开发中的事件绑定,如 bindtap="click",在 WePY框架下要替换成 @tap="click";原生的 catchtap="click",在WePY框架下要替换成 @tap.stop="click"。更多关于事件绑定的变化,请参见WePY官网之“组件自定义事件”。
6)小程序原生开发中的事件传参 bindtap="click" data-item={{item}} ,在WePY框架下优化成了 @tap="click({{item}})",更加简洁了。
7)自定义组件的命名,应该避免与微信原生组件名称相同。



5、组件化开发模式

WePY支持组件化开发模式,文件模板如下:

// demo.wpy






从上述文件模板看,其代码组织与 Vue 组件化开发模式几乎一模一样。把小程序原生开发中的 demo.wxml、demo.wxss、demo.json、demo.js 四个文件合并成了一个 demo.wpy 文件。

小程序 | WePY 组件化开发框架_第4张图片
.wpy文件的编译过程

三种标签分别支持哪些语法?如下图示:

小程序 | WePY 组件化开发框架_第5张图片
三种标签所支持的语法



6、小程序入口文件 app.wpy 与 小程序实例


入口文件app.wpy中所声明的小程序实例继承自wepy.app类,包含一个config属性和其它全局属性、方法、事件。其中config属性对应原生的app.json文件,build编译时会根据config属性自动生成app.json文件,如果需要修改config中的内容,请使用微信提供的相关API。

在页面实例中,可以通过 this.$parent来访问 App 实例;在子组件中可以使用 this.$parent 访问父组件实例。



7、页面实例 与 组件实例