这个功能解决了什么问题?
作为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' })
})
8条答案
按热度按时间lp0sw83n1#
这是我已经考虑了一段时间的事情——绝对是一件有价值的事情。感谢提出的API设计建议。
dnph8jn42#
在我看来,这对于Vue的未来非常重要。
有任何机会它可以被添加到官方路线图的某个地方吗?即使只是在待办事项列表中?
$x_{1e0f1}^{x}$
也请考虑一下React和Angular已经有了这个功能。
例如,看一下这个React自定义渲染器的列表:
$x_{1e1f1}^{x}$
odopli943#
有任何更新吗?自Vue贡献者收到它以来已经过去了近六个月。
dldeef674#
你好,这是一段关于Vue 3.0的文本。它说@Aaron-Pool看起来像是在Vue 3.0中。
mzsu5hc05#
@Aaron-Pool看起来像是Vue 3.0的即将到来。如果它即将在3.0中到来,那么是否已经存在进展?
x6yk4ghg6#
这是否可以在Vue.js 3中实现?
6qftjkof7#
是的!Vue 3.x 是基于自定义渲染器构建的,实际上DOM/web版本也是核心库之上的一个“自定义”渲染器。
参见 https://github.com/vuejs/vue-next/tree/master/packages/runtime-dom
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