1. 程式人生 > >npm搭建React專案

npm搭建React專案

要想使用npm,首先安裝node.js

一.安裝全域性包

$ npm install babel -g
$ npm install webpack -g
$ npm install webpack-dev-server -g

二.建立根目錄

建立一個根目錄,目錄名為:myApp,再使用npm init初始化,生成package.json檔案:

$ mkdir myApp
$ cd myApp/
$ npm init
name: (myApp) 
version: (1.0.0)
description: 
entry point: (index.js)
test command:
git repository:
keywords:
author: license: (ISC) About to write to /Users/tianqixin/www/reactApp/package.json:{ "name": "react-runoob", "version": "1.0.0", "description": "cllgeek test", "main": "index.js", "scripts": { "start": "webpack-dev-server --hot" }, "author": "", "license": "ISC", "dependencies"
: { "react": "^0.14.8", "react-dom": "^0.14.8" } } Is this ok? (yes)

三.新增包及外掛

因為我們需要使用React,所以我們需要先安裝它,–save命令用於將包新增至package.json檔案中

$ npm install react --save
$ npm install react-dom --save

同時我們需要安裝一些babel外掛

$ npm install babel-core
$ npm install babel-loader
$ npm install babel-preset
-react $ npm install babel-preset-es2015

四.建立檔案

接下來我們建立一些必要檔案:

$ touch index.html
$ touch App.jsx
$ touch main.js
$ touch webpack.config.js

五.設定編譯器,伺服器,載入器

開啟webpack.config.js檔案新增以下程式碼:

var config = {
    entry:'./main.js',
    output:{
        path:'./build',
        filename:'index.js',
    },
    devServer:{
        inline:true,
        port:7777
    },
    module:{
        loaders:[{
            test:/.jsx?$/,
            exclude:/node_modules/,
            loader:'babel',
            query:{
                presets:['es2015','react']
            }
        }]
    }
}

module.exports = config;

注:該配置適用於webpack1,使用webpack2如此配置會報錯,預設安裝高版本的外掛,我們需要在前面安裝webpack的時候指定版本號
安裝方式如下:

$ npm install webpack@1.* -g

@1.*會安裝1.X的最高版本

entry: 指定打包的入口檔案 main.js。
output:配置打包結果,path定義了輸出的資料夾,filename則定義了打包結果檔案的名稱。
devServer:設定伺服器埠號為 7777,埠後你可以自己設定 。
module:定義了對模組的處理邏輯,這裡可以用loaders定義了一系列的載入器,以及一些正則。當需要載入的檔案匹配test的正則時,就會呼叫後面的loader對檔案進行處理,這正是webpack強大的原因。
現在開啟 package.json 檔案,找到 “scripts” 中的 “test” “echo \”Error: no test specified\” && exit 1″ 使用以下程式碼替換:
“start”: “webpack-dev-server –hot”
替換後的 package.json 檔案 內容如下:

$ cat package.json
{
  "name": "myApp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --hot"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^15.5.4",
    "react-dom": "^15.5.4",
    "webpack": "^1.15.0",
    "webpack-dev-server": "^1.16.4"
  }
}

現在即可使用npm start命令來啟動服務了,–hot命令會在檔案變化後重新載入,這樣就不需要修改程式碼後重新重新整理瀏覽器進行更新操作。

六.編寫index.html

設定div id=”app” 為我們應用的根元素,並引入上面ouput指定的檔案index.js指令碼檔案:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app"></div>
    <script src="index.js"></script>
</body>
</html>

七.編寫App.jsx 和main.js檔案

這是第一個react元件,這個元件將輸出Hello World!。
App.jsx檔案程式碼:

import React from 'react';

class App extends React.Component {
    render(){
        return (
            <div>
                Hello World!
            </div>
        )
    }
}

export default App;

我們需要引入元件並將其渲染到根元素App上,這樣我們才可以在瀏覽器上看到它。
main.js檔案程式碼:

import React from 'react';
import ReactDOM from 'react-dom'

import App from './App.jsx'

ReactDOM.render(<App/>,document.getElementById('app'));

注意:
如果想要元件可以在任何的應用中使用,需要在建立後使用export將其匯出,在使用元件的檔案使用 import將其匯入。

文成上述配置,即可執行該服務。

$ npm start