網站搜尋

javascript - Svelte 應用程式錯誤:在視圖中將字串轉換為布林值失敗

在一個 Svelte 應用程式中,我有這個國家陣列:

let countries = [ { name:"Alegeria", status: "1" }, { name:"Bulgaria", status :"0" } ]

注意 status 屬性是一個字串。我是這樣遍歷陣列的:

閱讀更多 →

javascript - Svelte 因為沒有虛擬 DOM 可以獲得什麼樣的效能提升?

我有一個關於 Svelte 的問題,如果 Svelte 並沒有採用虛擬 DOM 或 Shadow DOM 機制,它是如何生成高性能應用的呢?因為 Svelte 只是一個編譯器,它生成純 JavaScript 的構建,這是否是 Svelte 的唯一重點,把代碼轉換為純 JavaScript 就能讓你獲得高性能的應用?那麼為什麼 React 或 Angular 會使用像虛擬 DOM 或 Shadow DOM 這樣的機制呢?

我知道這不是一個程式設計問題,但我想要答案,所以只好在這裡發帖,請不要刪除或專門處理這個帖子。我想了解內部原理

謝謝

答案#1

對於大多數使用情況,Svelte 比 React/Angular 更快。

這是因為 Svelte 不使用虛擬 DOM。Svelte 框架的核心價值承諾是消除虛擬 DOM 的開銷。

虛擬 DOM 的額外負擔來自於框架需要以不同的格式構建節點,然後再執行差異比較。

閱讀更多 →

javascript - 我如何在 svelte 中創建 cookie 並訪問它?

我正在嘗試在 Svelte 中創建一個 cookie(我也在使用 Svelte Kit)並訪問它。我想將這個 cookie 用於身份驗證,更具體地說,是用來存儲 JWT 令牌。

我已經嘗試實作純 JS 代碼,例如 getCookie() 和 setCookie(),如這裡 W3Schools - JavaScript Cookies 所示。但我無法訪問 document。我也嘗試過使用 cookie npm 套件的 serialize,如下面所示,我也嘗試過使用瀏覽器,如下面所示。

import { seria

閱讀更多 →

javascript - 使用 Jest 測試 Svelte 元件,無法遞迴加載 Svelte 檔案

我正在使用 Typescript 開發一個 Svelte 專案,並想使用 Jest 結合 @testing-library/svelte 模組來測試 UI 元件。我無法正確匯入所有 Svelte 檔案,例如我的子元件,Jest 嘗試載入應用程式時就會一直停頓。

在 Svelte 元件中有一些 TypeScript 錯誤,通過這些錯誤的輸出,我可以看到哪些檔案實際上已經被加載。在加載 App.svelte 之後,程式就會凍結,並且不會加載任何子模組。

我不太確定錯誤出在哪裡,因為在這個錯誤之前,我遇到了一個類似 jest 的導入錯誤:測試套件運行失敗,SyntaxError: Unexpected token import,我通過將配置添加到 .babelrc 文件並添加預處理器來“解決”了這個問題。

閱讀更多 →

Svelte TypeScript:物件的類型為 'unknown'

我正在嘗試在 Svelte 中實現 TypeScript,並且在自定義元素的事件處理程序上遇到問題。當我寫類似這樣的東西時:

<CustomComponent on:itemclick={() => dispatch("item", item)} on:doSometing={onDoSomethingHandler} on:doSomethingElse={onDoSomethingElseHandler}> </CustomComponent>

有趣的是:前兩個會產生錯誤:

物件類型為 'unknown'

但不是最後一個。當然,所有的方法(itemClick、doSomething、doSomethingElse)都是從 CustomComponent 派發的。無論我是否移除前兩個處理程序,錯誤就會消失。據我所知,這個問題只會發生在自訂元件上。但不

閱讀更多 →

javascript - Svelte 十六進位檢視元件中的無限滾動錯誤

我一直在開發一個十六進位檢視器組件,能夠處理任意大的陣列顯示。預期數值可達數千萬。我已經讓這個組件大致運作,但有一個難以捉摸的錯誤困擾了我好幾天。

這個想法是只渲染當前在螢幕上可見的部分到 DOM。在視窗的上方和下方有間隔元素,它們模擬了未被渲染的單元格所佔據的空間。

相關元件可以在這裡找到: https://github.com/DamenH/hex-viewer/blob/master/src/lib/SmartDataGrid.svelte

此函數計算目前可視視口中陣列的起始和結束索引,然後將 visibleCells 更改為包含該範圍的值。

function updateVisibleCells() { let visibleAreaStart = dataGrid.scrollTop; let visibleAreaEnd = dataGrid.scrollTop + height; let startIndex = Math.floor

閱讀更多 →

Svelte 和 TypeScript:如何新增或擴展基本/預設元件,例如 <div /> 或 <input/>

在我的 Svelte 應用程式中,我正試圖允許使用者除了上傳檔案之外,也能上傳資料夾。到目前為止,我唯一找到的方法是使用 type="file" 的 input 標籤,並加入 webkitdirectory 屬性,但這不幸的是非標準的。Svelte 的 input 類型並沒有 webkitdirectory。程式碼可以運作,但我收到 TypeScript 錯誤訊息「Property 'webkitdirectory' does not exist on type 'SvelteInputProps'」。是否有可能擴展 S

閱讀更多 →

typescript - 如何實作一個 Sveltekit 的 Post 端點,並進行非同步的資料庫請求?

所以當我訪問 SvelteKit 的 post 端點時,如果我提交一些值而它們未通過驗證檢查,一切都能正常工作。它會返回正確的狀態和內容。然而,當它執行資料庫插入時,端點會返回 404 錯誤,但它實際上已經將使用者插入資料庫。我認為這是因為資料庫呼叫是非同步的,而 SvelteKit 並沒有等待結果返回,但不確定應該如何修改我的程式碼,使其等待並返回正確的 JSON 回應。

感謝任何幫助!

import type { EndpointOutput } from '@sv

閱讀更多 →

typescript - 在 SvelteKit 網站中使用同意管理器添加 Google Analytics

我需要將 Google Analytics 添加到 SvelteKit 網站。Google 的說明是應將以下腳本添加到 <head> 標籤中,所以我想我可以直接將它添加到 app.html。問題是,我需要使用同意模式 (Consent Mode) 以遵守 GDPR 規範。為此,我需要能夠讀取和寫入某種變數來啟用或禁用分析功能。

就我所知,我無法從 <head> 標籤中存取任何變數。我也嘗試將相同的程式碼加入到 __layout.svelte 中的 <svelte:head> 標籤,但似乎我在那裡也無法存取變數。

我計劃使用商店來追蹤 cookie 同意,並將該值保存在本地儲存中,但我對其他解決方案也持開放態度。

這是應該添加到 <head> 標籤中的程式碼:

<!-- Global site tag (gtag

閱讀更多 →

typescript - Svelte 多應用程式實例與 Stores。(不使用 Redux)

註:自行回答

所以預設情況下,在 Svelte 中有三種主要方式可以用來在不同的組件之間傳遞資料。

1. 明顯的,透過使用道具

將資料從父元件傳遞給子元件。

  1. 僅限單向數據傳輸。
  2. 僅在兩個父子組件之間傳遞。必須是直接子組件。

2. 設定與使用上下文

可以將資料從父組件傳遞到任何深層子組件。

    閱讀更多 →