Go 및 React를 사용한 단일 애플리케이션 구축

8788 단어 webdevreactgo
업무 수요, 신뢰성과 확장성 때문에 웹 서비스를 구축하는 방식과 실천이 갈수록 다양해지고 있다.마이크로 서비스나 마이크로 전단은 대형 서비스와 대형 조직을 자체 조직팀으로 나누는 모두가 알고 있는 방법으로 그들이 자신의 서비스를 스스로 유지할 수 있도록 한다.이것은 개발 주기를 연장할 수 있을 뿐만 아니라 서비스도 더욱 지속가능하게 할 수 있다.이러한 기술은 서비스 확장에 있어 미래의 위치를 차지하지만 복잡한 체계 구조는 복잡한 개발과 배치를 가져왔다.때때로 회사의 비관건적인 서비스, 예를 들어 회사의 내부 서비스에 대해 그들의 가격이 너무 높다.
이 문서는 Go와 React를 사용하여monolith 서비스를 구축할 수 있도록 하고, 제가 발표한 샘플 파일을 소개합니다.

단일 Go and React 애플리케이션 템플릿


오칸드 / 본보기로 삼다


단일 Go 및 React 응용 프로그램 구축을 위한 템플릿


단일 Go and React 애플리케이션 템플릿



이 저장소는 간단하면서도 단일한 서비스를 제공합니다. 그 중 하나는 Go로 작성되었고, 전면은 React입니다.이 서비스는 현대 서비스(예를 들어 마이크로 서비스나 마이크로 전단)를 대상으로 하지 않지만 개발과 배치의 단순성과 용이성을 볼 수 있습니다.때로는 단일 서비스가 소형 또는 비관건적인 업무 상황(예를 들어 내부 시스템)에 도움이 된다.
이 항목에서는 다음 언어와 프레임워크에 대해 설명합니다.
  • 서버측
  • Golang
  • gorilla/mux
  • 프런트엔드
  • TypeScript
  • React
  • react-router
  • axios
  • MUI
  • 이 프로그램은 작은 소셜 블로그를 예로 들 수 있다.사용자는 글을 발표하고 평론을 추가할 수 있습니다.이 프로젝트에 따라 응용 프로그램을 맞춤형으로 제작하고 구축할 수 있습니다.

    빠른 시작(개발용)


    저장소에는 두 개의 항목이 있습니다.프런트엔드 및 서버 측에 사용됩니다.프런트엔드 항목은 frontend 하위 항목에 있으며 yarn를 통해 종속 항목을 설치하고 디버그 서버를 실행할 수 있습니다.
    $ cd frontend
    $ 

    The project introduce the following languages and frameworks:

    The application serves a tiny social blog as a sample. The users can publish the articles and add comments. Feel free to customize and build your applications based on this project.

    빠른 시작(개발용)

    The repository contains two projects; for the frontend and server-side. The frontend project is in frontend sub-project, you can install dependencies and run the debug server by yarn:

    $ cd frontend
    $ yarn install && yarn start
    
    그런 다음 go run 디버그 모드에서 서버측 서비스를 실행합니다.
    $ go run main.go  -debug
    
    예시 응용 프로그램을 http://localhost:8000에 보실 수 있습니다

    예제 어플리케이션: 작은 소셜 블로그


    이 프로그램은 최소한의 소셜 블로그를 예로 제공했다.기사를 검색하여 브라우저를 통해 게시할 수 있습니다.너도 너의 평론을 문장에 보낼 수 있다.
    모든 전단 페이지는 한 페이지 응용 프로그램이라고 불리는 한 페이지로 구성된다.서버는 HTML로 응답합니다.페이지는 원활하게 전송될 수 있다.프런트엔드 스크립트 사용axios은 API를 통해 비동기적으로 기사와 의견을 가져오고 보냅니다.서버측 응용 프로그램은 다음과 같은 REST API를 제공합니다.
  • GET /api/healthGET /api/ready: 어플리케이션의 수명 주기를 보장하기 위한 상태 점검 엔드포인트자세한 내용은 Kubernetes docs를 참조하십시오.
  • GET /api/articles: 요약된 모든 기사를 가져옵니다.
  • GET /api/articles/{article_id}: 내용이 완전한 문장을 얻다.
  • POST /api/articles: 새로운 문장을 만듭니다.
  • GET /api/articles/{article_id}/comments: 기사 평론article_id을 얻습니다.
  • POST /api/articles/{article_id}/comments: 기사 idarticle_id에 대한 새 설명을 만듭니다.
  • 어떻게 개발합니까


    서버 사이드 go 서비스는 API를 사용하여 같은 사이드에서 웹 패키지 개발 서버에 서비스를 제공할 수 있는 디버깅 모드가 있습니다.이렇게 하면 프런트엔드 스크립트가 CORS 헤드 없이 API에 액세스할 수 있습니다./api/로 시작하는 경로를 포함하지 않는 모든 요청은 웹 패키지에서 제공한 자산으로 되돌아옵니다

    서버측


    서버 사이드 프로그램은 두 개의 패키지 repository web 가 있다. repository 패키지는 사용자의 요청을 읽고 지속하는 인터페이스와 실현을 포함한다.현재 실행 서버는 데이터를 저장하지 않습니다.다시 시작하면 서버에서 게시한 글이나 사용자가 보낸 댓글을 잃어버립니다.그것들을 오래 유지하려면 메모리에 아날로그 저장하는 것이 아니라 메모리 라이브러리를 실현해 보십시오.
    web 패키지는 사용자 URL의 요청 경로를 제공하고 요청에 대한 응답을 표시합니다.MVC 또는 DDD에서는 디렉터 레이어라고 합니다.일부 API 또는 모델을 추가하려면 각각 repositoryweb로 설정합니다.더 복잡한 논리나 용례가 필요하다면, 새 패키지를 마음대로 실행하거나 추가할 수 있습니다.

    프런트엔드


    모든 페이지는 한 페이지로 구성되어 있으며, 이를 한 페이지 응용 프로그램이라고 부른다.react-router는 클라이언트의 루트를 실현하는 라이브러리이다.frontend 하위 항목은 react-scripts에서 초기화되고 디렉터리 구조와 구축 과정을 보존한다.각 구성 요소는 frontend/src 편평화 중입니다.

    프로덕션 환경에 배포하는 방법


    수동 배포


    생산 중 yarn startgo run 의 웹 패키지 개발 서버를 사용해서는 안 됩니다.배치하기 전에 구축해야 합니다.프런트엔드 자산을 생성하려면 yarn build를 실행하십시오.이 명령은 축소된 HTML, JavaScript 및 CSS를 생성합니다.
    $ (cd frontend && yarn install && yarn build)
    
    실행 가능한 바이너리 파일을 만들기 위해 서버측 응용 프로그램을 컴파일하려면 go build:
    $ CGO_ENABLED=0 go build -o go-react-boilerplate -trimpath .
    
    그런 다음 다음과 같은 방법으로 실행을 확인할 수 있습니다.
    ./go-react-boilerplate -webroot ./frontend/build
    
    서버 측에서 -webroot 지정한 디렉터리에 있는 자산 파일을 제공하기 때문에 ApacheHTTP 서버나 NGINX와 같은 제3자 HTTP 서버가 필요하지 않습니다.

    Docker 컨테이너 만들기


    저장소는 Dockerfile로 구성됩니다.docker 용기를 사용하면 응용 프로그램을 더욱 빨리 개발하고 배치를 더욱 쉽게 할 수 있습니다.Dockerfile은 여러 단계로 구성합니다.그것은 전방과 서버 사이드 단계를 구축하는 절차를 포함한다.docker builddocker run를 통해 docker 이미지를 구축하고 이미지에서 컨테이너를 실행할 수 있습니다.
    $ docker build -t go-react-builderplate .
    $ docker run --rm -p 8000:8000 go-react-builderplate
    

    좋은 웹페이지 즐겨찾기