ホームページ  >  記事  >  バックエンド開発  >  golang バイナリへの sveltekit の埋め込み

golang バイナリへの sveltekit の埋め込み

PHPz
PHPz転載
2024-02-09 17:36:19715ブラウズ

在 golang 二进制文件中嵌入 sveltekit

php エディタ Baicao は今日、SvelteKit を golang バイナリ ファイルに埋め込むという興味深いテクノロジーを紹介します。フロントエンド テクノロジーの継続的な開発により、ますます多くのフレームワークやツールが登場しています。新しいフレームワークとして、SvelteKit はコンパイル時にアプリケーションを構築することで、より高速な読み込み速度とより高いパフォーマンスを提供します。この記事では、SvelteKit アプリケーションを golang バイナリに埋め込んで、より便利なデプロイと配布を実現する方法を説明します。

質問の内容

embeddを使用して単一のバイナリファイルを提供し、sveltekit Webサイトを含めようとしています。私はルーターとしてchiを使用しています。しかし、うまくいきません。以下のオプションのいずれかを取得します。私の理解では、embedd all: オプションを使用すると、プレフィックス __ が付いたファイルが確実に含まれるようになります。メイン v1 の stripprefix メソッドのバリエーションも試しました: /uibuild/ または uibuild/ など...

誰かがそれに光を当ててくれませんか?

サンプルリポジトリ

  1. ディレクトリのリスト、私の場合は「uibuild」
  2. 「/」に空白のページがありますが、Chrome コンソールではネストされたファイルに対して 404 エラーが表示されます。
  3. 404 はホームページ「/」に表示されます。

薄型構成: リーリー

main.go v1:

これによりエラー 3 が生成されます。

リーリー

main.go v2:

これによりエラー 2 が発生します。

リーリー

ファイル構造:

import preprocess from "svelte-preprocess";
import adapter from "@sveltejs/adapter-static";

/** @type {import('@sveltejs/kit').config} */
const config = {
  kit: {
    adapter: adapter({
      pages: "./../server/uibuild",
      assets: "./../server/uibuild",
      fallback: "index.html",
    }),
  },

  preprocess: [
    preprocess({
      postcss: true,
    }),
  ],
};

export default config;

回避策

残念なことに、「main.go v2」では 1 文字しか追加できません。使用しているもの:

r.handle("/", http.fileserver(http.fs(static)))

ドキュメントより:

func (mx *mux) handle(パターン文字列、ハンドラー http.handler)

各ルート メソッドは、URL パターンとハンドラー チェーンを受け入れます。 URL パターンは、名前付きパラメータ (つまり、/users/{userid}) とワイルドカード (つまり、/admin/

) をサポートします。実行時に URL パラメーターを取得するには、chi.urlparam(r, "userid") (名前付きパラメーターの場合) および chi.urlparam(r, "") (ワイルドカード パラメーターの場合) を呼び出します。

したがって、「パターン」として「/」を渡します。これは

/ には一致しますが、それ以外には一致しません。次を使用して修正します。 リーリー

これを軽量アプリの 1 つでテストしましたが、正常に動作しました。検討すべき改善点の 1 つは、存在しないファイルに対するリクエストを

/ にリダイレクトすることです (そうしないと、ユーザーがパスをブックマークした場合にページが読み込まれません)。詳細については、この回答を参照してください。

上記に加えて、コメントで述べたことを示すために、

9ce6a1af62d5b5047a25f3a59cd1fbbcabout5db79b134e9f6b82c0b36e0489ee08edui /src/routes に追加します。 /page.svelte とリビルド (両方とも svelte してからアプリケーションに移動します)。これで、about ページに移動できるようになります (最初にホームページをロードしてから、[About] をクリックします)。これはクライアント ルーターによって処理されます (そのため、おそらく go サーバーへのリクエストは表示されません)。ページに直接アクセスしたときに機能させる方法については、 にリンクされている回答 を参照してください (例: /about)。 p> これは、埋め込みファイル システムから必要なビットを提供し、他のすべてのリクエストに対してメインの

index.html を返す簡単な (そしてややハックな) 例です (洗練されたルーターがすべてのリクエストを表示できるように)必須ページ)。 リーリー

以上がgolang バイナリへの sveltekit の埋め込みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。