基于create-react-app 2.0构建前端框架 新手必

2018-10-25  本文已影响0人  赖次Go

开箱即用,容易理解,更适合小白使用开发学习

mobx 简介

和 redux 类似,mobx 是一个数据管理库,都可以和 react 配合使用。它区别于 redux 的最大特点是,可以直接修改数据,对 UI 进行精确刷新

使用 mobx 时,借鉴了 redux 架构的优点:
下面是一些不同点:
编码工作量对比

代码功能少,感觉不到差别,好像就是 redux 方案有点难理解;而 mobx 比较直接,也比较 magic,就像当年刚开始使用 jQuery 的感觉。

mobx 在大项目中的扩展能力

redux 方案,本质上还是通过添加更多的 switch 语句来实现扩展,将 store 分支节点的 reducer 分散到不同的文件,再通过工具函数combineReducers 合并成一个 rootReducer

mobx 方案的扩展非常简单,需要扩展 storeactions。并且,actionsstore 的扩展方式完全一致,通过给父类添加成员

下载地址:
https://github.com/wulibaibao/react-antd-demo

已支持:

即将支持:

快速开始

install

yarn install or npm install

建议使用yarn

npm install yarn -g

start

yarn start

默认端口:3000
修改默认端口
方法一
"start":"set PORT=3535 && node scripts/start.js"
方法二
/*
自行安装包 yarn add cross-env
*/
"start":"cross-env PORT node scripts/start.js"

webpack proxy

转发配置package.json中的proxy

yarn start

build

yarn build

具体修改点:

webpack.config.dev.js && webpack.config.prod.js
 + function resolve (dir) {
 +     return path.join(__dirname, '..', dir)
 + }
 + '@':resolve('src'),

webpack.config.prod
 + externals: {
 +    'react': 'React',
 +    'react-dom': 'ReactDOM',
 +    'mobx' : 'mobx',
 +    'react-router-dom':'ReactRouterDOM',
 +    'mobx-react':'mobxReact',
 +    'moment':'moment',
 +    'antd' : 'antd',
 + },
 - devtool: shouldUseSourceMap ? 'source-map' : false,
 + devtool: false 
package.json -> proxy

如果你有单独的后端开发服务器 API,并且希望在同域名下发送 API 请求 ,那么代理某些 URL 会很有用

 + "proxy":{}
public -> index.html

HtmlWebpackPlugin 你可以让插件为你生成一个HTML文件,使用lodash模板提供你自己的模板,或使用你自己的loader。

 + <%if(process.env.NODE_ENV === 'production') {%>
 +    <script src="%PUBLIC_URL%/lib/react.production.min.js"></script>
 +    <script src="%PUBLIC_URL%/lib/react-dom.production.min.js"></script>
 +    <script src="%PUBLIC_URL%/lib/react-router-dom.min.js"></script>
 +    <script src="%PUBLIC_URL%/lib/mobx.umd.min.js"></script>
 +    <script src="%PUBLIC_URL%/lib/mobx-react.min.js"></script>
 +    <script src="%PUBLIC_URL%/lib/moment.min.js"></script>
 +    <script src="%PUBLIC_URL%/lib/antd.min.js"></script>
 + <%}%>
app.js
    const path = require('path')
    const express = require('express')

    var app = express()

    // 静态文件资源,做静态文件服务器,js、css、html资源等
    const projPath = process.cwd()
    // js,css资源
    app.use( `/` , express.static( path.join(projPath, 'build') ) )

    app.get( `*` , ( req , res ) => res.sendFile(path.join(__dirname, 'build', 'index.html')) )

    // 修改侦听服务器端口
    const port = 2001
    app.listen(port)
    console.info(`Listen on Port ${port}`)

over!

希望喜欢


喜欢请关注个人博客!

blog address : https://www.wulibaibao.com/

简书地址:

https://www.jianshu.com/u/bc0ac5b86f32

联系我!
QQ :381477703

mobx介绍部分引文: http://imweb.io/topic/59f4833db72024f03c7f49b4

上一篇 下一篇

猜你喜欢

热点阅读