카테고리 없음

facebook react (2)

머룽 2023. 4. 19. 09:55

react

이번 시간엔 webpack과 바벨컴파일러를 써서 개발을해보자! 일단 npm(node.js)이 있어야된다. nodejs 사이트가서 다운로드 받자. 설치후 터미널을 열어서 해당 프로젝트에서 다음과 같이 인스톨을 하자
npm install babel-loader babel-core babel-preset-es2015 babel-preset-react react react-dom --save-dev
바벨과 리액트를 설치 했다. 그럼 node_moduls라는 파일이 생겼을 것이다. 파일이 많다.. 그럼 다음으로 webpack을 설치 하자
npm install webpack -g
다음은 루트 폴더에 webpack.config.js 파일을 추가 하자
module.exports = {
    entry: ./app.js,
    output: {
        filename: bundle.js,
        path: ./build
    },
    module: {
        loaders: [
            {
                test: /\\.(js|jsx)?$/,
                exclude: /node_modules/,
                loaders: [ babel ]
            },
        ]
    }
};
실제 컴파일된 파일은 bundle.js에 담겨 있다. 바벨 로더를 갖고 컴파일을 할거다. 컴파일러는 바벨 말고 딴것도 있던거 같은데.. 필자가 할 수 있는건 바벨 밖에 없어서... 다음은 .babelrc파일을 루트에 다음과 같이 넣어야된다.
{
   "presets": ["es2015", "react"]
}
그리고 루트 폴더에 app.js를 만들자.
import React, { Component } from react;
import ReactDOM from react-dom;

class AppMain extends Component {
    constructor(props) {
        super(props);
        console.log("constructor");
    }

    render() {
        console.log("render")
        return(
            <div>
                <button onClick={this.unmount.bind(this)}>unmount</button>
            </div>
        );
    }

    componentWillMount(){
        console.log("componentWillMount")
    }

    componentDidMount(){
        console.log("componentDidMount")
    }

    componentWillUnmount(){
        console.log("componentWillUnmount");
    }
    unmount(){
        React.unmountComponentAtNode(document.getElementById(app))
    }

}
ReactDOM.render(<AppMain/>, document.getElementById(app));
저번 시간에 만들었던 코드를 갖다 놨다. 나머지코드는 동일하지만 맨 위에 import하는 부분이 있다. 모듈을 import하는 것으로 require("react") 와 동일 하다고 생각하면 된다. 마지막으로 html 파일을 생성하자 기존에 있다면 수정하자. 나머지는 필요 없고
<div id="app"></div>
<script src="../build/bundle.js"></script>
위와 같이 컴파일된 js와 실제 그릴 태그만 있으면 된다. 다 완료 되었다. 이제 webpack으로 컴파일을하자. 그냥 webpack만 터미널에 치면 된다.
webpack
에러가 나면 에러 표시가 나올 것이다. 에러가 나오지 않았다면 브라우저를 열어 확인해보자. 이상없이 잘 된다면 다음으로 넘어가자. 이번엔 import export에 대해 알아보자. 내가 만든 클래스(컴포넌트)를 모듈화 시킬 수 있다. 하는 방법은 간단하다. Button.js 파일을 만들자 거기에 이렇게 넣어 보자!
import React, { Component } from react;

class Button extends Component {
    render(){
        return(
            <button>BUTTON</button>
        )
    }
}
그냥 위에서 배운 간단한 button 컴포넌트다. 그래도 이전에 만들었던 것 중에서 지금은 필요 없는 것들은 제외 했다.
import React, { Component } from react;
import ReactDOM from react-dom;
import Button from ./js/Button;

class AppMain extends Component {
    constructor(props) {
        super(props);
    }

    render() {
        return(
            <div>
                <Button />
            </div>
        );
    }
}
ReactDOM.render(<AppMain/>, document.getElementById(app));

그리고 컴파일을 해보자.
webpack
그리고 브라우저를 띄우면 에러가 난다. export를 안했다. 다시 button으로 가자! 맨 아래에 이렇게 추가 하자.
export default Button;
그리고 다시 컴파일을 해보자. 그리고 브라우저를 띄우면 버튼 한개가 있을 것 이다. 혹은 클래스앞에 키워드로 써도 된다.
export default class Button extends Component {
    render(){
        return(
            <button>BUTTON</button>
        )
    }
}
이렇게 써줘도 가능하다. 필자는 저렇게 후자 같이 썼다. 이렇게 react에 대해 알아봤다. 앵귤러도 배우고는 싶지만 지금당장은 필요 없을 것같다. 프론트는 리액트 하나로 족하다ㅜㅜ 이것으로 리액트에 대해 알아봤다.

참고 : webpack을 계속 치기 귀찮으니까 --watch 옵션으로 실시간으로 컴파일 하자!

webpack --watch