此功能解决了什么问题?
目前,script setup
组件被编译成一个代码,其中setup()
函数返回模板中使用的所有数据,组件还具有components
属性,就像在正常的script
中定义的那样。
在Vue 3中,setup()
返回一个访问本地变量和直接导入的组件的渲染函数,这不仅导致了捆绑包的大小变小(不仅仅是因为压缩前的代码更短),而且所有变量和组件名称都可以缩短为单个字母。如果Vue 2也能以相同的方式表现就好了,也许可以使用一些编译器配置选项来强制实现这一点?
建议的API应该是什么样子?
{
__name: 'MyComponent',
props: { prop1: Object, prop2: Boolean },
setup (s) {
const e = s, d = whatever();
return () => h(a.B, ...)
}
}
而不是
{
__name: 'MyComponent',
components: { Foo: a.B, Bar: c.d },
props: { prop1: Object, prop2: Boolean },
setup (s) {
const e = s, d = whatever();
return { __sfc: !0, props: e, someData: d };
}
}
1条答案
按热度按时间axr492tv1#
这目前是一个非目标,因为Vue 2的模板到渲染函数的编译是写成一种不执行任何JS表达式解析的方式(它是用其他工具在单独的步骤中完成的)。所以整个过程没有必要的信息来基于
<script setup>
范围信息前缀/解包refs。这只能在我们完全重构Vue 2的模板编译时才可能实现,但那将是一个庞大且高风险的重构,而我们现在并不打算这样做。