使用ES6編寫React應用(1):簡介及環境配置

sqaw9508 8年前發布 | 21K 次閱讀 React JavaScript開發 ECMAScript

來自: http://wwsun.github.io/posts/react-with-es6-part-1.html

本文將會介紹如何使用ES6來編寫React應用,作為本系列的第一篇文章,本文將主要講訴相關的開發環境配置。

Statement

  • 作者: 景莊 ,Web開發者,主要關注JavaScript、Node.js、React、Docker等。

本文所使用的各項技術均為最新版本,具體的版本信息參考如下:

  • Babel v6
  • Node v4
  • Koa v1
  • React v0.14 ( react and react-dom )

項目結構

本文所使用的項目結構如下:

+ build     客戶端代碼的構建結果目錄
+ config    配置信息目錄
+ lib       服務端庫文件
    - render.js 渲染腳本
+ src       客戶端源代碼存放目錄
+ test      測試文件目錄
+ views     視圖文件目錄
- index.js  服務器腳本

準備開發環境

構建一個簡單的Koa服務器

為了能夠讓我們所構建的應用正常的運行和調試,首先需要做的是構建一個基本的Web容器,幸運的是, 我們可以基于Node.js快速的構建一個簡單的并且滿足需求的Web服務器。為了簡單起見,我們選擇使用Koa進行構建。

  1. 使用 npm init --yes 快速的生成項目的初始文件。
  2. 安裝服務器端的相關依賴,如下:
    • koa
    • koa-logger
    • koa-route
    • koa-static
    • co-views
    • swig
  3. 由于我們也想用ES6開發服務端代碼,因此我們打算使用Babel動態編譯代碼,安裝相關依賴:
    • babel-cli
    • babel-preset-es2015-node5
  4. 在 package.json 中增加 babel 和 scripts 配置項: “babel”: { “presets”: [ “es2015-node5” ] }, “scripts”: { “start”: “babel-node index.js” }

服務器端代碼的相關依賴和配置信息都已經完成了,現在只需要用ES6來開發一個簡單的koa服務器即可:

// index.js
'use strict';

import path from 'path';
import koa from 'koa';
import logger from 'koa-logger';
import serve from 'koa-static';
import route from 'koa-route';

import render from './lib/render';

var app = koa();

app.use(logger());
app.use(route.get('/', home));

function *home() {
  this.body = yield render('home', {});
}

app.use(serve(path.join(__dirname, 'build')));

app.listen(3000);
console.log('listening on port 3000');

由于服務器需要渲染基本的視圖文件,因此我們可以借助 co-views 和 swig 編寫一個簡單的服務器端渲染腳本:

// lib/render.js
'use strict';

import path from 'path';
import views from 'co-views';

export default views(path.join(__dirname, '../views/'), {
  map: {html: 'swig'}
});

創建視圖文件 views/home.html :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React.js with ES6</title>
</head>
<body>

<div id="react-app"></div>

<!--<script src="bundle.js"></script>-->
<script src="http://localhost:8080/bundle.js"></script>
</body>
</html>

配置Webpack

由于我們需要使用ES6來編寫React應用,因此我們需要將React代碼編譯為普通的JS代碼,幸運的是, 我們可以借助Webpack和Babel來完成這項任務。大致的步驟如下:

  1. 安裝Webpack,包括如下依賴:
    • webpack
    • webpack-dev-server
  2. 安裝Babel相關依賴,用于編譯React代碼:
    • babel-loader
    • babel-preset-es2015
    • bebel-preset-react
  3. 創建Webpack配置文件: config/webpack.config.js
  4. 在 package.json 文件中添加編譯React代碼相關的 scripts 腳本: “scripts”: { “start”: “babel-node index.js”, “build”: “webpack –config config/webpack.config.js”, “watch”: “webpack-dev-server –config config/webpack.config.js –hot –inline –progress” },

Webpack的配置文件如下:

// config/webpack.config.js
var path = require('path');
var webpack = require('webpack');
var node_modules = path.resolve(__dirname, '../node_modules');

var dir_src = path.resolve(__dirname, '../src');
var dir_build = path.resolve(__dirname, '../build');

module.exports = {
  entry: path.resolve(dir_src, 'main.jsx'),
  output: {
    path: dir_build, // for standalone building
    filename: 'bundle.js'
  },
  devServer: {
    contentBase: dir_build
  },
  module: {
    loaders: [
      {test: /src(\\|\/).+\.jsx?$/, exclude: /node_modules/, loader: 'babel', query: {presets: ['es2015', 'react']}}
    ]
  },
  plugins: [
    // Avoid publishing files when compilation fails
    new webpack.NoErrorsPlugin()
  ],
  stats: {
    colors: true // Nice colored output
  },
  // Create Sourcemaps for the bundle
  devtool: 'source-map'
};

React應用

  1. 安裝React相關依賴:
    • react
    • react-dom
  2. 編寫React應用

React應用的入口文件: ```javascript // src/main.jsx import React from ‘react’; import ReactDOM from ‘react-dom’; import Root from ‘./components/root.jsx’;

let attachElement = document.getElementById(‘react-app’);

ReactDOM.render( , attachElement); ```

React應用組件樹的根文件: ```javascript // src/components/root.jsx import React from ‘react’;

class Root extends React.Component { render() { return <h1>Hello from {this.props.phrase}!</h1>; } }

export default Root; ```

測試及啟動

  1. 使用 npm run watch 啟動 webpack-dev-server
  2. 使用 npm start 啟動服務器
  3. 打開瀏覽器訪問 http://localhost:3000 查看結果

參考文件

  1. React and ES6, Part 1
  2. React and Webpack Cookbook
  3. React - Getting Started
  4. Setting Up Babel 6
  5. E-book: Exploring ES6
  6. JSX in Depth
  7. Babel Handbook
  8. </ol> </article>

 本文由用戶 sqaw9508 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!