📢 写在前面
距离上一个版本 v1.6.0 发布仅过去两周,今天正式发布 v1.7.0 版本!本次更新聚焦于 CSS 作用域样式 的全面增强,同时修复了大量影响编译质量的痛点问题,让 Vue → React 的转换更稳定、更可靠。
✨ 亮点一:三大样式选择器穿透支持
在 Vue SFC 的 scoped 样式中,:deep()、:slotted()、:global() 是开发者最常用的三个穿透选择器。v1.7.0 之前,这些选择器的转换支持不够完善,导致部分样式场景无法正常迁移。
本次版本一次性补齐这三块拼图:
| 选择器 | 作用 | 转换支持 |
|---|---|---|
:deep() | 样式穿透至子组件 | ✅ 覆盖多参数、嵌套等复杂场景 |
:slotted() | 样式精确作用于插槽内容 | ✅ 作用域精确绑定 |
:global() | 在 scoped 样式中声明全局规则 | ✅ 完整转换支持 |
🔧 场景示例
<style scoped>
/* 深度穿透:修改子组件内部样式 */
:deep(.el-button) {
background: red;
}
/* 插槽样式:仅对插槽内容生效 */
:slotted(.highlight) {
color: orange;
}
/* 全局样式:混用 scoped 和 global */
:global(.container) {
max-width: 1200px;
}
</style>
这些选择器的完整支持,意味着再复杂的样式方案也能平滑迁移到 React 生态。
✨ 亮点二:CSS 选择器解析引擎重构
光加功能还不够,我们还对底层的 CSS 选择器解析算法 进行了全面优化:
- 🎯 增强复杂 CSS 选择器场景的兼容性——多层级嵌套、伪类组合、属性选择器等场景处理更准确
- 🧩 scoped 样式处理模块化重构——拆分为多个子模块,代码可维护性大幅提升,为后续功能扩展打下基础
- 🐛 修复
data-css-*属性覆盖不全——确保 scope ID 正确应用到所有组件 DOM 元素 - 🐛 修复 hash 错误作用于伪类/伪元素——避免样式因错误添加 hash 属性而失效
简单说:改完后的样式转换,更准、更稳、更易扩展。
🐞 修复问题一览
除了样式相关的大改动,本次还修复了多个影响编译质量的关键 bug:
编译器核心
- 🔧
v-on事件处理函数识别与转换有误——对需额外包裹函数块的逻辑修复,事件绑定更准确 - 🔧 组件
props未作为 Hook 依赖项收集——修复后组件在依赖变化时能正确重新渲染 - 🔧 顶层变量
useMemo优化后未导入 React Hook——自动补齐useMemo的 import 语句 - 🔧 文件 ID 不存在时无默认值——兜底处理,避免空值引发异常
样式相关
- ✅ scoped 样式
data-css-*属性全面覆盖组件 DOM 元素 - ✅ CSS
hash属性错误作用于伪类/伪元素/属性选择器导致样式失效
🚀 优化改进
- 依赖分析器模块重构:拆分为多个子模块,代码组织更清晰,后续维护成本和入门门槛双降低
emit动态事件名优化:当传入的事件名为动态表达式时,自动转换为使用计算属性访问,并输出友好警告信息,提升产物可读性和运行时健壮性
📋 升级指南
直接更新到最新版本即可:
npm install @vureact/compiler@latest
# 或
yarn add @vureact/compiler@latest
本次更新完全向下兼容,无需修改现有配置或代码。
🗺️ 路线图回顾
回顾 v1.0.0 "心灵控制" 发布以来的迭代历程:
| 版本 | 日期 | 核心主题 |
|---|---|---|
| v1.7.0 | 2026-04-26 | 🎨 样式选择器全面增强 + 编译质量提升 |
| v1.6.0 | 2026-04-13 | ✨ useAttrs 转换 + TS 交叉类型 |
| v1.5.0 | 2026-03-30 | 📦 自定义 package.json + 多项修复 |
| v1.4.0 | 2026-03-22 | 🏗️ 重构内部编译架构 + SetupManager + 缓存优化 |
| v1.3.0 | 2026-03-17 | 🔔 版本更新检测 + 路由指南 |
| v1.0.0 | 2026-03-03 | 🚀 首个先行版发布 |
💬 写在最后
🌐 Github:github.com/vureact-js/…
📃 官方文档:vureact.top
📖 完整更新日志:CHANGELOG.md
VuReact 的初心一直没有变——让你用熟悉的 Vue 编写 React,同时让项目平滑迁移到 React 生态,降低迁移成本,保留开发体验。
v1.7.0 在样式处理上又迈进了一大步,离"无痛迁移"的目标越来越近。如果你正在经历 Vue → React 的架构迁移、想用 Vue 写 React、想在一套代码库中同时使用两套生态的组件,不妨试试 VuReact!