React+Redux开发实录(一)搭建工程脚手架
React+Redux开发实录(二)React技术栈一览

搭建工程脚手架

准备工作

  • 安装node
  • 安装git
  • 安装一款前端IDE
    推荐VSCode,最火的前端IDE,比sublime开源,比WebStrom轻,比XCode快。人性化,配色也很舒服,用来开发很惬意。

create-react-app基础脚手架

借助React官方的create-react-app工具,开发人员可以从配置工作中解脱出来,无需过早关注React技术栈,通过创建一个已经完成基本配置的应用,让开发者快速开始React应用的开发:

npm install -g create-react-app

安装结束后,就可以在终端用create-react-app命令创建工程:

create-react-app react-redux-app

react-redux-app工程集成了react应用框架,在此基础上进行React应用开发,就避免了繁琐的初始配置工作。

进入工程目录,启动工程:

cd react-redux-app
npm start

启动了一个开发模式的服务器,指向本机http://localhost:3000/,显示如下:

弹出webpack配置

实际开发中,通常要定制webpack的配置,因此我们弹出应用的webpack配置:

npm run eject

执行完以上命令,react-redux-app下多了config和scrips目录,分别对应webpack配置和npm脚本。

安装redux相关库

安装redux核心库:

npm install redux --save

直接使用redux的API会比较繁琐。react官方提供的react-redux库,可以更方便的使用redux:

npm install react-redux --save

安装babel插件transform-decorators-legacy,可以使用@connect更方便的连接UI组件与容器组件:

npm install babel-plugin-transform-decorators-legacy --save-dev

安装transform-decorators-legacy插件后,需在package.json配置该插件:

"babel": {"plugins": ["transform-decorators-legacy"]
}

安装下redux异步调用的库redux-thunk:

npm install redux-thunk --save

其他配套库

# 路由库react-router4
npm install react-router-dom --save
# ajax库
npm install axios --save
# 组件属性校验库
npm install prop-types --save
# cookie操纵库
npm install browser-cookies --save
# socket.io客户端
npm install socket.io-client --save

配置下代理

开发中,前端工程与后端API不在一个域名,为避免跨域限制,方便接口调试,需在package.json中配下代理:

# 比如,任何ajax请求,都代理到localhost:9093域
"proxy": "http://localhost:9093"

来一款CSS预处理器

less、sass或stylus都行,这里我安装less。

npm install less-loader less --save-dev

分别修改/config/webpack.config.dev.js和/config/webpack.config.prod.js:

{test: /\.(css|less)$/, //  这里加上lessuse: [...{loader: require.resolve('less-loader') // 配置less-loader}]
}

配合一款UI框架

React开发,国内首选蚂蚁金服的antd设计,移动端的话,安装antd-mobile:

npm install antd-mobile --save-dev

最好配置antd组件样式的按需加载,借助babel的import插件:

npm install babel-plugin-import --save-dev

package.json中,记得配置上该插件:

"babel": {"plugins": ["transform-decorators-legacy",["import", { "libraryName": "antd-mobile", "style": "css" }]]
}

初始目录文件

创建一些初始目录和文件,在入口处完成redux和router的一些基础工作:

创建目录/src/component

创建目录/src/container

创建目录/src/redux

创建/src/container/login/index.js,编辑如下:

import React from 'react'class Login extends React.Component {render() {return <h2>登录页</h2>}
}export default Login

创建/src/container/register/index.js,编辑如下:

import React from 'react'class Register extends React.Component {render() {return <h2>注册页</h2>}
}export default Register

创建/src/config.js,编辑如下:

import axios from 'axios'
import { Toast } from 'antd-mobile'axios.interceptors.request.use(function(config) {Toast.loading('加载中', 0)return config
})axios.interceptors.response.use(function(config) {Toast.hide()return config
})

创建/src/reducer.js,编辑如下:

import { combineReducers } from 'redux'function reducer(state = 0, action) {return state
}export default combineReducers({reducer})

创建/src/app.js,编辑如下:

import React from 'react'
import { Route } from 'react-router-dom'import Login from './container/login'
import Register from './container/register'class App extends React.Component {render () {return (<div><Route path="/Register" component={Register}></Route><Route path="/login" component={Login}></Route></div>)}
}export default App

修改/src/index.js,编辑如下:

import React from 'react';
import ReactDOM from 'react-dom';
import { createStore, applyMiddleware, compose } from 'redux'
import thunk from 'redux-thunk'
import { Provider } from 'react-redux'
import { BrowserRouter } from 'react-router-dom'import registerServiceWorker from './registerServiceWorker';
import reducers from './reducer'
import './config'
import App from './app'registerServiceWorker()const store = createStore(reducers, compose(applyMiddleware(thunk),window.devToolsExtension ? window.devToolsExtension() : f => f
))ReactDOM.render((<Provider store={store}><BrowserRouter><App></App></BrowserRouter></Provider>
), document.getElementById('root'));

删除其他多余的文件,保持脚手架工程为如下结构:

再次启动工程:

npm start

访问登录页http://localhost:3000/login,显示:

访问注册页http://localhost:3000/register,显示:

安装Chrome扩展

访问Chrome的获取更多扩展程序 (可能要翻墙)。搜索安装react-developer-tools和redux-devtools。

或者自己去网上下载扩展程序的crx文件,进入chrome扩展程序页面,勾选开发者模式,然后把crx文件拖进去。

