vue 创建一个用于构建自定义渲染器的包

0wi1tuuw  于 4个月前  发布在  其他
关注(0)|答案(8)|浏览(49)

这个功能解决了什么问题?

作为nativescript-vue的作者,我不得不像Vue一样设置类似的构建设置,以便能够直接将Vue的某些部分导入到nativescript-vue中。主要的问题来源是Vue仓库中使用的别名(顺便说一下,这确实有道理!)。
为了解决这个问题,我希望有一个官方的包,用于创建(并注册)自定义渲染器到Vue中,这将包含大部分Vue特定的逻辑,如修补/填充等。
我脑海中一个很好的例子就是react的包所做的:https://github.com/facebook/react/tree/master/packages/react-reconciler
我希望能在这方面做一些工作,但我会与核心团队合作,确保尽可能高质量的工作。

提议的API看起来是什么样子?

// my custom renderer
// for example: nativescript-vue.js
import VueRenderer from 'vue-renderer'

// a class for creating native views in NativeScript
import ViewUtils from './ViewUtils.js'

export default new VueRenderer({
  // Node operations
  createElement(tagName) {},
  createElementNS(namespace, tagName) {},
  createTextNode(text) {},
  createComment(text) {},
  insertBefore(parentNode, newNode, referenceNode) {},
  removeChild(node, child) {},
  appendChild(node, child) {},
  parentNode(node) {},
  nextSibling(node) {},
  tagName(node) {},
  setTextContent(node, text) {},
  setAttribute(node, attribute, value) {},

  // Additional methods that need to be specified
  // but for example:
  createRoot() {} // this would get called to create the root element for the root Vue instance
})
// then in userland we could just do
import Vue from 'vue'
import NativescriptVue from 'nativescript-vue'

Vue.use(NativescriptVue)

new Vue({
  render(h) => h('label', { text: 'Hello World' })
})
lp0sw83n

lp0sw83n1#

这是我已经考虑了一段时间的事情——绝对是一件有价值的事情。感谢提出的API设计建议。

dnph8jn4

dnph8jn42#

在我看来,这对于Vue的未来非常重要。

有任何机会它可以被添加到官方路线图的某个地方吗?即使只是在待办事项列表中?

$x_{1e0f1}^{x}$

也请考虑一下React和Angular已经有了这个功能。

例如,看一下这个React自定义渲染器的列表:

$x_{1e1f1}^{x}$

odopli94

odopli943#

有任何更新吗?自Vue贡献者收到它以来已经过去了近六个月。

dldeef67

dldeef674#

你好,这是一段关于Vue 3.0的文本。它说@Aaron-Pool看起来像是在Vue 3.0中。

mzsu5hc0

mzsu5hc05#

@Aaron-Pool看起来像是Vue 3.0的即将到来。如果它即将在3.0中到来,那么是否已经存在进展?

x6yk4ghg

x6yk4ghg6#

这是否可以在Vue.js 3中实现?

6qftjkof

6qftjkof7#

是的!Vue 3.x 是基于自定义渲染器构建的,实际上DOM/web版本也是核心库之上的一个“自定义”渲染器。

参见 https://github.com/vuejs/vue-next/tree/master/packages/runtime-dom

j13ufse2

j13ufse28#

感谢Vue.js 3.0,我基于https://github.com/vuejs/vue-next/tree/master/packages/runtime-core构建了一个名为Vuvas的自定义画布渲染器,因此我们可以使用css + vue3.0来构建我们的UI,就像flutter一样。布局基于yoga-layout,因此我们可以使用flex布局。也许你会对此感兴趣@rigor789@yyx990803

相关问题