Skip to content

1.0.0 版本升级改动

musicode edited this page Jul 12, 2019 · 22 revisions

比较简单的

  1. 删除 Yox.is.primitive 方法
  2. Yox.Event 构造函数签名改为 (type, originalEvent)
  3. Yox.string.camelCase 改为 Yox.string.camelize
  4. Yox.object.extend(a, b, c, d) 改为 Yox.object.extend(a, b)
  5. 删除 Yox.dom.isElementYox.dom.children
  6. Yox.dom.before(parentNode, node, referenceNode) 中的 referenceNode 改成必传
  7. Yox.dom.setProp 改为 Yox.dom.prop
  8. Yox.dom.setAttr 改为 Yox.dom.attr
  9. 删除 Yox 实例的 watchOnce 方法
  10. 事件对象 event.type 不再包含命名空间,命名空间设值给了 event.ns 属性
  11. 表达式模板 语法增强了校验,具体可查看运行时的报错或警告信息

数据监听

立即执行监听函数,由从前的 sync 改为了 immediate,虽然这个单词不好记,但没办法,它就是更规范一些。

before

{
  watchers: {
    title: {
      sync: true,
      watcher: function () {

      }
    }
  }
}

after

{
  watchers: {
    title: {
      immediate: true,
      watcher: function () {

      }
    }
  }
}

如果你用的是 yox.watch('keypath', function, true),则无需任何改动。

特殊事件

before

Yox.dom.specialEvents.name = {
  on: function () {},
  off: function () {}
}

after

Yox.dom.addSpecialEvent('name', {
  on: function () {},
  off: function () {}
})

组件数据校验

不再支持重写 checkPropTypes 函数,为了以后的 yox 生态考虑,数据校验最好是统一的,如果每个人都重写就意味着这个功能不可用。

改动详情可参考 文档

自定义指令

新版重新设计了自定义指令,详情参考文档

Lazy 指令

本质上,lazy 不是指令,而是指令的辅助。

lazy 有两种值,一种是 true,一般用于 model 指令,表示输入框在失焦时触发变化。一种是大于 0 的数字,表示延时多久,这个一般取决于指令的实现方。

Yox.directive({
  name: {
    bind: function (node, directive, vnode) {
      // vnode.lazy 是一个对象,拥有当前节点上的所有 lazy 配置
    }
  }
})

比如,我们可以为每个事件分别设置延时。

<input
  type="text"

  model="value"
  on-click="click()"
  on-mousedown="mousedown()"
  on-mouseup="mouseup()"

  lazy-model="100"
  lazy-click="200"
  lazy-mousedown="300"
  lazy-mouseup

  lazy="999"
/>

input 节点的 lazy 格式如下:

{
  model: 100,
  click: 200,
  mousedown: 300,
  mouseup: true,
  '': 999
}

内置指令怎么使用 lazy 可查看源码,逻辑很简单:event, model

自定义指令怎么使用 lazy?那就看你咯!

Clone this wiki locally