如何用react+react-router+fetch+webpack2简单集成一个移动端项目

前言:根据公司业务的要求,我最近用react写了一个项目,已经上线,把道路中遇到的一些坑和一些项目中的经验分享和大家共勉。
***这是目录结构***

这里写图片描述
当然结构是根据自己项目的复杂程度来定义的,但是大体上都是这样。


1.技术选型

为什么我要选择react,首先我看重的是他的单向数据流,他是和js单线程保持一致的,然后是因为毕竟是facebook团队来维护,准确性和可信度就不用说了。最后从2013年react发布到现在也四年了,坑踩得差不多了。


2.项目的前期准备

先搞个react+react-router+webpack能跑起来的demo,helloworld也可以,具体可以参照官网或http://www.ruanyifeng.com/blog/2015/03/react.html,http://www.ruanyifeng.com/blog/2016/05/react_router.html   

http://www.jianshu.com/p/4df92c335617
UI建议用ant-design-mobile,官网讲的很细
https://mobile.ant.design/docs/react/introduce


3.项目的实战

根据页面和页面的逻辑建好符合自己的文件夹,开始画页面了,这里边有几点注意的也是我做的时候遇到的问题:

(1)css在react中的写法

,网上有很多的例子比如css in js ,CSS Modules,我觉得都不够灵活,和之前我们的写法差别太大,我是采用直接引入css的方式来做的


import React from 'react';
import '../../css/ious.less';
export default class IousAgreement extends React.Component {
    render() {
        var a = ['a','b','c']
        return (
            <div>
                {a.map((item,index) => {
                    return <p key={index} className="txt">this is{item}</p>
                })}
                这是协议页面
            </div>
        );
    };
    componentDidMount(){
        document.title = '协议'
    }
}

less里边还是按照咱们以前的方式写,很爽,当然这离不开神器webpack

{ test: /\.less$/, exclude: /node_modules/, loader: 'style-loader!css-loader!postcss-loader!less-loader' },

网上很多webpack的配置,webpack2的官网也很详细,建议大家看下

(2)fetch低端机不能发出请求

ios低端机和红米手机有问题,主要是profill的问题,所以在请求里需加上。

require('es6-promise').polyfill();
require('isomorphic-fetch');

然后在使用fetch

(3)后端返回maplist对象

前端处理习惯数组了,后端有时候会给你返回list对象,那么前端就需要通过先获取object中的key然后遍历key来获取value.

    let list = Object.keys(tf).sort().reverse().map((name, indexs) => {
      return <div key={indexs}>
        <div class="popup-title">{name}</div>
        <ul>
          {group_bills[name].map((item, index) => {
            return <li key={index} onClick={this.reloadPage.bind(this, item.billId, item.billMonth)}>
              <p>
                <i>{item.serNo.slice(-2)}月账单</i>
              </p>
              <span class="iconfont icon-icon-angle-right"></span>
            </li>
          })}
        </ul>
      </div>
    })

(4)心中时刻想着状态驱动数据变化

不要总想着通过dom 获取,尽量使用state来驱动视图的变化,例如:

{
    this.state.amount
    ?
    <div class="detail-tip">有退款{this.state.amount}元,已退回</div>
    :
    ''
}

(6)react-router2.X ios机子上页面一直处于加载中

router后边的参数导致?k_123之类的,去掉就好了

import { Router, useRouterHistory ,Route, IndexRoute} from 'react-router'
import { createHashHistory } from 'history'
// useRouterHistory creates a composable higher-order function
const appHistory = useRouterHistory(createHashHistory)({ queryKey: false })

(6)自己封装的js引入

webpack中配置
const CopyWebpackPlugin = require('copy-webpack-plugin');//处理自己封装的js
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, 'src/js/encrypt'),
        to: 'static/encrypt',
        ignore: ['.svn']
      },
      {
        from: path.resolve(__dirname, 'src/js/utils'),
        to: 'static/utils',
        ignore: ['.svn']
      }
    ])

jsx中引入图片,要使用require

<img src={require('../../images/noious.jpg')}

东西还有很多,我这里主要和大家分享这六点,欢迎大家拍砖


4项目的总结
其实还有很多的细节,但是其他的解决起来谷歌很快能找到,我就不一一赘述了。整个项目逻辑还算可以所以没有引入react-redux,后期我会加入再和大家分享。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
作为前端使用React、TypeScript、React Router、Redux、Axios、Ant Design和Sass开发ERP软件项目的职责描述,主要包括以下几个方面: 1. 分析需求和设计界面:与产品经理、设计师等团队成员合作,分析用户需求和产品设计,设计符合用户需求的界面,并提供良好的用户体验。 2. 使用React和TypeScript开发组件:根据设计稿或需求文档,使用React和TypeScript开发可复用的组件,利用类型检查提高代码的可靠性和可维护性。 3. 使用React Router实现路由管理:使用React Router进行页面之间的导航和路由管理,确保页面之间的跳转和参数传递的正常。 4. 使用Redux进行状态管理:使用Redux进行全局状态的管理,包括定义和处理数据流、异步操作、状态持久化等,确保数据的一致性和可控性。 5. 使用Axios进行网络请求:使用Axios库发送HTTP请求与后端API进行数据交互,并处理请求的错误和异常情况。 6. 使用Ant Design进行UI开发:使用Ant Design提供的组件库进行界面开发,保证界面的一致性和美观性,并根据需求进行自定义样式。 7. 使用Sass进行样式管理:使用Sass预处理器编写可复用的样式代码,提高样式开发效率,并保持样式的可维护性。 8. 优化性能和用户体验:通过前端优化技术(如代码分割、懒加载、缓存等),提升ERP软件的性能和用户体验,确保页面加载速度快、操作流畅。 9. 跨浏览器兼容性测试:测试并确保ERP软件在各种主流浏览器(如Chrome、Firefox、Safari等)下的正常运行,并解决兼容性问题。 10. 代码版本管理和团队协作:使用版本管理工具(如Git)管理代码,与团队成员协作开发,参与代码评审和项目迭代。 11. 系统维护和故障排除:及时响应用户反馈并解决软件中出现的前端问题,修复bug,确保ERP软件的稳定运行。 总的来说,前端使用React、TypeScript、React Router、Redux、Axios、Ant Design和Sass开发ERP软件项目的职责是负责开发和维护ERP软件的前端界面和功能,与后端进行数据交互,优化性能和用户体验,并与团队成员协作推动项目的成功交付。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值