美文网首页
wepy学习分享

wepy学习分享

作者: 钱罗罗_ | 来源:发表于2018-11-21 17:14 被阅读100次

1 项目的创建

1.1 全局安装wepy-cli脚手架   

    npm install wepy-cli -g 

1.2 快速生成项目

    1.7以后 

        wepy init standard my-project

    1.7之前

        wepy new my-project

安装选项

1.3 安装依赖

    进入项目并安装依赖

       cd my-project
       npm install

2 新建项目跑起来的时候,遇见的问题

    一定要把项目跑起来,微信开发者工具才能看到视图,否则会报入口app.json找不到。

   wepy build --watch

    开启时会报,extra semi类似的错误,因为开启了eslint,默认不需要分号,可以在.eclintrc.js里面忽略semi的检查,修改之后,重新build才会生效。

3 项目的结构

项目结构

    ① dist
        build之后存放文件的位置,也就是微信开发者工具读取的文件夹。

    ② src
        componets:存放组件
        mixins:混合组件,就是公共方法的存放地址
        pages:页面
        store:state的存放地址(本项目引入了redux,也可以引入mobx)
        project.config.json:小程序项目配置文件
        index.template.html:web页面的入口文件。

    ③ app.wpy
        小程序的入口文件,整个项目的入口,原生app.json配置项在这里配置。

4 小程序的入口文件app.wpy    

    原生小程序要求app实例必须有3个文件,app.js / app.wxss / app.json。wepy将3个文件整合成一个app.wpy。包括小程序逻辑、公共配置、公共样式。

小程序实例

在page页面中,可以使用this.$parent来访问小程序实例。customData自定义数据、customFunction自定义方法。但是,是能在脚本里调用,想在template里使用,只能赋值给组件内的变量

小程序实例内容调用

4.1 config:小程序全局基础配置。

           pages配置项:

pages数组

            windows配置项:

window对象

        tabBar配置项:
            特殊声明:位置是top的时候,不能配置icon。icon的地址必须是相对地址。

tabBar

4.2 globalData 全局数据

globalData

 在页面调用全局数据的时候:

        this.$parent.globalData.name

   调用全局方法同上。要用$parent

5 wepy扩展

pages文件夹里的文件都是一个页面的入口文件,后缀名为.wpy。一个文件包含了的wxml / js /  less

5.1 wepy.page  

       原生小程序要求page实例必须有4个文件,page.json / page.wxml / page.js / page.wxss,4个文件除后缀名外,名称必须相同。在wepy中整合成一个文件page.wepy,包含页面结构、页面配置、页面逻辑、页面样式。

page对象配置项

page实例:如下

page实例

注意:

    1.生命周期函数、自定义方法和dom绑定的事件的定义,都是fun () {}函数形式。其他都是 name = {}的对象形式。

    2.WePY中的methods属性只能声明页面wxml标签的bind、catch事件,不能声明自定义方法,自定义方法与methods同级。methods里面的方法是do something。自定义方法大多是return something.

5.2 wepy.components

组件实例不需要config和生命周期函数,其他的与页面实例大致相同。组件实例继承自wepy.components

组件实例

组件实例被引入的时候,要在components配置项里,给一个唯一的组件ID名字。尽可能不要重名,不然两个组件公用一个实例,会引起连带改变的后果。

5.3 总结

各自的实例声明

6 mixins

mixins在src文件夹下,混合组件。就是类似于一个公共方法库 。

6.1 引入

引入

6.2 插入

6.3 使用

    在mixins里面的方法,都可以通过this.fun进行调用。在mixin里面定义的钩子函数,会自动打包到页面文件里,在正确的时候进行调用。但是在dom上绑定的事件,要写在methods里面。minxin继承自wepy.mixin

示例

7 组件的循环渲染

如果需要循环渲染组件,必须要借助repeat标签  :  

循环渲染组件 子组件访问父组件传入的值

可以再子组件内,要求传入字段的类型,使用props字段进行约束

字段类型约束

8 computed和watch 

8.1 computed

计算属性,有输入值、返回值的属性 。访问方法同data 。

computed定义

缺点:不是对单一的绑定数据,进行计算。而是,data里面任何数据的改变都会触发一次computed。有点耗性能吧。因为可能计算属性不依赖的数据改变了,那么计算属性也会重新计算一遍。

8.2 watcher监听器

    在被监听属性改变的时候,进行一些逻辑处理,做一些事,不是返回一个值。名称必须与监听的属性名一致。

