Giter Club home page Giter Club logo

react-redux-antd's Introduction

Feature List

  • hot reloading/browser-sync/redux devtools on dev build
  • minify/chunkhash/trackJS on production build
  • eslint both of terminal and pre-commit
  • unit test of react/redux
  • es6/webapck
  • sass support
  • UI Kit: Ant Design
  • isomorphic-fetch
  • mock data
  • example app
  • ...

Getting Started

install

npm install --global yarn # install yarn
git clone [email protected]:Justin-lu/react-redux-antd.git demo
cd demo
yarn

# run dev
npm run start
# run mock server
npm run start:mock

npm script

# dev start with test/lint
npm run start 

# prodction start with browser-sync server
npm run start:prod

# production build
npm run build

# mock data
npm run start:mock

# run test
npm run test

# generate test cover report
npm run test:cover

eslint

  • enable pre-commit hook
cd .git/hooks/ && ln -s ./../../tools/pre-commit pre-commit

Structure

├── README.md
├── coverage # test coverage report
├── dist  # production build directory
│   ├── 269268ade790db48e9dcc5eb0db587cd.jpg
│   ├── antd.f7f5aa5b8e507559a22db55944433a23.css
│   ├── app.89f9817729a2b19dc35586b6f0505c83.css
│   ├── app.fa0e73813f3ce3a7605d.js
│   ├── favicon.ico
│   └── index.html
├── package.json
├── src  # source directory
│   ├── actions  # write your redux action here
│   │   ├── users.js  # redux action
│   │   └── users.spec.js  # redux action test
│   ├── components  # write your redux components here
│   │   ├── CustomTable.js
│   │   └── NotFoundPage  # this is a folder which include NotFoundPage.js, NotFoundPage.scss, NotFoundPage.spec.js
│   ├── config
│   │   └── api.js  # write your api config here
│   ├── constants  # some constants
│   │   └── actionTypes.js
│   ├── containers  # write your redux containers here
│   │   ├── AccessControl.js
│   │   ├── App  # App.js App.scss
│   ├── data
│   │   └── db.json  # mock data file
│   ├── favicon.ico
│   ├── index.html  # template index.html
│   ├── index.js  # entry file
│   ├── reducers  # write your redux reducers here.
│   │   ├── index.js  # entry file
│   │   ├── initialState.js  # put all of the initial state in here
│   │   ├── users.js  # users reducers
│   │   └── users.spec.js  # users reducers spec
│   ├── routes.js  # routes
│   ├── store  # store
│   │   ├── configureStore.dev.js
│   │   ├── configureStore.js
│   │   └── configureStore.prod.js
│   └── utils  # utils file
│       └── cFetch.js
├── tools  # some tools script
│   ├── build.js
│   ├── chalkConfig.js
│   ├── distServer.js
│   ├── mock.js
│   ├── pre-commit
│   ├── srcServer.js
│   ├── startMessage.js
│   ├── testSetup.js
│   └── updateIndexHTML.js
├── webpack.config.dev.js  # webpack config of dev
└── webpack.config.prod.js  # webpack config of production

react-redux-antd's People

Contributors

justin-lu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-redux-antd's Issues

前后端分离实践 — 如何解决跨域问题

随着前端越来越火,越来越多的人推崇前后端分离,后端只提供API,前端只负责消费API。这样我们就能更加专注自己的事情了,比如前端可以使用任何想要的工具(Webpack、Gulp等等),后端也不用因为集成前端的代码而苦逼加班了。这里不讨论前后端分离的必要性,更多可参考

这里主要分享前后端分离后,如何解决跨域问题

服务端

Rails

作为一个Rails程序员,首先分享一下在Rails里面的解决方案, 大家可以使用一个rack-cors 中间件,并作以下配置:

#config/application.rb
    config.middleware.insert_before 0, "Rack::Cors", :debug => true, :logger => (-> { Rails.logger }) do
      allow do
        origins ['http://localhost:3000']
        resource '*',
          :headers => :any,
          :methods => [:get, :post, :delete, :put, :options, :head],
          :max_age => 0
      end
    end

更多配置请参考 rack-cors

Node

当然,如果后端是NodeJs,我们也可以找到同样的中间件 cors 请看以下配置

var express = require('express')
  , cors = require('cors')
  , app = express();

// 同样的,只支持开发环境跨域
if(process.env.NODE_ENV == 'development'){
    app.use(cors());
}

Nginx

这时候,后端程序员可能会说,为了保持跟生产环境配置一直,请直接用 Nginx 来配置吧,这样能减少差异。啪啦啪啦...
直接看配置吧

server {
    listen       80;
    # 配置可访问域名,注意需要添加相应host配置
    server_name xxx.dev;
    #charset koi8-r;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location /api/v1 {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        # API Server
        proxy_pass http://localhost:4000;
        proxy_next_upstream error;
    }
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        # Frontend Server
        proxy_pass http://localhost:3000;
        proxy_next_upstream error;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

http-proxy-middleware

这时候前端也不服了,说,我们自己能搞定
PS: 其实这里用了Nginx配置之后,webpack的hot reload会存在比较大的延迟,具体原因还没研究

# 安装插件
cnpm install --save-dev http-proxy-middleware

# 添加配置
import proxy from 'http-proxy-middleware';

const apiProxy = proxy('/api/v1', {
    target: 'http://localhost:4000',
    changeOrigin: true,
    ws: true
});
browserSync({
  server: {
    baseDir: 'src',

    middleware: [
      apiProxy,
      ...
    ]
  }
})

更多参考

Chrome

你也可以通过添加chrome插件来支持跨域
CORS Toggle

登陆不进去

hello,npm run start ; 进入登陆页,但是登陆不进去,使用的是这个账号 "email": "[email protected]",
"password": "12345678";

Probleme in api.js

You've written:
if(process.env.NODE_ENV == "test"){
But should not be:
if(process.env.NODE_ENV == "development"){

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.