也不必刻意学习要怎么使用,开发中自己调出来,多点几下就都明白了。

按需安装其他库

其他库,视自身项目情况安装吧。比如,如果你的后端使用node服务端暴露接口API,而你又使用express框架进行node开发。那么,你需要安装express:

npm install express --save

假如你不想每次修改后端接口都重启node服务端,那么你可以安装nodemon库:

npm install -g nodemon

安装了nodemon库后,用nodemon命令代替node命令启动node服务端就可以了。

安装node.js的消息体解析中间件:

npm install body-parser --save

假如你用cookie存储用户会话,可以安装node操作cookie的库cookie-parse:

npm install cookie-parser --save

如果你要在node里用DM5进行密码加密的话,你可能需要utility库:

npm install utility --save

如果有实时聊天等功能的话,可能socket库你也需要:

npm install socket.io --save

再如果,你是使用mongodb数据库,那么你要在机器上安装mongodb:

# mac电脑可以用brew工具在本机安装mongodb
brew install mongodb
# 完了后,你可以用以下命令启动和停止mongodb服务:
brew services start mongodb
brew services stop mongodb

安装mongoose库,封装了node对mongodb的api操纵:

npm install mongoose --save

npm里海量的库,自己按需安装去吧......

源代码托管一下

去github上创建下远程仓库react-redux-app。
然后在工程目录下执行以下命令,关联上远程仓库:

git init
git remote add origin https://github.com/zhutx/react-redux-app.git
git push -u origin master

React+Redux开发实录(一)搭建工程脚手架
React+Redux开发实录(二)React技术栈一览

React+Redux开发实录(一)搭建工程脚手架相关推荐

  1. 一个 react+redux 工程实例

    在前几天的一篇文章中总结部分提到了学习过程中基础的重要性.当然,并不是不支持大家学习新的框架,这篇文章就分享一下react+redux工程实例. 一直在学习研究react.js,前前后后做了几次分享. ...

  2. 实例讲解基于 React+Redux 的前端开发流程

    前言:在当下的前端界,react 和 redux 发展得如火如荼,react 在 github 的 star 数达 42000 +,超过了 jquery 的 39000+,也即将超过前几年比较火的an ...

  3. react实战项目_React实战之React+Redux实现一个天气预报小项目

    引言 经过一段时间的React学习,React和Vue的开发确实有很大的不同,但是都是MVVM框架,因此上手没有很大的难度,这次用React+Redux开发一个天气预报小项目.源码地址:https:/ ...

  4. react+redux+generation-modation脚手架搭建一个todolist

    TodoList 1. 编写actions.js 2. 分析state 试着拆分成多个reducer 3. 了解store 4. 了解redux数据流生命周期 5. 分析容器组件和展示组件 搞清楚,数 ...

  5. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  6. webpack+react+redux+es6开发模式---续

    一.前言 之前介绍了webpack+react+redux+es6开发模式 ,这个项目对于一个独立的功能节点来说是没有问题的.假如伴随着源源不断的需求,前段项目会涌现出更多的功能节点,需要独立部署运行 ...

  7. React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频)

    React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频) mern 架构零基础开发完整电商网站 React + Redux + Expre ...

  8. 在windows上搭建React Native开发环境

    最近要学习React Native,但是在window上搭建开发环境的时候遇到了些问题,以至于一直没有搭建好开发环境. React Native相关项目及文档: react-native的GitHub ...

  9. 搭建SpringBoot脚手架工程系列(1):Spring Initializr的超能力

    前言 SpringBoot作为Java后端最主流的技术栈,是每个Java程序员必备的技能.在微服务架构流行的时代,一个普通的企业级项目通常会有5-10个微服务,业务复杂的企业级项目甚至会有20个以上的 ...

最新文章

  1. C++ 系列:extern
  2. QPW 公告表(tf_notice)
  3. 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool
  4. SQL Server 数据类型
  5. python上传文件方法总结
  6. fiddler抓不到pc微信小程序包解决办法
  7. NOI2022退役记
  8. js监听iframe是否加载完毕
  9. 如何快速将一张彩色图片变成黑白图片
  10. [2014]兄弟连高洛峰 PHP教程1.1.1 新版视频形式介绍
  11. 添加ubuntu开机引导
  12. 2022-2028年中国数位板行业发展现状调查及市场分析预测报告
  13. JSONObject.toBean() 把jsonobject转换成实体类
  14. 设计模式(Design Pattern)详细整理(含思维导图)
  15. grep命令详解(如何匹配多个字符串)(grep指令)(grep -q)
  16. 【VPP】 VPP CLI 命令
  17. 地表真实温度,辐射温度,亮度温度的区别
  18. P2P、P2SP游戏更新下载解决方案。
  19. 对于试衣网的一点看法
  20. 为你揭露2018微信公开课pro的12个重点

热门文章

  1. 关于ListView中adapter调用notifyDataSetChanged无效的原因
  2. shell执行mysql命令
  3. java- ASM 字节码操控框架
  4. Winsock异步模式I/O模型WSAEventSelect的使用
  5. 写出一个超强的lighttpd模块
  6. WSL windows子系统开启ssh-server服务
  7. 毕业仅1年,干Python赚了50W 网友:不是吹的
  8. 理解java和python类变量以及类的成员变量
  9. 零基础自学Python:安装Python、解释器、代码风格等
  10. c索引超出了数组界限_Lua数组、Lua迭代器