作者:廖小廖童鞋 | 来源:互联网 | 2022-01-25 02:08
一、微信小程序wepy框架简介:
微信小程序WePY框架是腾讯官方推出来的框架,类似的框架还有美团的mpvue,京东的Taro等; 目前公司开发小程序主要用到的是微信原生方法和官方的wepy框架; wepy框架在开发过程中参考了 Vue 等现有框架的一些语法风格和功能特性,对原生小程序的开发模式进行了再次封装,更贴近于 MVVM 架构模式, 并支持ES6/7的一些新特性。相对更容易上手,提高开发效率;
二、WePY项目的创建与目录结构
WePY的安装或更新都通过npm进行,全局安装或更新WePY命令行工具
在开发目录中生成Demo开发项目
切换至项目目录
安装依赖
开启实时编译
WePY项目的目录结构如下
├── dist 小程序运行代码目录(该目录由WePY的build指令自动编译生成,请不要直接修改该目录下的文件)
├── node_modules
├── src 代码编写的目录(该目录为使用WePY后的开发目录)
| ├── components WePY组件目录(组件不属于完整页面,仅供完整页面或其他组件引用)
| | ├── com_a.wpy 可复用的WePY组件a
| | └── com_b.wpy 可复用的WePY组件b
| ├── pages WePY页面目录(属于完整页面)
| | ├── index.wpy index页面(经build后,会在dist目录下的pages目录生成index.js、index.json、index.wxml和index.wxss文件)
| | └── other.wpy other页面(经build后,会在dist目录下的pages目录生成other.js、other.json、other.wxml和other.wxss文件)
| └── app.wpy 小程序配置项(全局数据、样式、声明钩子等;经build后,会在dist目录下生成app.js、app.json和app.wxss文件)
└ ── package.json 项目的package配置
搭建好项目后,IDE需配置代码高亮,文件后缀为.wpy,可共用Vue的高亮规则,但需要手动设置,具体配置大家可参考wepy官方文档
三、wepy使用心得总结:
1.wepy代码风格类似Vue,如computed,data,methods等用法差不多,熟悉vue开发的同学看看文档可以轻松上手,不过还是有很多地方写法容易混淆,我工作中遇到的总结几个,如列表循环,条件渲染,父子组件值传递等,下面举例说明:
1). wepy和vue列表循环对比:
// wepy 列表循环,外面可套一层repeat标签,注意和vue写法的区别
// 不推荐key直接用索引index
{{item}}
2). wepy和vue条件渲染中,wepy需要加{{}},vue不需要,里面都可以写表达式进行判断:
3). 父子组件值传递两者都在子组件中用props接收, props中可以定义能接收的数据类型,如果不符合会报错,wepy可以通过使用.sync修饰符来达到父组件数据绑定至子组件的效果,也可以通过设置子组件props的twoWay:true来达到子组件数据绑定至父组件的效果。那如果既使用.sync修饰符,同时子组件props中添加的twoWay: true时,就可以实现数据的双向绑定了;
// parent.wpy
data = {
parentTitle: 'p-title'
};
// child.wpy
props = {
// 静态传值
title: String,
// 父向子单向动态传值
syncTitle: {
type: String,
default: 'null'
},
twoWayTitle: {
type: String,
default: 'nothing',
twoWay: true
}
};
onLoad () {
console.log(this.title); // p-title
console.log(this.syncTitle); // p-title
console.log(this.twoWayTitle); // p-title
this.title = 'c-title';
console.log(this.$parent.parentTitle); // p-title.
this.twoWayTitle = 'two-way-title';
this.$apply();
console.log(this.$parent.parentTitle); // two-way-title. --- twoWay为true时,子组件props中的属性值改变时,会同时改变父组件对应的值
this.$parent.parentTitle = 'p-title-changed';
this.$parent.$apply();
console.log(this.title); // 'c-title';
console.log(this.syncTitle); // 'p-title-changed' --- 有.sync修饰符的props属性值,当在父组件中改变时,会同时改变子组件对应的值。
2.wepy支持自定义组件开发,实现组件复用,减少代码冗余,提高开发效率;
3.wepy支持引入npm包,拓展了很多方法;
4.支持Promise,ES2015+特性,如async await 等;
5.支持多种编译器,Less/Sass/Styus、Babel/Typescript、Pug;
6.支持多种插件处理,文件压缩,图片压缩,内容替换等;
7.支持 Sourcemap,ESLint代码规范管理等;
8.对小程序wx.request方法参数进行了修改,返回Promise对象,优化了事件参数传递,具体用法如下:
// wx.request原生代码:
wx.request({
url: 'xxx',
success: function (data) {
console.log(data);
}
});
// WePY 使用方式, 需要开启 Promise 支持,参考开发规范章节
wepy.request('xxxx').then((d) => console.log(d));
// async/await 的使用方式, 需要开启 Promise 和 async/await 支持,参考 WIKI
async function request () {
let d = await wepy.request('xxxxx');
console.log(d);
// 原生的事件传参方式:
Click me!
Page({
tapName: function (event) {
console.log(event.currentTarget.dataset.id)// output: 1
console.log(event.currentTarget.dataset.title)// output: wepy
console.log(event.currentTarget.dataset.other)// output: otherparams
}
});
// WePY 1.1.8以后的版本,只允许传string。
Click me!
methods: {
tapName (id, title, other, event) {
console.log(id, title, other)// output: 1, wepy, otherparams
}
}
四 、最后一点点感悟:
本文总结的比较浅显,很多地方说的也不是太详细,如有错误的地方大家可以批评指正,欢迎大家留言一起交流探讨,坚持学习,不断探索总结,路漫漫其修远兮,吾将上下而求索!
参考资料:
wepy官方文档 ;
微信小程序官网开发文档 ;
vue官方开发文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
mpvue-meituanmpvue-meituan是一款使用mpvue开发的实战小程序项目,完全仿制美团官方外卖点餐小程序开发而成,项目的框架结构完全 ...
[详细]
蜡笔小新 2023-09-01 15:02:18
-
篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于微信的图书馆服务系统的设计与实现相关的知识,希望对你有一定的参考价值。随着时代的快速进步,“互联网 ...
[详细]
蜡笔小新 2023-09-09 16:11:01
-
-
本文介绍了如何使用Echarts for Weixin在微信小程序中构建中国地图,并实现区域点击事件。包括效果展示、条件准备和逻辑实现的具体步骤。 ...
[详细]
蜡笔小新 2024-11-18 19:37:06
-
大家好,今天我来为大家分享一下,Linux命令查询小程序中的WePY云开发实践。WhyWePY首先,先分享一下为什么要选择WePY?在项目开始进行选型的时候,我可选的底层框架有We ...
[详细]
蜡笔小新 2023-10-13 10:24:03
-
这篇文章给大家分享的是有关Linux命令如何查询小程序中的WePY云开发的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。W ...
[详细]
蜡笔小新 2023-10-12 13:24:44
-
Linux命令查询小程序中的WePY云开发实践-大家好,今天我来为大家分享一下,Linux命令查询小程序中的WePY云开发实践。WhyWePY首先,先分享一下为什么要选择WePY? ...
[详细]
蜡笔小新 2023-08-28 23:17:28
-
继微信正式推出微信小程序后,各个大厂陆续发布了各自的小程序平台——支付宝小程序、百度小程序、头条小程序,跨小程序平台开发也成为了众多小程序开发者要面临的问题。Antmove–小程序 ...
[详细]
蜡笔小新 2023-08-20 01:42:04
-
这是奶爸码农第49篇原创文章,点击上方蓝字关注在两个月前,我开始了一次对国内各大互联网前端技术体系的探索之路。自己的技术视野也得到不断扩展, ...
[详细]
蜡笔小新 2023-08-18 15:50:12
-
小程序概述APP和和H5的区别:原生APP是软件开发者开发后,直接在安卓或者iOS系统中直接运行的软件应用,功能强大,体验 ...
[详细]
蜡笔小新 2023-08-17 16:54:09
-
本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ...
[详细]
蜡笔小新 2024-11-19 15:36:11
-
pages文件夹就像一个大橱柜,里面放着各种精美的衣装,你也可以理解为供小程序的页面。1、制造衣服我在pages页面下新建了3个页面market广 ...
[详细]
蜡笔小新 2023-09-15 15:52:12
-
想要快速的入门,就需要在初期投入足够多的时间和精力。除了课程学习笔记,在开发项目练手时,会碰到很多问题,这些问题及解决方案最好一并记录。能够把python学会,一定也能把java ...
[详细]
蜡笔小新 2023-09-09 10:43:25
-
使用wepy开发小程序,为什么设置pages路径的时候总是找不到js文件? ...
[详细]
蜡笔小新 2023-09-04 10:33:43
-
百度蛮多例子的,但是代码太长懒得看了前言要实现跑马灯主要就是获得判断开始定界和结束定界,1.9.3新增的wxml操作接口就可以拿到节点长宽等属性,当然你也可以直接用文字数量* ...
[详细]
蜡笔小新 2023-08-31 14:25:10
-
检测版本号:node-vnpm-v下载速度变快shdo以管理员身份运行信息windows直接以管理员运行cmd即可不用sudonpmrundev打开微信开发工 ...
[详细]
蜡笔小新 2023-08-30 16:50:35
-