标签: svelte

如何将参数传递给 on:click in Svelte?

将函数绑定到按钮非常简单直接:

<button on:click={handleClick}>
    Clicks are handled by the handleClick function!
</button>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我没有看到将参数(参数)传递给函数的方法:

<button on:click={handleClick("parameter1")}>
    Oh no!
</button>
Run Code Online (Sandbox Code Playgroud)

该函数在页面加载时被调用,并且永远不会再次调用。

是否有可能将参数传递给从 调用的函数on:click{}


**编辑:**

我刚刚找到了一个hacky的方法来做到这一点。从内联处理程序调用该函数有效。

<button on:click={() => handleClick("parameter1")}>
    It works...
</button>
Run Code Online (Sandbox Code Playgroud)

svelte svelte-3

54
推荐指数
3
解决办法
2万
查看次数

SyntaxError:不明确的间接导出:导入我自己的类时出现默认错误

我已经编写了一个验证类,并希望将其包含在我的 VueJS 3 项目中。不幸的是我收到以下错误:SyntaxError: ambiguous indirect export: default

这是我的代码:

// ..classes/formValidationClass.js
export class FormValidator {
...
}

// some vue file with a form
import FormValidation from "..classes/formValidationClass"

export default {...}
Run Code Online (Sandbox Code Playgroud)

此错误是什么意思?我需要做什么来纠正该错误?

javascript vue.js svelte

45
推荐指数
5
解决办法
11万
查看次数

初始化前无法访问“variable_name”

通过使用$:语法声明它们来使用反应变量时,您会收到以下错误。

Cannot access 'variable_name' before initialization

这是代码:

App.svelte

<script>
    import { ledzep, redhotchilis } from './data.js'
    
    $: bandmembers = [...ledzep, ...redhotchilis]
    
    let namesWithA = bandmembers.filter(d => {
            if (d.indexOf('a') > 0) {               
                return true;
            }
        else {
            return false
        }
    })
    
