基于React+Express+Webpack的項目框架

step1:建一個文件夾來放這個項目

   mkdir twbs-project
   cd twbs-project

step2:初始化一個.git文件

git init

step3:初始化一個package.json文件

npm init

step4:安裝配置打包工具webpack

npm install webpack --save-dev //安裝webpack并寫入package.json開發(fā)依賴中

gi node,ubuntu,WebStorm >> .gitignore //配置.gitignore文件,將不需提交的文件都手動寫入.gitignore

如果運行后提示gi不存在
zsh下:

$ echo "function gi() { curl -L -s [https://www.gitignore.io/api/\$@](https://www.gitignore.io/api//$@) ;}" >> ~/.zshrc && source ~/.zshrc

bash下:

 $ echo "function gi() { curl -L -s [https://www.gitignore.io/api/\$@](https://www.gitignore.io/api//$@);}" >> ~/.bashrc && source ~/.bashrc

測試webpack

一個入口文件

//entry.js
document.write("hello world");

一個html文件導入打包后的文件

//index.html
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
    </body>
</html>

運行webpack ./entry.js bundle.js
你會看到項目下多了bundle.js,里邊有好多代碼雁社,這就是webpack打包后的代碼
打開index.html,看到頁面顯示了hello world,說明webpack打包成功

配置webpack

創(chuàng)建一個weboack配置文件webpack.config.js

module.exports = {
    entry: "./entry.js", //打包入口文件
    output: {
        path: __dirname, //打包后文件的路徑
        filename: "bundle.js"http://打包后文件名
    },
    module: {
        loaders: [ //打包所需加載器
            { test: /\.css$/, loader: "style!css" } 
        ]
    }
};

配置其實主要是為了簡化執(zhí)行命令解恰,現(xiàn)在執(zhí)行webpack就可以完成打包,我們看到還可以打包css樣式浙于,那就試試咯先安裝所需加載器
npm install css-loader style-loader
在入口文件處作修改

//entry.js
require("!style-loader!css-loader!./style.css");
document.write("hello world");

增加一個css樣式文件

//style.css
body{
background:red;
}

再次打包护盈,打開index.html,會看到背景顏色

step5:配置express

npm install express --save //安裝express
建一個server.js啟動服務器

//server.js
let express = require("express"); //導入express
let app = express();//創(chuàng)建一個express實例
app.use(express.static(__dirname + '/')); 設置服務器靜態(tài)根目錄
app.listen(3000,function () { //監(jiān)聽localhost:3000端口
    console.log("listen 3000!!");
})

運行:

webpack //打包
node server.js //啟動服務器

打開localhost:3000,看到hello world!
每次修改完去啟動太麻煩,我們設置自動打包羞酗,自啟動
npm install nodemon //安裝nodemon進行自啟動

//package.json配置如下
"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "start": "nodemon server.js",
  "webpack": "webpack -d --watch"
},

step6:配置eslint

eslint可以根據(jù)我們所設定的代碼規(guī)范去系統(tǒng)的檢查代碼錯誤

npm install -g eslint //全局安裝eslint
eslint init //初始化一個.eslintrc.js文件

去package.json中配置

//package.json
 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon server.js",
    "eslint": "eslint .",
    "webpack": "webpack -d --watch"
  },

執(zhí)行npm run eslint看看代碼中的問題吧

step7:配置babel來解析react和ES6代碼

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

webpack.config.js中配置如下

module: {
        loaders: [
            { test: /\.css$/, loader: "style!css" },
            {
                test: /\.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    cacheDirectory: true,
                    presets: ['react', 'es2015']
                }
            },
            {test: /\.png$/, loader: "file-loader"},
            {test: /\.jpg$/, loader: "file-loader"},
        ]
    }

然后我們就可以放心地寫es6以及jsx語法啦

step8:加入React

就寫個小組建顯示個hello world 吧

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

寫一個組件App.js

import React,{Component} from "react";

 class App extends Component{
    render(){
        return <div>hello world!</div>
    }
}
module.exports = App;

在index.html頁面中增加一個節(jié)點
<div id = "app"></div>
注意要放在引入bundle.js之前
修改entry.js

require("!style-loader!css-loader!./style.css");
import {render} from "react-dom";
import React from "react"

import App from "./js/App";

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

現(xiàn)在去打開localhost:3000,看到了hello world!顯示在了頁面上腐宋,成功啦
github:https://github.com/baiying1314/TWBS

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市檀轨,隨后出現(xiàn)的幾起案子胸竞,更是在濱河造成了極大的恐慌,老刑警劉巖参萄,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卫枝,死亡現(xiàn)場離奇詭異,居然都是意外死亡讹挎,警方通過查閱死者的電腦和手機校赤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筒溃,“玉大人马篮,你說我怎么就攤上這事×保” “怎么了浑测?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烦周。 經常有香客問我尽爆,道長,這世上最難降的妖魔是什么读慎? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮槐雾,結果婚禮上夭委,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好株灸,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布崇摄。 她就那樣靜靜地躺著,像睡著了一般慌烧。 火紅的嫁衣襯著肌膚如雪逐抑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天屹蚊,我揣著相機與錄音厕氨,去河邊找鬼。 笑死汹粤,一個胖子當著我的面吹牛命斧,可吹牛的內容都是我干的。 我是一名探鬼主播嘱兼,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼国葬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芹壕?” 一聲冷哼從身側響起汇四,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎踢涌,沒想到半個月后船殉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡斯嚎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年利虫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堡僻。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡糠惫,死狀恐怖,靈堂內的尸體忽然破棺而出钉疫,到底是詐尸還是另有隱情硼讽,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布牲阁,位于F島的核電站固阁,受9級特大地震影響,放射性物質發(fā)生泄漏城菊。R本人自食惡果不足惜备燃,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凌唬。 院中可真熱鬧并齐,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至测垛,卻和暖如春捏膨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背食侮。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工号涯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疙描。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓诚隙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親起胰。 傳聞我的和親對象是個殘疾皇子久又,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容