개인 자료 정리 홈페이지 입니다.

Note > 자바스크립트 프레임워크/라이브러리모음Vite.jsBy a3040, Published on Invalid Date

react-router/examples/ssr-data-router at dev · remix-run/react-router (github.com)

시작하기 | Vite (vitejs-kr.github.io)


Vite.js는 개발 서버와 빌드 도구를 제공합니다. 개발 서버는 HMR(Hot Module Replacement)을 지원하여 빠른 개발 환경을 제공하며, 빌드 도구는 Rollup을 기반으로 하여 최적화된 번들링을 제공합니다.


Vite.js는 기존의 Webpack과 비교하여 더 빠른 빌드 시간과 개발 서버의 더 빠른 시작 속도를 제공합니다.


Vite.js는 개발 서버와 빌드 도구를 제공하는 프론트엔드 개발 도구입니다.

Express.js는 서버 사이드 웹 프레임워크입니다.


Express.js와 Vite.js를 사용하려면, Vite.js의 빌드 결과물을 Express.js 애플리케이션에서 정적 파일로 서비스하는 방식으로 사용할 수 있습니다. 이를 통해 Vite.js에서 빌드된 클라이언트 사이드 애플리케이션과 Express.js에서 작성된 서버 사이드 애플리케이션을 함께 사용할 수 있습니다.


Vite.js 빌드 후 정적 파일로 제공합니다.


vite 템플릿 으로 생성하기 : npm create vite@latest vite_react_ts1 -- --template react-ts

템플릿 유형확인 시작하기 | Vite (vitejs-kr.github.io)


npm run build


const express = require('express');
const path = require('path');


const app = express();
const port = process.env.PORT || 3000;

// 정적 파일 경로 설정
app.use(express.static(path.join(__dirname, 'dist')));


// 모든 요청에 대해 index.html을 반환하도록 설정
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});


app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});



- React 프로젝트에서 Webpack 빌드 도구를 대신하여 Vite.js를 사용할 수 있습니다. 

 

- React 프로젝트를 생성합니다.

 npx create-react-app my-app

 cd my-app


- Vite.js를 설치합니다.

 npm install vite --save-dev

 

- Vite.js 설정

 vite.config.js

 module.exports = {
  // 빌드 모드 설정
  mode: 'development',
  // 개발 서버 설정
  server: {
    port: 3000,
  },
};

- 빌드 및 실행

npm run build

npm run dev



동적 Import

const module = await import(`./dir/${file}.js`)


변수 file은 깊이가 1인 파일에 대해서만 나타낼 수 있습니다. 가령 file이 foo/bar인 경우에는 Import가 실패하게 됩니다


특정 고정 위치에서 서비스 하고 싶을때 기본 위치 설정

package.json에 특정 위치 설정

    "build": "vite  build --base /memorize/"


정적파일로 서비스 제공 express/server.js

  // 정적 파일을 제공할 경로를 설정
  app.use('/memorize', express.static(path.join(__dirname, 'memorize')));참고


package.json에 "type": "module"이 명시되어 있지 않으면 Vite는 Node.js 호환성을 위해 다른 파일 확장자를 생성합니다. 즉, .js는 .mjs가 되고, .cjs는 .js가 됩니다.


환경 변수


라이브러리 모드에서 모든 import.meta.env.*는 프로덕션용으로 빌드 시 정적으로 대체됩니다. 그러나 process.env.*는 그렇지 않기에 라이브러리를 사용하는 측에서 이를 동적으로 변경할 수 있습니다. 만약 이 역시 정적으로 대체되길 원한다면 define: { 'process.env.NODE_ENV': '"production"' } 와 같이 설정해주세요.