</script>
<h2>Band Members</h2>
<ul>
{#each bandmembers as member}
    <li>{member}</li>
{/each}
</ul>

<h2>Members with "A" in their names</h2>
<ul>
{#each namesWithA as member}
    <li>{member}</li>
{/each}
</ul>
Run Code Online (Sandbox Code Playgroud)

数据.js

export const ledzep = ["Jimmy Page", "John Bonham", "Robert Plant", "John …
Run Code Online (Sandbox Code Playgroud)

svelte

33
推荐指数
1
解决办法
13万
查看次数

SvelteKit:如何进行基于 slug 的动态路由?

我是 Svelte 和一般编码方面的新手。我更愿意学习 SvelteKit (Svelte@Next) 而不是 sapper,因为这似乎是 Svelte 的发展方向。

对于我的个人项目,我需要支持基于 url slugs 的动态路由。我该如何在 SvelteKit 中做到这一点?例如,如果我有 /blog 目录并且需要根据其“id”提取内容,我该怎么做?

我遇到困难的部分是访问 URL slug 参数。

提前致谢。

javascript svelte svelte-3 sveltekit

33
推荐指数
3
解决办法
4万
查看次数

使用 Vite 将 JS 和 CSS 捆绑到单个文件中

我正在费尽心思地弄清楚如何在我的 Svelte 项目中从 Vite 构建单个 .js 文件,其中包括我的 Svelte 项目中构建的所有 javascript 和 CSS。默认情况下,Vite 将应用程序捆绑到一个 html 文件(这可以)、两个 .js 文件(为什么?)和一个 .css 文件(只想将其捆绑到一个 js 文件中)。

我运行了这个非常基本的命令来获取入门项目:
npx degit sveltejs/template myproject

我尝试添加几个插件,但我添加的任何一个都没有达到我想要的结果。首先,我发现的插件似乎想要创建一个包含所有内容的 HTML 文件。看起来 PostCSS 可能会有所帮助,但我不明白我可以通过 Vite 设置什么配置来让它执行我想要的操作。

什么是神奇的插件和配置集,它将输出单个 HTML 文件和单个 js 文件,将我的 Svelte 应用程序及其 CSS 渲染到页面上?

javascript css bundle svelte vite

33
推荐指数
4
解决办法
5万
查看次数

如何在 sveltekit 中获取查询字符串参数?

我正在尝试/login?ref=/some/path登录后重定向到的参数:

const ref = $page.url.searchParams.get('ref') || '/dashboard';
Run Code Online (Sandbox Code Playgroud)

但是我收到这个错误:

TypeError: Cannot read properties of undefined (reading 'searchParams')

svelte svelte-3 sveltekit

33
推荐指数
3
解决办法
4万
查看次数

SvelteKit 中的 SSR 解释

我最近开始通过 SvelteKit 使用 Svelte,我对这个框架有一些疑问,但我无法在源代码/文档中找到任何直接答案:

  1. SvelteKit 有SSR,在文档中它说:

如果您需要从外部 API 请求数据,所有服务器端代码(包括端点)都可以访问 fetch。

  • 除了端点之外,服务器端还呈现哪些代码以及它如何决定这一点?svelte 页面脚本中的所有代码都在客户端上运行,还是其中一些代码在服务器上运行?
  • 为了在本地使用 SSR,您需要一个适配器,还是 svelte 自己启动服务器?
  • 例如,SSR如何在像Netlify这样的生产环境中工作。netlify 适配器是否用于 SSR(在netlify 函数中运行端点)?如果未提供 netlify 适配器,端点将如何/在哪里运行?
  1. 如果我想在sveltekit 项目中使用自定义 netlify 函数,需要哪些配置(除了 netlify.toml 和 netlify 适配器)才能让 netlify 识别函数目录中的函数?
  2. SSR 和预渲染之间有什么区别?SSR仅用于端点和其他js代码,预渲染用于生成Html并将其发送到客户端,然后将其与编译后的js代码一起发送到浏览器?

谢谢!

prerender server-side-rendering svelte netlify-function sveltekit

27
推荐指数
2
解决办法
2万
查看次数

如何在 SvelteKit 中添加自定义 404 页面和不同的错误页面(针对其他错误)?

基本上,如何做 ff. 在 SvelteKit 中:

  • 首先添加自定义 404 页面。
  • 有一个不同的通用错误页面,将显示有关 SvelteKit 中错误的消息/描述

svelte sveltekit

27
推荐指数
2
解决办法
2万
查看次数

禁止跨站点 POST 表单提交

我的 sveltekit 应用程序有一个表单,可以向服务器发送 POST 请求。该应用程序在开发服务器上运行良好,但是当我构建并运行该应用程序时,它无法通过 POST 请求发送表单数据。它在浏览器中显示以下错误:

禁止跨站点 POST 表单提交

post backend node.js svelte sveltekit

27
推荐指数
2
解决办法
2万
查看次数

您在与当前使用的平台不同的另一个平台上安装了 esbuild

我正在尝试在 docker 容器内容器化 Svelte js 应用程序,并且在日志中收到此错误,抱怨不同平台中的 esbuild,我使用的是 M1 mac,我尝试esbuild-wasm按照日志建议进行安装,并尝试npm i esbuild-linux-arm64作为一个步骤在 docker 文件中并尝试RUN npm install yarn按照日志建议使用纱线,因为它有内置的东西处理平台,但它不起作用我的 docker 文件

FROM node:16.10.0
WORKDIR /my-website
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

错误是

You installed esbuild on another platform than the one you're currently using.
This won't work because esbuild is written with native code and needs to
install a platform-specific binary executable.

Specifically the "esbuild-darwin-arm64" package is present but …
Run Code Online (Sandbox Code Playgroud)

npm docker dockerfile docker-compose svelte

26
推荐指数
2
解决办法
3万
查看次数