개인 개발 프로젝트/Lunch Box 앱

[Lunch Box] 4. 기본 페이지

종범2 2019. 10. 4. 21:35

[Lunch Box] 리액트 프로젝트가 생성되면 index.html, index.js, App.js가 생성된다. 각각을 다음과 같이 작성하였다.

 

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <title>Lunch Box</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="text/javascript" src="main.js"></script>
  </body>
</html>

기본 페이지다. index.html에서 main.js를 불러오는 이유는 webpack이 작성한 모든 js파일을 main.js라는 파일로 빌드하도록 설정했기 때문이다.

 

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import './css/button.css';
import './css/textField.css';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));

index.js에서는 index.html의 root라는 id를 지닌 div에서 App을 rendering하도록 설정하였다.

 

App.js

import React from 'react';
import { HashRouter as Router} from 'react-router-dom';
/**
 * 모듈을 import 할때 {} 없이 import A로 불러온다면 해당 모듈에서 export default A로 export 했기 때문이고
 * {}안에 import {A}로 불러온다면 해당 모듈에서 export {A}로 export 했기 때문임.
 */
import Main from './component/main/Main';
class App extends React.Component{
  render(){
    return (
      <Router>
        <Main/>
      </Router>
    );
  }
}
export default App;

App.js에서는 HashRouter 모듈 안에 Main 모듈을 넣어 렌더링한다. Router는 HashRouter를 사용하였다.

 

index.css

@import url(https://fonts.googleapis.com/earlyaccess/notosanskr.css);
html{
  font-family: 'Noto Sans KR' !important;
  height: 100%;
  width: 100%;
  margin: 0px;
  font-size: 100%;
}
body {
  height: 100%;
  width: 100%;
  margin: 0px;
}
#root{
  height: 100%;
  width: 100%;
  margin: 0px;
}
p{
  margin:0px;
}
a{
  text-decoration: none;
  color: inherit;
}
img{
  vertical-align: bottom;
}
@media (max-width: 960px) { 
  html { font-size: 80%; } 
} 

index.css에서는 대표적인 태그의 css를 설정한다. 또한 화면에 따라 크기가 변하도록 @media를 이용하였다. 간단하게 960px만 기준으로 설정하였다.