问题标签 [svelte]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - 使用 svelte js 的原因
这些天我发现了 Svelte 框架。你觉得用它代替 React.js 或 Vue.js 怎么样?
我根本没有使用它,所以我不明白它们之间的深刻区别。我读过 Svelte 的速度要快得多,但它对状态存储(如 redux 等)没有一定的支持。那么你能说什么呢?我试图找到有关优点和缺点的更多信息,但徒劳无功。
svelte - 使用 SSR 补水
我试图用 Svelte 创建一篇交互式文章,其中包括使用 ssr 选项的 html 的预渲染版本。不幸的是,我的水合代码在加载时会吹走所有预渲染的 DOM 节点。我希望有一个静态 index.html 页面,该页面可以加载并使用苗条的捆绑包补充水分,但不会吹走整个页面,因为大多数它将是<p>
带有文本的静态标签。这是可能的吗?我在这里做一些愚蠢的事情吗?
javascript - 如何访问 svelte 组件中的命名插槽?
我正在尝试 Svelte(太棒了!),但我遇到了一个我不知道如何解决的问题。我有一个带有几个命名插槽的组件。根据这些插槽是否被填满,我需要渲染一些额外的 HTML。所以我的想法是将这些块放在一个{{#if slots}}
块中,但我不知道如何引用命名的插槽。尝试this.options.slots
,oncreate
我可以看到插槽的集合,但我不知道如何在我的组件的 HTML 部分中找到它们。任何人都可以帮助我吗?
看到这个 REPL
dom - 如何使用 Svelte 框架操作 DOM
我对 Svelte 框架非常陌生。最近我在玩 Svelte,但对如何使用 Svelte 在 jQuery 中操作 DOM 感到困惑。
我正在尝试显示/隐藏<li>
按钮单击。
javascript - 将多个组件加载到 js 文件,但仅使用所需的组件
我正在学习使用 svelte 框架来制作组件。但是我无法从我加载到 js 文件中的组件中创建一个组件的实例。
所以,这是我的 html 文件:
我的 js 输入文件(我在其中导入组件):
以及组件的 html:
所以,此时,它加载了组件,因为它在 js 输入文件上有一个实例。问题是,此时,如果我想要第二个实例,我必须自己创建一个 js 文件。我的想法更像是在 js 文件和要使用它们的 html 文件中导入我想要的所有组件,我只会调用它们。
这可能吗。我一直在阅读文档,但没有找到我想要的。
编辑:我忘了说我也在使用 webpack。因此输入和输出文件。我设法使用了多个组件。我找到的解决方案是在我的 js 输入文件上执行此操作:
我将导入的对象放在一个全局变量中,这样我就可以在我想要的地方调用它,如下所示:
然而,虽然我有这个解决方案,但我的期望是在 js 输入文件中只导入一次,而不必依赖全局对象,然后在我需要的地方调用它,如下所示:
虽然我在 React.js 上看到的不多,但我通常看到程序员这样做。我也有同样的期待。不过,由于我还有其他事情需要做,我暂时就这样搁置了,以后再优化。
尽管如此,如果有人知道如何做到这一点,我会全力以赴,因为我是 Svelte 的新手,除了文档之外没有太多关于它的信息,我认为这些文档在相同的部分有点混乱。
typescript - TypeScript 可以理解 Svelte 组件吗?
Svelte 最终输出原生 JavaScript 类。所以,TypeScript 可以理解这些。但是,Svelte 组件必须首先从其初始.html
形式编译。在那之前,可以理解的是,TypeScript 默认不理解它们的初始形式。因此,即使在运行时导入成功,它也会报告“找不到模块”错误。有什么方法可以让 TypeScript 理解它们吗?
一种解决方法是为.html
模块提供类型定义,近似于标准 Svelte 组件接口。但是,更希望对每个单独的组件简单地使用真实的组件类输出本身,从而产生最准确的类型信息。
顺便说一句,我没有提到像 Webpack 或 Rollup 这样正常执行 Svelte 编译步骤的工具。我不知道这些工具是否与这个问题有关。
更新 1:我对 TypeScript 进行了更深入的研究,似乎可以为它创建插件。但是,它们似乎有限,因此可能没有用。
javascript - 嵌套组件更新时,Svelte 商店不会触发 onchange
假设我想创建一个苗条的多色选择器,也许让用户选择前景色和背景色。我的数据模型如下所示:
所以我的 app.js 是
然后我可以构建一个RGBSelector
组件来重用:
我App.html
的很简单:
这似乎工作,主要是。范围输入中的双向绑定正在工作(标签更新),并且商店甚至正在更新(通过store._state
在控制台中检查来验证)。所以我相信 中的bind
关键字RGBSelector
将更改传递到它们在中声明的位置App
,这反过来又将bind
它们发送到商店。
麻烦的是,store.onchange
处理程序没有开火。谁能看到我做错了什么?
javascript - 结合动态元素设置 bind:group-value 的值
我目前正在尝试在 svelte 中创建类似向导的一系列问题。为此,我使用了一个组件,该组件将问题作为参数并构建单选项目列表(简化):
在组件内部,以下代码构建了表单元素:
在oncreate
我观察问题参数并初始化并尝试根据我商店的答案设置默认值:
selected
在组件的“问题”属性更改一次后,设置值停止工作。它是通过观察设置还是仅在常规 onclick 事件中设置似乎并不重要。
如果有人知道我做错了什么或指出我正确的方向,那就太好了!
svelte - 顶级 <:Body> 注入?
想象一下,我有以下组件,<TopLevelThing>
.
它旨在用于<body>
.
但是,我可能想将它用作深入内部的组件的一部分<body>
,远离顶层。
这可以通过如下所示的特殊标签来实现。
<body>
Svelte 会将其注入到其他元素的顶层。但是,它将保留组件的所有功能:生命周期、属性以及作为组件组织和结构的一部分。
在 Svelte 中是否有可能发生这样的事情?
顺便说一句,我想这可以通过变通方法来实现,但我想知道它是否有特定的功能。