[go: up one dir, main page]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持 Vue SFC #7

Open
tian0o0 opened this issue Oct 19, 2020 · 13 comments
Open

支持 Vue SFC #7

tian0o0 opened this issue Oct 19, 2020 · 13 comments

Comments

@tian0o0
Copy link
tian0o0 commented Oct 19, 2020

以后会不会支持.vue单文件呢

@yangmingshan
Copy link
Member

目前 Vue Mini 本身是一个纯运行时的库,远期目标是计划支持 .vue 单文件的。将来支持 .vue 单文件应该会用一个与核心库分离的 compiler 来实现,但目前还有具体实施计划(没时间 😅 )。

PS: 现在有一个脚手架了 https://github.com/vue-mini/template

@b2nil
Copy link
b2nil commented Mar 4, 2022

这段时间写了一个配合 vue-mini 使用的 vue sfc 语法编译器和脚手架(基于 esbuild):vminiBuild

@IsLand-x
Copy link
IsLand-x commented Mar 4, 2022

这段时间写了一个配合 vue-mini 使用的 vue sfc 语法编译器和脚手架(基于 esbuild):vminiBuild
大佬太强了,膜

@yangmingshan
Copy link
Member

厉害啊!我想想怎么把这个链接到 readme 和文档中。

@b2nil
Copy link
b2nil commented Mar 4, 2022

esbuild 不支持 manual chunk, 打包逻辑和 vue 编译还有很多不成熟的地方。
其实是一直在等 @yangmingshan 大佬的解决方案。

@yangmingshan yangmingshan changed the title 这是一个纯运行时的框架吗 支持 Vue SFC Mar 4, 2022
@yangmingshan yangmingshan reopened this Mar 4, 2022
@yangmingshan
Copy link
Member

我把这个 Issue Reopen 了,希望我们将来能真正支持 Vue SFC。

@Baiyuetribe
Copy link

刚体验了,vue-mini的纯js运行时,目前看来效用不大,pages里仍然要手写三个文件.html、.css和.js.既然如此,为何不支持.vue文件呢?一旦支持.vue文件,就会拥有海量UI库加速开发。目前的js运行时,有种既然都是js为何不用原生的感觉。

@yangmingshan
Copy link
Member

@Airkro
Copy link
Airkro commented Jul 23, 2024

现有的脚手架还是不适合上生产,基于 webpack/vite 这种成熟的体系实现编译比较稳妥,基于 @vue/compiler-sfc 拆解 vue 文件输出到 wxml/wxss/js/json 不难,但像 vue-loader 那样让分解后的文件再经过编译就很麻烦了。

我做过非常丑陋的一个半成品实现(一个 webpack-loader)

也许未来通过 https://github.com/unjs/unplugin 体系能搞出简单通用的编译器。

@yangmingshan
Copy link
Member

现有的脚手架还是不适合上生产,基于 webpack/vite 这种成熟的体系实现编译比较稳妥

我并不认同,我始终认为 webpack/vite 与小程序并不搭配。我认为 create-vue-mini 现在的编译方式是最适合小程序的。你可以说 create-vue-mini 还比较简陋缺乏很多功能,但武断的说它不适合上生产,我觉得并不合适。

SFC 的支持是另一个话题,这里可以展开说一下。支持 SFC 本身并不难,但是 SFC 并不只是可以把 Vue 文件编译为 wxml/wxss/js/json 文件这么简单,SFC 还需要一整套工具链。你需要 IDE 的语法高亮、引用跳转以及类型检查吧,你需要 vue-tsc 这样的命令行类型检查工具吧,你还需要 eslint stylelint prettier 都能如期工作吧。没有这些配套 SFC 不仅不能带来更优的 DX,反而不如现在写多个文件的 DX。所以支持 SFC 是一项庞大的工程。当然我也在思考更小工作量的实现,比如语法完全兼容 Vue SFC,以期望复用 Vue 的工具链,以及渐进的支持路径,比如还是先写多个文件,但是模板文件支持 Vue SFC 模板的语法,这样不会破坏现有的 DX,但可以带来增量的 DX 改进等等。

@Airkro
Copy link
Airkro commented Jul 23, 2024

抱歉,因为 vue mini 主张的是轻量,渐进的实现,模板绑定用的也是原生能力。所以我下意识的认为,作者说的 SFC 的实现也只要最小规模的功能,最大限度的借用 vue 生态即可,因为完整的 SFC 支持工程量确实太大。

实际上在我个人的项目中,我也是只将 vue 文件拆解,并用 ast 将 vue template 语法转换成了 wxml 语法(仅限功能重叠的部分)而已,再用 ast 把 js 也转换了一下。其他事就交给 webpack 了。

在这个过程中,语法高亮/eslint/stylelint/prettier/其他等等 都是如期工作的,因为输入的源文件它就是个语法受限的 vue 文件,直接复用到 H5 项目都是没问题的。

仅就个人而言:我认为完整对齐 vue 的功能就是不可能的,工作量太大了,边缘生态更是没必要自己做,能用 vue 的生态最好。

@Airkro
Copy link
Airkro commented Jul 23, 2024

我过去用过好几个 vue 转小程序的开源项目,除了 taro 全都弃坑了,taro 目前也有很多问题。
vue mini 使我看到了一个新的可能,那就是基于现有的 H5 项目小改一下就能支持小程序的可能性。
因此我才推荐用 webpack/vite ,确实不是最佳方案,单纯只是为了跨平台,不得不用。

@Luobinf
Copy link
Luobinf commented Jul 26, 2024

我过去用过好几个 vue 转小程序的开源项目,除了 taro 全都弃坑了,taro 目前也有很多问题。 vue mini 使我看到了一个新的可能,那就是基于现有的 H5 项目小改一下就能支持小程序的可能性。 因此我才推荐用 webpack/vite ,确实不是最佳方案,单纯只是为了跨平台,不得不用。

试试mpx呢?https://mpxjs.cn/

@yangmingshan yangmingshan mentioned this issue Jul 31, 2024
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants