react:react + dva + router + roadhog 基础项目搭建

一、脚手架安装

 

        第一步:全局安装 dva,这里有个条件,node 版本要 >= 6.5 且 dva-cli 版本要在 0.7x。

                       npm install dva-cli -g

    第二步:查看版本号

            dva -v

 

二、创建一个 dva 的 demo

 

    dva new reactbase

    cd myapp

    npm start

 

    本地生成的目录结构如下:

                                                    react:react + dva + router + roadhog 基础项目搭建_第1张图片

 

    注)如果 npm install 安装报错,改成 cnpm install 

    

    第一步:生成的目录结构如下:

        react:react + dva + router + roadhog 基础项目搭建_第2张图片

 

    第二步:了解下 roadhog 的配置

        链接地址:https://github.com/sorrycc/roadhog

            

三、配置 antd 、babel-plugin-import

 

    babel-plugin-import 主要是用来引和 antd 的js 和 css 文件,打包出来的文件不会太大。

 

    通过 npm 安装 antd 和 babel-plugin-import。babel-plugin-import 是用来按需加载 antd 的脚本和样式的,

 

        cnpm install antd babel-plugin-import --save

    

四、安装 react-router-dom

    cnpm install react-router-dom --save-dev

 

五、在 .webpackrc 文件下配置:webpack 插件对 antd 按需加载

 

     "extraBabelPlugins": [

       [

         "import",

         {

           "libraryName": "antd",

           "libraryDirectory": "es",

           "style": "css"

         }

       ]

     ],

 

六、在 .webpackrc 文件下继续:配置代理

    

    // 配置一下代理

    "proxy": {

      "/api": {

        "target": "http://jsonplaceholder.typicode.com/",

        "changeOrigin": true,

        "pathRewrite": {

          "^/api": ""

        }

      }

    }

 

    最终 合成的代码是:

        react:react + dva + router + roadhog 基础项目搭建_第3张图片

 

七、项目构建

 

    页面运行(npm start)后的界面如下:

 

    react:react + dva + router + roadhog 基础项目搭建_第4张图片

 

 1、配置入口页面:

    默认:

                react:react + dva + router + roadhog 基础项目搭建_第5张图片

 

        修改后:

                react:react + dva + router + roadhog 基础项目搭建_第6张图片

        

    2、配置路由:./src/router.js

 

        默认:

                react:react + dva + router + roadhog 基础项目搭建_第7张图片

 

        修改后:

                react:react + dva + router + roadhog 基础项目搭建_第8张图片

 

    3、添加主界面页:新增 App.js 

        

        新增的文件可以理解为:首页 

 

        代码如下:

        

                react:react + dva + router + roadhog 基础项目搭建_第9张图片

 

        效果图如下:

 

                react:react + dva + router + roadhog 基础项目搭建_第10张图片

 

    

    4、 添加组件:./src/components 下新增菜单组件,调用 antd 组件化。

 

        默认的组件化格式如下:

 

            react:react + dva + router + roadhog 基础项目搭建_第11张图片

 

        修改成:

    

            react:react + dva + router + roadhog 基础项目搭建_第12张图片

 

            下面新建菜单文件:用 antd  的 Menu 菜单。

 

                    省略:参照官方文档:https://ant.design/components/menu-cn/

 

            在 App.js 中调用 Menus 组件

 

                react:react + dva + router + roadhog 基础项目搭建_第13张图片

 

            此时页面效果如下:

 

                    react:react + dva + router + roadhog 基础项目搭建_第14张图片

            

            注)布局自行优化。可以用 Layout 布局。

 

    5、安装 less 或者 sass

        

             cnpm install less less-loader --save-dev

       或

       cnpm install sass sass-loader --save-dev

 

    本项目中遇到一个问题:less 文件引入的时候第一种方法生效,第二种方法不生效(如下图)?

 

                react:react + dva + router + roadhog 基础项目搭建_第15张图片

 

        原因是因为 dva 中开启了 css modules。antd 的样式覆盖了样式。

 

        解决方法如下:

        :global {

            // 写据需样式

         }

 

    6、路由配置

 

            简单来说就是点击左侧菜单,右边内容改变。

 

            方法一:

 

                    配置:App.js 

 

                    react:react + dva + router + roadhog 基础项目搭建_第16张图片

 

                    配置:router.js

 

                    react:react + dva + router + roadhog 基础项目搭建_第17张图片

 

                    配置:Menu.js

 

                    react:react + dva + router + roadhog 基础项目搭建_第18张图片

 

        方法二:

 

            配置:index.js (入口文件)

 

                    react:react + dva + router + roadhog 基础项目搭建_第19张图片

 

            配置:App.js

 

                    react:react + dva + router + roadhog 基础项目搭建_第20张图片

 

            配置:router.js

 

                react:react + dva + router + roadhog 基础项目搭建_第21张图片

        

    7、效果出来了

 

                react:react + dva + router + roadhog 基础项目搭建_第22张图片

 

六、 模块分析

 

    初始化的 dva , 参考链接:https://www.jianshu.com/p/69f13e9123d9

 

    1、const app = dva() 

 

    2、app.use

        用来加载插件,reduce 第三方这种

       react:react + dva + router + roadhog 基础项目搭建_第23张图片

 

    3、app.model

        用来接收发送的 action 

        react:react + dva + router + roadhog 基础项目搭建_第24张图片

    

    4、app.router

        在这里面进行所有页面初始化的路由设置

 

 

    1、添加路由

    2、添加 model

    3、添加service

    4、添加界面

 

参考链接:https://blog.whezh.com/dva-basic-usage/

 

        https://www.cnblogs.com/Chasel-Chen/p/8984073.html

        

        https://github.com/sorrycc/roadhog

                

框架搭建:

                http://que01.github.io/2016/11/20/dva-react/

 

 

react + dva + router + roadhog 基础项目搭建

你可能感兴趣的:(JS,react)