[JavaScript] 저희가 가상 DOM을 제공하는'React'에 대해 조사를 해봤어요.

14551 단어 ReactJavaScriptyeoman
가끔 들리는 리액트를 제가 직접 살펴봤기 때문에 정리하는 김에 메모를 남겼죠.
그나저나 리액트를 처음 알게 된 것은천하제일클라이언트 JS MV* 프레임 무술회이었다.

이른바 React


페이스북 팀이 개발한 사용자 인터페이스 구축을 위한 자바스크립트 라이브러리입니다.공식페이지↑http://facebook.github.io/react/
그 특징(공식 페이지와 같다)
  • MVC 전용 View
  • 다른 라이브러리와 쉽게 조합할 수 있음

  • Virtual DOM(가상 DOM)

  • 1 방향의 Reactive 바인딩
  • Reactive .. 뷰를 동적으로 업데이트하는 분위기겠지.
  • 홈페이지를 보고 방법에 따라 양방향으로 진행할 수 있음
  • React 정보


  • 공식 페이지(위 페이지와 동일)
  • http://facebook.github.io/react/

  • 튜토리얼과 API 문서 등 알찬 느낌


  • 샘플 소스(Starter Kit)도 다운로드 가능


  • React의 호스트 소스
  • [GitHub] https://github.com/facebook/react

  • 간단한 시도라면 CDN부터 읽으면 될 것 같다.
    <script src="http://fb.me/react-0.11.1.js"></script>
    <script src="http://fb.me/JSXTransformer-0.11.1.js"></script>
    
  • CDN에서 사용 가능한 리소스 목록
  • http://cdnjs.com/libraries/react/

  • 보워도 설치할 수 있을 것 같아요.
    $ bower install --save react
    

  • 확장?페이스북 팀에서 만들었어요.
  • https://github.com/reactjs

  • Rails용gem
  • 도 있어요.

  • React 관련 슬라이드(일본어)

  • MVC는 이미 유행이 지났다!?React + Flux
  • '천하제일고객사이트 JS MV* 프레임 무술회'에 나온 것
  • Get Started React.js
  • Yeoman에서 프로젝트 템플릿을 찾았습니다.


    나는 노동력과 재료를 줄여서 빨리 시험해 보고 싶어서 누군가가 만든 틀을 찾아서 두 개를 시험해 보았다.그나저나 전제 조건은 손 옆 환경이 이거다→Mac로 Yeoman 환경을 구축하려면

    ① generator-react-webpack


    생성기의 소스는 이거야ㅠhttps://github.com/newtriks/generator-react-webpack

  • 설치 생성기
    $ npm install -g generator-react-webpack
    

  • 부트 생성기
    $ yo react-webpack
    


  • 파일 확장은 다음과 같습니다.


  • 동작 확인
    $ grunt serve
    


  • 그나저나 발송을 위한 구축이라면
    $ grunt build
    
  • 소스를 봤는데 뭔가 이상해요.다음 생성기를 시도해 보십시오.

    ② generator-react-gulp-browserify


    생성기의 소스는 이거야ㅠhttps://github.com/randylien/generator-react-gulp-browserify
    주변 환경은 Gulp과 Browserify를 사용한 것 같습니다.개인적으로 이게 낫죠.

  • 설치 생성기
    $ npm install -g generator-react-gulp-browserify
    

  • Gulp과 SASS가 필요한 것 같아서 따로 설치합니다.
    $ npm install -g gulp
    
    $ gem install sass
    
    CoffeeScript가 설치되어 있지 않은 경우 를 넣어야 할 수도 있습니다.

  • 부트 생성기
    $ yo react-gulp-browserify
    


  • 초기 상태에서는 Bower가 관리하는 라이브러리 클래스가 없습니까?이렇게
    $ bower install
    

  • 최종적으로 파일은 다음과 같이 전개된다


  • 동작 확인
    $ gulp watch
    
    브라우저로 접근해 보십시오 http://localhost:9000.

    역시 이 시대 사람들은 이해하기 쉬워요.

  • 소스 봐봐.
  • 모듈을 만들기 위해 대상을 React.createClass()에 맡긴 것 같다.그 대상의 render: 키의 값은 View에 표시된 내용인 것 같습니다.
  • app/scripts/app.js
    /** @jsx React.DOM */
    
    var React = window.React = require('react'),
        Timer = require("./ui/Timer"),
        mountNode = document.getElementById("app");
    
    var TodoList = React.createClass({
      render: function() {
        var createItem = function(itemText) {
          return <li>{itemText}</li>;
        };
        return <ul>{this.props.items.map(createItem)}</ul>;
      }
    });
    var TodoApp = React.createClass({
      getInitialState: function() {
        return {items: [], text: ''};
      },
      onChange: function(e) {
        this.setState({text: e.target.value});
      },
      handleSubmit: function(e) {
        e.preventDefault();
        var nextItems = this.state.items.concat([this.state.text]);
        var nextText = '';
        this.setState({items: nextItems, text: nextText});
      },
      render: function() {
        return (
          <div>
            <h3>TODO</h3>
            <TodoList items={this.state.items} />
            <form onSubmit={this.handleSubmit}>
              <input onChange={this.onChange} value={this.state.text} />
              <button>{'Add #' + (this.state.items.length + 1)}</button>
            </form>
            <Timer />
          </div>
        );
      }
    });
    
    React.renderComponent(<TodoApp />, mountNode);
    

    끝말


    아직 평가할 정도는 아니지만 인상으로 이해하기 쉬운 구조라고 생각한다.다시 해보고 싶어요.

    좋은 웹페이지 즐겨찾기