Building A Blog By React Ecosystem(1)

Preface

After building a resume generator , I like that feeling build a project that everything's ready for some people to deploy. And then that time I discovered a website could free deploy app with given API manager data, so again I try to build a blog purpose of deploying in minutes for everyone want an own website.

However when I finish my work and after deploying the CMS website sent me an mail to tell me I need to upgrade the CMS account in 14days otherwise they will remove my app. My god, I suddenly more disappointed than any moment I meet difficult problems when I build my app, that faked advertisement destroyed my idea. oh..it just destroyed my recent finished works.

So it seems I built the app but for myself . However, I can share my experiences about I building my project. I believe that also have its valuable .

Main

there is a Chinese saying "A workman must first sharpen his tools if he is to do his work well" , this is the first part of my project: create a building scaffolding .

Before I really show my experience I recommend you to this to read the file architecture of this part.

I think I 'm not necessary to say any more about Nodejs and 'Express' or Webpack right ? After install Webpack globally we can start to write a Webpack.config file. we need ES6 and React .

"devDependencies": {
    "babel-cli": "^6.10.1",
    "babel-preset-es2015": "^6.9.0",
    "babel-preset-es2016": "^6.11.0",
    "babel-preset-react": "^6.11.1",
    "eslint": "^3.0.1",
    "eslint-config-airbnb": "^9.0.1",
    "eslint-plugin-import": "^1.9.2",
    "eslint-plugin-jsx-a11y": "^1.5.3",
    "eslint-plugin-react": "^5.2.2",
    "nodemon": "^1.9.2",
    "react-hot-loader": "^1.3.0",
    "webpack-dev-server": "^1.14.1",
    "webpack-hot-middleware": "^2.12.1"
  },
  "dependencies": {
    "babel-core": "^6.10.4",
    "babel-loader": "^6.2.4",
    "babel-polyfill": "^6.9.1",
    "cosmicjs": "^2.1.2",
    "events": "^1.1.1",
    "express": "^4.14.0",
    "history": "^3.0.0",
    "hogan-express": "^0.5.2",
    "immutable": "^3.8.1",
    "react": "^15.2.0",
    "react-dom": "^15.2.1",
    "react-redux": "^4.4.5",
    "react-router": "^2.5.2",
    "react-router-redux": "^4.0.5",
    "react-router-scroll": "^0.2.0",
    "redux": "^3.5.2",
    "redux-immutable": "^3.0.6",
    "redux-saga": "^0.11.0",
    "sanitize.css": "^4.1.0",
    "webpack": "^1.13.1"
  } 

The list above is all needs in this part.

At first, we write the server .

import express from 'express';
import path from 'path';

import webpack from 'webpack';
import webpackMiddleware from 'webpack-dev-middleware';
import webpackHotMiddleware from 'webpack-hot-middleware';
import webpackConfig from '../webpack.config.dev';
const app = express();

const compiler = webpack(webpackConfig);
app.use(webpackMiddleware(compiler, {
  hot: true,
  publicPath: webpackConfig.output.publicPath,
  noInfo: true,
}));
app.use(webpackHotMiddleware(compiler));

app.get('/*', (req, res) => {
  res.sendFile(path.join(__dirname, './index.html'));
});

app.listen(3333, () => console.log('Running on localhost 3333'));

The server is for compile React and ES6 imminently . the Express can work to maintain the states and compile fast without restarting the server. after wrote it down we can't make it work because we use ES6.

To solve this problem we can use babel-node instead of node to start Server.

"scripts": {

  "server": " babel-node server "

},

after Writing the scripts line to package.json we can npm run server to start the server use ES6 . However ,the webpack haven't done . We need to write webpack.config.dev.js like follows .


import path from 'path';
import webpack from 'webpack';

export default {
  devtools: 'eval-source-map',
  entry: [
    'webpack-hot-middleware/client',
    path.join(__dirname, '/client/index.js'),
  ],
  output: {
    path: '/',
    publicPath: '/',
  },
  plugins: [
    new webpack.NoErrorsPlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
  ],
  module: {
    loaders: [
      {
        test: /\.js$/,
        include: path.join(__dirname, 'client'),
        loaders: ['react-hot', 'babel'],
      },
    ],
  },
  resolve: {
    extentions: ['', 'js', 'jsx'],
  },
};

This moment we can't run webpack yet . to touch the index file in ./client.
and write down this :

import React from 'react';

import { render } from 'react-dom';

import App from './components/App';

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

You can see that this file is dependent on another file names ./components/App. So we need to build it :


import React from 'react';

class App extends React.Component { // eslint-disable-line react/prefer-stateless-function
  render() {
    return (
      <h1>Hello my scaffold! ~~</h1>
    );
  }
}

export default App;

It's worth to mentioning why I use the class in App.js, if it 's a pure function we can 't make it updating automatically .Pure function without life cycles.

And now we can make work and you can check localhost: 3333 to see how beautiful the project in the browser. and you can edit files and see it changes without waiting.

This part is over . Thank reading.
If having any problem you can contact me .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容