>  기사  >  백엔드 개발  >  Golang 바이너리에 sveltekit 삽입

Golang 바이너리에 sveltekit 삽입

PHPz
PHPz앞으로
2024-02-09 17:36:19649검색

在 golang 二进制文件中嵌入 sveltekit

php 편집기 Baicao는 오늘 흥미로운 기술을 소개합니다. 즉, golang 바이너리 파일에 SvelteKit을 포함하는 것입니다. 프론트엔드 기술의 지속적인 개발로 인해 점점 더 많은 프레임워크와 도구가 등장했습니다. 새로운 프레임워크인 SvelteKit은 컴파일 타임에 애플리케이션을 구축하여 더 빠른 로딩 속도와 더 높은 성능을 제공합니다. 이 기사에서는 보다 편리한 배포 및 배포를 위해 SvelteKit 애플리케이션을 golang 바이너리에 포함하는 방법을 보여줍니다.

질문 내용

나는 sveltekit 웹사이트를 포함하기 위해 단일 바이너리를 제공하기 위해 embedd를 사용하려고 합니다. 나는 chi를 라우터로 사용합니다. 그러나 나는 그것을 작동시킬 수 없습니다. 아래 옵션 중 하나가 표시됩니다. 내가 아는 한 all: 选项可确保包含以 _ 为前缀的文件。我还尝试了主v1中stripprefix方法的变体:/uibuild/uibuild/etc...

를 삽입하세요.

누가 좀 밝혀줄 수 있나요?

샘플 저장소

  1. 디렉토리 목록, 내 경우에는 "uibuild"
  2. "/"에 빈 페이지가 있는데 크롬 콘솔에서 중첩된 파일에 대해 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"가 문자 하나만 추가할 수 있다는 점이 실망스럽습니다. 귀하는 다음을 사용하고 있습니다:

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

문서에서:

func (mx *mux) 句柄(模式字符串,处理程序 http.handler)

각 라우팅 방법은 URL 패턴과 핸들러 체인을 허용합니다. URL 패턴은 명명된 매개변수(예: /users/{userid})와 와일드카드(예: /admin/)를 지원합니다. chi.urlparam(r, "userid")(명명된 매개변수의 경우) 및 chi.urlparam(r, "")(와일드카드 매개변수의 경우)을 호출하여 런타임 시 URL 매개변수를 얻을 수 있습니다.

따라서 "/"를 "패턴"으로 전달합니다. 이는 일치하지만 / 다음을 사용하여 수정할 수는 없습니다. 으아악

내 라이트 앱 중 하나로 이것을 테스트했는데 제대로 작동했습니다. 고려해야 할 한 가지 개선 사항은 존재하지 않는 파일에 대한 요청을

로 리디렉션하는 것입니다. 그렇지 않으면 사용자가 해당 경로로 페이지를 북마크에 추가하면 페이지가 로드되지 않습니다. 자세한 내용은 /이 답변을 참조하세요.

위의 내용 외에도 댓글에서 제가 말한 내용을 보여주기 위해

링크된 답변b5da6d7f57a67463392842238f5faec0about5db79b134e9f6b82c0b36e0489ee08ed 添加到 ui/src/routes/+page.svelte 的末尾并重建(两者都是 svelte 和然后去应用程序)。然后,您将能够导航到 about 页面(首先加载主页,然后单击“关于”)。这是由客户端路由器处理的(因此您可能不会看到任何对 go 服务器的请求)。有关如何在直接访问页面(例如 /about에서 추가 시 작동하게 만드는 방법에 대한 정보를 확인하세요). p>다음은 내장 파일 시스템에서 필요한 비트를 제공하고 다른 모든 요청에 ​​대해 기본

을 반환하는 빠른(다소 해킹된) 예입니다(Svelte 라우터가 필수 페이지를 표시할 수 있도록). index.html 으아악

위 내용은 Golang 바이너리에 sveltekit 삽입의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제