watch定义

在定义的时候是watch而不是watcher。

注意:好像每次改变data数据的时候,都要调用一下this.$apply();

9 父子组件通信

9.1 静态传值props

        静态传值,就只传一个字符串,对,不是绑定data里面的值,只是传个字符串才叫静态传值

静态传值必须是常量 静态props

9.2 动态传值以及双向绑定

9.2.1 父组件 -> 子组件的单向数据绑定

    就绑定一个data里面的值就好了。父组件改了,子组件也就改了

父子组件的数据结构

不加任何修饰符和属性,那么子组件只在初始化的时候渲染父组件传入的属性,之后父组件在改变,子组件也不会重新渲染。

单向静态

9.2.2 父组件->子组件的数据绑定

       加上.sync修饰符,为了子组件能动态接收父组件传入的值,并且在父组件的值改变的时候,可以进行重新渲染。

sync

9.2.3 子组件->父组件的数据绑定

    在子组件加上twoWay: true;字段。父组件跟着子组件变,但是父组件再改变不会影响子组件。

twoWay

9.2.4 双向数据绑定

    双向数据绑定,互相影响

父组件绑定传入 子组件定义twoWay属性 sync+twoWay

10.组件事件通信

    10.1  $emit

        子组件触发父级组件的事件,一级一级向上传播。 emit当然是向上发射了,上面就是父组件呀,给父组件发射一个有名字的事件,带着参数,父组件定义好了这么名字的方法。  

传播路径

    交互事件定义

通信事件定义

交互事件调用

通信事件调用

10.2 $broadcast

    广播,由父组件向下广播,一级一级向下传播。该组件的所有子组件都能接收到这个广播,一层一层广播。

broadcast

事件定义

define

事件调用

invoke

10.3 $invoke

    是页面对组件内部方法的直接调用,参数:组件路径 / 组件方法名 / 参数

定义:

定义

页面page调用:页面直接调用的话,路径参数一定要跟components里面名字一致。调用的时候随便放在一个可以执行的方法里面就好了。

调用 跟此处的名字一致

组件之间调用:

    调用:这个路径啊,我研究了一下,是相对于page的路径,但是!如果中间有文件夹的名字,请忽略。

    例如: ../components/questions   请忽略components ,不然一片红~~。我试了很多个路径,就这个行

组件间调用

11.自定义事件处理修饰符

11.1 default :绑定小程序冒泡儿事件

11.2 stop: 绑定小程序捕获事件

11.3 user:绑定用户自定义事件

12. slot插槽

    slot是子组件中的标签,父组件中的属性。

    应用场景:父组件在渲染子组件的同时,希望渲染出子组件的指定地方展示传入的dom

父组件使用slot

parent

子组件接收slot

child

注意:父组件slot的value === 子组件的name的value

这样,传入的"我就是钱兜兜本兜"就可以渲染嵌在子组件内,一同渲染到父组件内部。

13. Mixin

    13.1 默认式混合

       包含data数据、components组件、events事件、自定义方法,采用默认式混合,就是,如果组件内部未声明同名数组、组件、事件和自定义方法,咋那么注入的混合对象,对组件已声明的选项不造成影响。

    13.2 兼容式混合    

    对于组件的methods响应事件(绑定交互事件的方法)和页面生命周期事件,采用间兼容式混合。执行顺序是,执行组件本身的事件,再执行mixin里面的事件。注意,vue正好相反。别记混了。

这部分就没demo,读着貌似不是很难。

14.interception 拦截器

     对原生API的请求进行拦截,为什么要拦截啊~~我发出去就是想要点结果。Emmm...

    不是拦住,意思就是在你发请求时,有个回调,执行完了,就发出,类似于一个请求的生命周期函数。一定要写在wepy.app构造器里面。里面的p是请求的参数对象,貌似get没有请求的参数对象。

    拦截器定义在constructor里面,我觉得官网写的挺好的,就copy过来了。

拦截器

15.数据绑定

    wepy中的数据修改直接使用this.params = value就可以,但是在异步方法里面,肃然会改变值,但是dom不会重新渲染,所以要启动脏检查流程修改值之后,调用

$apply()

16.wepy封装的请求

16.1 GET简写

request

注意:await一定要写在async的方法里面,不然会报错。

开启Promise

开启promise

16.2 请求详细写

请求

相关文章

网友评论

      本文标题:wepy学习分享

      本文链接:https://www.haomeiwen.com/subject/mwmozftx.html