wepy笔记之原生小程序、vue、wepy之间的差异记录

栏目: JavaScript · 发布时间: 5年前

内容简介:在使用在比较有意思的是,这里的

在使用 wepy 之前,大概的阅读一下文档,并且梳理清楚 wepy原生小程序vue 之间的差别,有利于后后续的 wepy 开发,避免踩坑。

规范方面

  1. 变量与方法尽量使用驼峰式命名,并且注意避免使用$开头。(因为框架内部用了,避免混淆)
  2. 使用ES6开发,框架内部是用的ES6,并且ES6有很多好处,所以推荐。
  3. 使用Promise。 框架默认对小程序提供的API全都进行了 Promise 处理,甚至可以直接使用async/await等新特性进行开发。
  4. 事件绑定语法改了,类似 vue (nice啊!再也不用写傻X的原生写法了)
    • bindtap="click" 替换为 @tap="click"
    • catchtap="click" 替换为 @tap.stop="click"
    • bindtap="click" data-index={{index}} 替换为 @tap="click({{index}})"

语法方面

  • wepy 大量借鉴了 vue 的语法,所以大部分 vue 中的操作,都可以在 wepy 中使用。
  • 对于动态赋值的属性可以使用 :attr="value" 的方式
  • .wpy 文件中的 scripttemplatestyle 这三个标签都支持 langsrc 属性, lang 决定了其代码编译过程, src 决定是否外联代码,存在 src 属性且有效时,会忽略内联代码。例如:
    <style lang="less" src="page1.less"></style>
        <template lang="wxml" src="page1.wxml"></template>
        <script>
        // some code
    </script>   
    复制代码

组件循环渲染的差异

wepy 中,组件的循环渲染需要使用辅助标签 <repeat> (个人觉得和原生中的 <block> 标签作用类似)。栗子:

<repeat for="{{list}}" key="index" index="index" item="item">
        <!-- 插入<script>脚本部分所声明的child组件,同时传入item -->
        <child :item="item"></child>
    </repeat>
复制代码

比较有意思的是,这里的 forkeyitemindex 全部不需要加 wx: 前缀了,写起来会方便很对,个人觉得加前缀的做法很傻,是我写原生小程序的时候最烦的地方之一了。

vuemethods 的差异

WePY 中的 methods 属性只能声明页面wxml标签的 bindcatch 事件,不能声明自定义方法,这与 Vue 中的用法是不一致的。在 wepy 中,用户的自定义方法应该与 methods 同级。正确写法如下:

methods = {
      bindtap () {
          let rst = this.commonFunc();
          // doSomething
      },
   }
  
    //正确:普通自定义方法在methods对象外声明,与methods平级
    customFunction () {
      return 'sth.';
    }
复制代码

默认使用 babel 编译,支持ES6/ES7的一些新特性

  • 用户可以通过修改wepy.config.js(老版本使用.wepyrc)配置文件,配置自己熟悉的babel环境进行开发。默认开启使用了一些新的特性如promise、async/await(自WePY 1.4.1开始必须手动开启)等等。

使用promise封装了原生的api

原生的各种回调真的让人很头疼,但是现在可以写出下面的操作了

async onLoad() {
    await wepy.login();
    this.userInfo = await wepy.getUserInfo();
}
复制代码

数据绑定机制

wepy 的数据绑定机制和 vue 类似, 当函数运行周期结束时执行脏数据检查 ,然后自动更新到渲染层。注意措辞,是在函数运行周期结束的时候,才做检测更新的操作。所以我们在异步操作的时候,需要手动的调用一下 this.$apply 方法,来触发检查更新机制。例子:

setTimeout(() => {
    this.title = 'this is title';
    this.$apply();
}, 3000);
复制代码

个人觉得这个描述,还是不够清楚,所以网上查了一下,需要 $apply 的场景如下:

  • 异步更新数据的时候
  • 手动刷新dom的时候

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

分享经济的爆发

分享经济的爆发

阿鲁·萨丹拉彻 / 周恂 / 文汇出版社 / 2017-4-1 / 59.00元

◆了解分享经济,读这本就够了!解读了全球几乎所有成功的分享经济案例。 ◆国家多次提出“发展分享经济”“分享经济是经济新常态的国家战略”。 ◆全球分享经济泰斗揭示分享经济将从哪些方面重构我们的生活。 ◆作者是分享经济领域的泰斗,纽约大学斯特恩商学院教授。 ◆全球分享经济理论热门著作! ◆滴滴CEO程维亲自作序力荐! ◆谷歌、《时代周刊》、《 纽约时报》、《华尔街日......一起来看看 《分享经济的爆发》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具