PReact(或其他框架)的 Svelte 行为
Svelte behaviour with PReact (or other frameworks)
如果我在我的 Svelte 项目中导入一个使用 PReact 或其他框架的 JavaScript 包,Svelte 会编译它吗?
Svelte 会编译 PReact 框架和使用它的包吗? 应该不会导致任何性能问题或大小问题,因为 PReact 很小,Svelte 会编译它。
但我的问题仍然是,当我在我的 Svelte 项目中使用它时,Svelte 会编译 PReact 框架吗?因为如果是这样,最好排除它(不编译它)还是不关心它?我想知道最佳实践。
编辑:
我正在导入 FullCalendar,它是一个 preact 应用程序
Svelte 是一个编译器,因为它需要 .svelte
个文件并将它们转换为 .js
(至少在概念上是这样)。在你 运行 编译器之后,通过 bundler 插件或其他方式(例如直接通过编译器 API),你最终得到不依赖于 full-fledged 运行执行时间(从框架的角度我们可以称之为“低级”JS)。
换句话说:Svelte 的编译只专注于将 Svelte 语法(在 .svelte
文件中找到)转换为“原始”Javascript.
Svelte 编译器不了解 .svelte
文件之外的其余代码——例如,来自代码库中 .js
文件的内容,或者与您的问题相关的内容来自其他库,如 Preact。从编译器的角度来看,它们只是从外部导入,最终它们只是 Svelte 代码中的变量。
所以你的问题的答案是:不,Svelte 不会编译 Preact 或任何不是 Svelte 语法的东西。
解决外部导入问题将是您的浏览器(如果使用原始 ES 导入)的问题,或者更常见的是,您的捆绑器(例如 Rollup、Webpack...)的问题。捆绑器会读取您的导入语句,尝试在您的 node_modules
中解决它们,重写所有内容以一起玩,可选择应用一些代码转换(例如将 TS、SCSS 或 Svelte 转换为原始 JS)、优化它们,将它们打包在一起以获得最佳性能等。Svelte 在这方面没有任何改变。
作为比较个人的看法,在Svelte中使用Preact似乎意义不大。您基本上已经在 Svelte 中拥有了在 Preact 中拥有的一切。反过来对我来说似乎更合乎逻辑——在使用另一种技术的现有应用程序中使用一些“框架不可知论者”(一旦编译)Svelte 组件。
如果我在我的 Svelte 项目中导入一个使用 PReact 或其他框架的 JavaScript 包,Svelte 会编译它吗?
Svelte 会编译 PReact 框架和使用它的包吗? 应该不会导致任何性能问题或大小问题,因为 PReact 很小,Svelte 会编译它。
但我的问题仍然是,当我在我的 Svelte 项目中使用它时,Svelte 会编译 PReact 框架吗?因为如果是这样,最好排除它(不编译它)还是不关心它?我想知道最佳实践。
编辑:
我正在导入 FullCalendar,它是一个 preact 应用程序
Svelte 是一个编译器,因为它需要 .svelte
个文件并将它们转换为 .js
(至少在概念上是这样)。在你 运行 编译器之后,通过 bundler 插件或其他方式(例如直接通过编译器 API),你最终得到不依赖于 full-fledged 运行执行时间(从框架的角度我们可以称之为“低级”JS)。
换句话说:Svelte 的编译只专注于将 Svelte 语法(在 .svelte
文件中找到)转换为“原始”Javascript.
Svelte 编译器不了解 .svelte
文件之外的其余代码——例如,来自代码库中 .js
文件的内容,或者与您的问题相关的内容来自其他库,如 Preact。从编译器的角度来看,它们只是从外部导入,最终它们只是 Svelte 代码中的变量。
所以你的问题的答案是:不,Svelte 不会编译 Preact 或任何不是 Svelte 语法的东西。
解决外部导入问题将是您的浏览器(如果使用原始 ES 导入)的问题,或者更常见的是,您的捆绑器(例如 Rollup、Webpack...)的问题。捆绑器会读取您的导入语句,尝试在您的 node_modules
中解决它们,重写所有内容以一起玩,可选择应用一些代码转换(例如将 TS、SCSS 或 Svelte 转换为原始 JS)、优化它们,将它们打包在一起以获得最佳性能等。Svelte 在这方面没有任何改变。
作为比较个人的看法,在Svelte中使用Preact似乎意义不大。您基本上已经在 Svelte 中拥有了在 Preact 中拥有的一切。反过来对我来说似乎更合乎逻辑——在使用另一种技术的现有应用程序中使用一些“框架不可知论者”(一旦编译)Svelte 组件。