wepy官网:https://tencent.github.io/wepy/document.html,想要了解全面最好去官网,以下只是指出项目里常用地方。

1.页面跳转

(1)//有返回跳转
wepy.navigateTo({
url: "/pages/address_add"
});

(2)//无返回跳转
wepy.switchTab({
url: '/pages/shop_cart'
})

2.组件间通信

(1)由一个页面或组件对另一个组件中的方法的直接调用

this.$invoke('comAddress', 'getLocationInfo');  //第一个参数是调用指定组件的路径,第二个是调用的方法。

(2)由子组件发起向父组件调用某方法,如从组件comC发起,comB组件接收,然后page_A在接收

that.$emit('selectCode', that.code);  //第一个参数是调用的方法,第二个是传过去的参数

(3)事件是由父组件发起,所有子组件都会收到此广播事件,除非事件被手动取消。如从page_A发起,comB组件接收,comB里的组件comC再接收

this.$broadcast()

3.数据 / 缓存
wepy.$store.dispatch({type: CHANGE_CART, payload: {goodCartList: that.cartList}});

4.页面与组件

首先组件最好放在 components 里,调用的方法和微信一样。然后页面也是和原生的微信小程序一样,最好是放在 pages包 里,然后在 app.wpy 创建一个页面,不过wepy没有和微信小程序一样有 .js,.json,.wxml,.wxss文件,它是把这四个文件结合在一个后面带有 .wpy 文件里,结构和区别如下:

(1) 页面

<template>
  <view>
    <topicItem :countNum.sync="countNum" @showDownload.user="getShowDownload"></topicItem> //使用组件,countNum 为传入组件参数,加个 .sync 属于动态传值,否者属于静态传值,只能传String类型。
                                                          @showDownload.user 为子组件调用父页面的方法,.user表明绑定用户自定义组件事件,通过$emit触发
    <view @tap="previewImage"></view>  //区别:这里的事件不像原生小程序那样用要 bindtap='',这里用 @tap='',可以用 @tap.stop='' 阻止事件冒泡
  </view>
</template>
<script>
import wepy from 'wepy';
import api from "@/api/api"; //调用后台接口统一放在这文件里
import TopicItem from "../../components/topic_item"; //导入组件
export default class SquareDetails extends wepy.page { //注意:这里是 page
config = {
navigationBarTitleText: '话题详情', //设置页面标题
usingComponents: {
"van-popup": "/components/vant-weapp/popup/index", //这是导入vant组件
}
};
components = {
topicItem: TopicItem, //左边是 template 里调用组件的名字,右边是 script 导入组件的名字,两边可以不一样
};
data = {
  countNum:[]
}
onLoad(option) { //生命周期和上拉下拉加载和微信的一样
 this.topicDetails();
}
async topicDetails() {  //区别:调用后台接口的方法可以使用 async 表示异步请求,然后使用 await 等待接口返回数据
  const json = await api.getT
opicDetails(
    query: {
      id: xxxxx
    }
  }
  if (json.data.code == "SUCCESS") {
    //接口返回后的操作逻辑    
    let resData = json.data.data;
    this.
countNum = resData; //区别:这里不用像小程序那样要用 this.setData({xx:'aa'}) 赋值。只需要用 ‘=’ 号就可以了
    this.$aplly();
 //区别: 这里要调用 $apply() 才能把最新数据渲染到页面,不然页面显示的还是原来的值
  }
)
methods = {  //区别:页面或组件的方法和点击事件最好要写这里
  previewImage(){
    //操作逻辑
  },
  
getShowDownload(a,b,c){ //这是子组件用 this.#emit('showDownload',a,b,c) 传过来的方法, a,b,c 是传过来的参数
    //操作逻辑
  }
}
}
</script>
<style lang="less">
.topic-item-container {
  //css
}
</style>

(2) 组件
<template>
  <block wx:for="{{countNum}}" wx:for-index="index" wx:for-item="item" wx:key="index">  
    <view>{{item}}</view>
  </block>
</template>
<script>
import wepy from 'wepy';
import {UPDATE_TOPIC} from "@/store/types";
export default class SquareDetails extends wepy.component { //注意:这里是 component
config = {
  usingComponents: {
    "van-field": "/components/vant-weapp/field/index" //调用 vant 组件
  }
}; props = { //注意:这里组件用 props 接收父组件传过来的参数
  countNum:{
    type: Object,
    default: [],
    twoWay: true //注意:这里 twoWay 标识双向绑定,意思是当子组件的值改变时,父组件对应的值也随之改变
  }
}
computed = {  //这里可以使用 computed/watch 监听数据变化
tempTopicItemList() {
return wepy.$store.getState().topic.topicItemList;
},
}
updateIndexListStore() {
  //逻辑操作   wepy.$store.dispatch({ //改变 store 里的值
    type: UPDATE_TOPIC, payload: {
      topicItemList: newTempTopicItemList
    }
  });
}
}
</script>
<style lang='less'>
  // css
</style> (3) reducers //可以说是相当于微信小程序的 s
torageSync 吧
import {handleActions} from 'redux-actions';
import {CHANGE_TOPIC, UPDATE_TOPIC} from "../types"; const defaultState = {
topicItemList: []
}; export default handleActions({
[CHANGE_TOPIC](state, action) {
return {
...state,
topicItemList: action.payload.topicItemList
};
},
[UPDATE_TOPIC](state, action) {
return {
...state,
topicItemList: action.payload.topicItemList
};
},
}, defaultState);

微信小程序 + wepy快速开发的更多相关文章

  1. 微信小程序wepy框架开发资源汇总

    开源项目 wepy-wechat-demo:基于wepy开发的仿微信聊天界面小程序 深大的树洞:基于wepy开发的树洞类微信小程序 wepy-demo-bookmall:微信小程序

  2. 微信小程序wepy开发循环wx:for需要注意

    微信小程序wepy开发循环wx:for需要注意 item index值必须在wx:for之后使用 <view wx:for="{{tablist}}" class=" ...

  3. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  4. 微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击

    微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击 摘要: 小程序和公众号最大的区别有如下四点:1.小程序没有粉丝,开发者在后台能看到的只能是累计用户访问数以及实时统计 ...

  5. 微信小程序_快速入门01

    这段时间,嗯,大四课程已经结束了,工作也已经找到了,但是呢,到公司报道的时间还没到,哈哈,马上就开始人生的第一份工作了,怎么说确实有点期待~ 在这段时间一方面为第一份工作做各种准备,另一方面也没有停止 ...

  6. 微信小程序之蓝牙开发(详细读数据、写数据、附源码)

    本文将详细介绍微信小程序的蓝牙开发流程(附源码)准备:微信只支持低功耗蓝牙也就是蓝牙4.0,普通的蓝牙模块是用不了的,一定要注意. 蓝牙可以连TTL接到电脑上,再用XCOM调试 一开始定义的变量 va ...

  7. 微信小程序--使用云开发完成支付闭环

    微信小程序--使用云开发完成支付闭环 1.流程介绍 2. 代码实现和逻辑思想描述 云函数统一下单 对应云函数 unipay [CloudPay.unifiedOrder] 函数思路 : 调用云函数封装 ...

  8. Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)

    ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 ArthurSlog Page GitHub NPM Package Page 掘金主页 ...

  9. 微信小程序之快速接入七牛云

    小程序为什么要接入云? 目前,开发者在开发小程序过程中,主要遇到以下几个问题: 小程序发布大小超限 微信官方限制小程序的发布代码不能超过 1MB,而在实际开发过程中,一般的小程序难免会有图片等富媒体文 ...

随机推荐

  1. 图解MySQL索引(三)—如何正确使用索引?

    MySQL使用了B+Tree作为底层数据结构,能够实现快速高效的数据查询功能.工作中可怕的是没有建立索引,比这更可怕的是建好了索引又没有使用到.本文将围绕着如何优雅的使用索引,图文并茂地和大家一起探讨 ...

  2. ASP.NET处理管道之防盗链

    盗链就是在用户向网站a请求网站资源时,网站a将网站资源的路径填写为b网站资源的地址,用户将直接看到网站a上显示着网站b的资源,从而造成盗链. 要防止盗链,就要用到处理管道中的技术 在相应的模块类中: ...

  3. vue父路由高亮不显示

    vue父路由高亮不显示 首页和考试中心作为父路由,点击时发现不高亮,是因为路由配置有问题 因为首页和考试中心已经重定向到homepage和tpersonal-data这两个路由,当点击首页和考试中心的 ...

  4. 解决Mac中anaconda作图中文异常显示的问题

    说明 本篇主要针对在MAC系统中Anaconda环境下,matplotlib显示不了中文的问题,提出解决Python绘图时中文显示的方法. 运行环境 macOS Mojave 10.14.6 Pyth ...

  5. 【论文笔记】Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition

    地址:https://arxiv.org/pdf/2006.11538.pdf github:https://github.com/iduta/pyconv 目前的卷积神经网络普遍使用3×3的卷积神经 ...

  6. 05[掌握]高可用、集群、持久化、docker 等前置知识点

    高可用 24小时对外提供服务 高并发 同一时间段能处理的请求数 1,中心化和去中心化 1.1,中心化 意思是所有的节点都要有一个主节点 缺点:中心挂了,服务就挂了 中心处理数据的能力有限,不能把节点性 ...

  7. maven在windows10系统下安装配置和打包war

    maven下载地址:http://maven.apache.org/ 下载完成解压到 D盘 目录下D:\apache-maven-3.5.0\bin 配置maven环境变量: M2_HOME   D: ...

  8. python实现将大文件夹分割成多个子文件夹

    楼主用的linux,一旦数据达到几万,文件夹打开就会变卡,同时也方便同时分工协作,便于git管理,写了个将大文件夹分割成多个小文件夹的脚本 如操作文件夹:img,脚本不破坏img的数据,创建img_1 ...

  9. Matlab矩阵间快速赋值方法

    目前还没见到网上用过这个简单的方式 A= [1 2 3; 4 5 6; 7 8 9] B = zeros(5,5) B(1:3, 2:4) = A     %将A赋值到B的第1行到3行,第2列岛4列, ...

  10. vue全家桶(2.7)

    3.11.1.vue-router中的全局钩子函数 在vue-router中,路由发生变化,我们可以做一些事情,例如:可以决定是否进入导航,可以决定跳转到哪里,官方文档中又叫做导航守卫 首先来看一个全 ...