zoukankan      html  css  js  c++  java
  • Weex 和 Vue 2.x 的语法差异

    Overview

     WeexVue
    生命周期 ready: function() {} mounted: function() {}
    条件指令 if="{{!foo}}" v-if="!foo"
    循环指令 repeat="{{item in list}}" v-for="item in list"
    样式类名 class="btn btn-{{type}}" :class="['btn', 'btn-' + type]"
    内联样式 style="color:{{textColor}}" :style="{ color: textColor }"
    事件绑定 onclick="handler" @click="handler"
    原生事件 onclick="xxx" @click.native="xxx"
    数据绑定 src="{{rightItemSrc}}" :src="rightItemSrc"
    内容/槽 <content></content> <slot></slot>
    数据初始化 data: { value: 'x' } data: function() { return { value: 'x' } }
    标签 ID id="xxx" ref="xxx"
    获取节点 this.$el('xxx') this.$refs.xxx

    Reference

    See the source code of weex-vue-migration for more details:

    LifeCycle Hooks 生命周期钩子

    weexvueDescription
    init beforeCreate 组件实例刚刚被创建,组件属性如data计算之前
    created created 组件实例创建完成,属性已绑定,但DOM还未生成
      beforeMount 模板编译/挂载之前
    ready mounted 模板编译/挂载之后
      beforeUpdate 组件更新之前
      updated 组件更新之后
      activated forkeep-alive, 组件被激活时调用
      deactivated forkeep-alive, 组件被移除时调用
      beforeDestroy 组件被销毁前调用
    destroyed destroyed 组件被销毁后调用

    在weex中,使用{{…}}在<template>中绑定在<script>里定义的数据;在vue中,需要在要绑定的属性前加 : 。如以下示例。

    • 类名

      • weex
      <div class="btn btn-{{type}}"></div>
      • vue
      <div :class="['btn', 'btn-' + type]"></div>
    • 样式绑定

      • weex

        <div style="color:{{textColor}}"></div>
      • vue

        <div :style="{color: textColor}"></div>
    • weex

      <image src="..." if="{{shown}}"></image>

      or

      <image src="..." if="shown"></image>
    • vue

      <image src="..." v-if="shown"></image>
    • weex: repeat

      • $index为索引

        <div repeat="{{list}}">
        <text>No. {{$index + 1}}</text>
        <div>

        or

        <div repeat="{{v in list}}">
        <text>No. {{$index + 1}}, {{v.nickname}}</text>
        </div>
      • 对象参数的顺序

        <div repeat="{{(key, value) in list}}">
        <text>No. {{key + 1}}, {{value.nickname}}</text>
        </div>
      • track-by

        <div repeat="{{item in items}}" track-by="item.id" class="{{gender}}"></div>
    • vue: v-for

      • 移除$index索引

      • 对象参数的改变:改为(value, key), 与通用的对象迭代器保持一致

        <div repeat="{{(value, key) in list}}">
        <text>No. {{key + 1}}, {{value.nickname}}</text>
        </div>
      • track-by 替换为v-bind

        <div v-for="item in items" v-bind:key="item.id">
    • weex

      data: { value: 'x' }
    • vue

      props: { value: { default: 'x' } }

      动态数据

      data: function () { return { value: 'x' } }
    • 获取节点

      • weex: this.$el('xxx')

        <template>
        <container>
        <text id="top">Top</text>
        </container>
        </template>
        <script>
        module.exports = {
        methods: {
        toTop: function () {
        var top = this.$el('top')
        }
        }
        }
        </script>
      • vue

        this.$refs.xxx

    • 事件绑定

      • weex

        <div onclick="handler"></div>
      • vue

        <div @click="handler"></div>
    • 事件触发

      • weex: dispatch和broadcast

        this.$dispatch()
        this.$broadcast()
      • vue: emit

        this.$emit()

      注:Weex 的 $dispatch 与组件无关,在任意组件中都可以通过 $on 捕获到,Vue 的$emit 用于触发组件(标签)的自定义事件。

    • 原生事件

      • weex

        onclick="xxx"
      • vue

        @click.native="xxx"
  • 相关阅读:
    我的浏览器收藏夹分类
    我的浏览器收藏夹分类
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
  • 原文地址:https://www.cnblogs.com/hehey/p/6295482.html
Copyright © 2011-2022 走看看