react 프로젝트 새로 만들기에서 배치까지의 실현 예시
3839 단어 react배포에 새로 만들기
새로운 프로젝트를 전개하다
본고는 최근에 작업한 새로운 프로젝트가 0-1에서 시작하는 과정을 기록하고 주로 3개 노드, 선형, 운행 시, 오프라인을 기록한다.
항목 선택
react 비계 초기화, 지역사회에서 비교적 핫한 것은cra(create-react-app)와umi가 있는데 다음과 같은 몇 가지를 비교하여 최종적으로 비교적 적합한 프로젝트의umi를 선택했다.
런타임
umi는 앱을 제공합니다.ts, 실행할 때 파일을 설정하면 실행할 때의 능력을 확장할 수 있습니다. 간단하게 이해하면 페이지를 렌더링하는 선행 동작을 여기에 놓을 수 있습니다.이 개념은 분류할 수 있다
storybook(preview.js)보다 html에 script를 삽입할 수 있습니다.여기에 일부 프로젝트 관련 내용이 관련될 수 있습니다. 프로젝트는 기존 프로젝트에 내장되어야 하기 때문에 우리는iframe의 방식을 채택하여 우리는 통신을 필요로 하고 iframe의 크기가 스스로 적응해야 합니다.
iframe 통신, 영역이 다르기 때문에 채택했습니다. 윈도우.postmessage.데이터 가독성 유지를 위해 대응하는 이벤트 전송 내용을 정의하고 후기 유지보수의 난이도가 높아지지 않도록 하며 빈번한 통신이 필요하다면 미전단 방안을 권장합니다.
iframe는 스스로 적응합니다. iframe-resizer 플러그인은 우리가 해결할 수 있도록 도와줍니다. 끼워넣는 것과 끼워넣는 것은 모두 설치해야 합니다. 그렇지 않으면 통신이 불가능하고 스스로 적응할 수 없습니다.여기에 문제가 발생했을 때 바디 노드가 내부에서 커질 수 없기 때문에 iframe-resizer가 제공하는 사용자 정의 계산 방법을 사용하여 하위 페이지에서 대응하는 방법을 제공해야 합니다.코드는 다음과 같습니다.
서브시스템
import 'iframe-resizer/js/iframeResizer.contentWindow.js';
//
const iframeInit = () => {
if (parent !== window) {
(window as any).iFrameResizer = {
heightCalculationMethod: () => {
return document.body.children[0].clientHeight;
},
};
window.onmessage = (event: any) => {
if (Array.isArray(event.data)) {
if (event.data[0] === ' ') {
console.log(event.data[1]) //
}
}
};
parent.postMessage({ msg: 'MessageFromIframePage' }, '*');
}
};
iframeInit();
접속하다
한 차례의 포장을 거쳐 마침내 온라인에 도착했다.여기서는 주로nginx가 전송 요청을 어떻게 설정하는지 설명합니다.
개발 기간에 여러 개의 서로 다른 영역에 대한 인터페이스가 필요할 때 앞부분의 첫 번째 반응은 프록시를 설정하는 것이다.온라인에 접속했을 때 좀 멍해졌다.
proxy: {
'/api': {
target: 'http://aaa.com',
changeOrigin: true,
pathRewrite: { '^/api': '' },
},
'/b-api': {
target: 'http://bbb.com/',
changeOrigin: true,
pathRewrite: { '^/b-api': '' },
},
},
nginx 설정은 다음과 같습니다.
server {
listen 80;
server_name ;
set $rooturi "xxxx/dist";
location ~ .*\.(jpg|jpeg|gif|png|webp|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|svg|proto)$ {
expires 365d;
root $rooturi;
}
location ^~/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://aaa.com;
}
location ^~/b-api/ {
rewrite ^/b-api/(.*)$ /$1 break;
proxy_pass http://bbb.com;
}
location / {
root $rooturi;
try_files $uri $uri/ /index.html =404;
add_header Cache-Control "no-cache";
add_header Access-Control-Allow-Origin *;
}
}
이는react 프로젝트의 신축에서 배치까지의 실현 예시에 관한 글입니다. 더 많은 관련react 신축에서 배치 내용에 대해서는 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
NextJS에서 환경 변수(.env) 설정내 환경 변수가 작동하지 않습니다 😱😱😱 이 상황에서 .env 파일을 사용하여 NextJS 앱에서 개발하는 동안 API URL 또는 비밀 키를 숨기고 싶을 수 있습니다. Next.js에서 환경 변수를 어떻게 사용합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.