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