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

React SSR实战:用Express+Webpack搭建服务端渲染架构 服务端渲染(SSR)是提升React应用首屏性能、SEO效果与弱网体验的核心技术。其原理在于将原本在浏览器中执行的HTML生成逻辑迁移至Node.js服务端,实现快速输出完整HTML字符串。技术价值体现在显著降低TTI(Time to Interactive)、提升搜索引擎收录率,并改善Lighthouse评分。典型应用场景包括企业官网、内容型站点、营销落地页等对首屏速度和SEO敏感的项目。本文聚焦React SSR落地实践,深入解析Express选型依据、Webpack双端构建配置差异、数据预取策略及客户 阅读详情
前言:根据公司业务的要求,我最近用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,后期我会加入再和大家分享。

React Router 路由设计本质:路径匹配、组件调度与状态同步 路由在现代前端架构中远不止URL映射,而是应用导航状态的核心机制。其底层涉及路径匹配引擎(如Trie前缀树)、组件渲染调度器(基于element的懒加载与Suspense)和导航状态同步器(useNavigate/useLocation/useParams协同)。技术价值在于实现高性能匹配(O(k)复杂度)、类型安全的动态加载、嵌套路由状态隔离及声明式错误边界。典型应用场景包括中后台多级菜单、权限守卫、多语言路径、SSR数据预取与微前端路径协商。本文深入解析React Router v6的route、pat 阅读详情

相关推荐

Next.js初始架构决策:App Router、SSR/SSG选型与路由设计实战

Next.js作为React生态主流服务端框架,其核心价值在于将路由、数据获取与渲染生命周期深度协同。理解App Router与Pages Router的本质差异,是掌握React Server Components和流式SSR的前提;而SSG、SSR、ISR三种渲染模式的选择,直接决定首屏性能、数据新鲜度与运维成本。在工程落地中,路由结构设计、动态参数预生成、fetch缓存策略及Code Splitting层级控制,共同构成可维护、可预测的前端架构基础。本文结合生产级项目实践,解析从create-next

djai0102的博客 395

React如何使用内置的fetch模块

React如何使用内置的fetch模块1 fetch介绍2 fetch的基本使用3 在.then里面第一个回调函数中处理response4 fetch与axios的区别 1 fetch介绍 fetch是react内置的XMLHttpRequest对象的替代方案,因此获取后台数据可以使用fetch、axios来替代ajax。使用fetch时不需要安装。 2 fetch的基本使用 使用方法: fetch(url, [options]).then(res => { return res.json()

橘猫吃不胖的博客 2749

React PWA 实战:从 HTTPS 到 Service Worker 的全链路配置

PWA(渐进式 Web 应用)是一套基于 Web 标准的可安装、离线可用、类原生体验的技术体系,其核心依赖 HTTPS 安全上下文、Service Worker 网络拦截能力与 manifest.json 安装契约。原理上,Service Worker 作为浏览器与网络间的代理层,通过预缓存、路由策略和生命周期控制实现资源可控交付;manifest.json 则定义启动行为与视觉标识,二者必须与 HTTPS 构成完整信任链。技术价值在于提升首屏速度、降低跳出率、支持主屏幕安装与离线交互,广泛应用于电商中台、

chuoshao2508的博客 439

fetch移动端浏览器兼容问题解决

1,各个浏览器对fetch的支持情况 :http://caniuse.com/#search=fetch 原因:Proimse在低版本上的支持问题, 解决方案: 手动写个文件引入pinkie-promise,判断当前是否有window.Promise,如果没有就把我引入的作为window.Promise.、 实施步骤:(react + webpack项目为例) 1,添加 w

qianzhihe1992110的专栏 9273

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

STM32H743必要外围电路分析

写在前面:这篇博客是我第一次绘制STM32最小系统板的过程记录。 2020-1-11 BOOT STM32采用ARM内核,和ARM处理器一样,都有专门的boot脚决定单片机从何处启动。 在官方数据手册的第105页,我们可以看到 系统复位后,在SYSTICK的第四个上升沿锁存BOOT引脚的值,复位后,BOOT引脚可以由用户自由配置而不会影响系统正常运行。 BOOT引脚决定了自举存储器地址,当BO...

Cui_Hongwei的博客 1万+

fetch在移动端的兼容性问题

前段时间在做移动端H5应用开发过程中,遇到一个奇怪的问题:同样的页面,在IOS比较新的版本上可以正常加载,但是在IOS 10.2.1 上却一直 loading,加载不出来。借助调试工具发现,是在发送 HTTP 请求的过程中报错了,Unhanled promise rejection ,具体的错误截图当时忘记保存了。 刚开始怀疑是IOS 版本的问题,但是同样版本上,其他的H5页面可以正常加载。 然后...

neoveee的博客 4334

二、声明式 Pipeline 语法

选择型参数,一般用于给定几个可选的值,然后选择其中一个进行赋值,例如:parameters { choice(name: ‘CHOICES’, choices: [‘one’, ‘two’, ‘three’], description: ‘’) },表示定义一个名为 CHOICES 的变量,可选的值为 one、two、three;默认情况下,如果定义了某个 stage 的 agent,在进入该 stage 的 agent 后,该 stage 的 when条件才会被评估,但是可以通过一些选项更改此选项。

Cyan_Jiang的博客 1220

React 开发(十六):与 API 交互 - 使用 Fetch 和 Axios 获取数据

Fetch是一个原生 JavaScript API,提供了一个基于 Promise 的方式来进行 HTTP 请求。它简单易用,并且是现代浏览器的标准功能。优点:无需额外引入第三方库,广泛支持于现代浏览器。缺点:不支持请求超时、取消请求等高级功能,错误处理相对简单。Fetch和Axios都可以用于与 API 进行交互,选择其中一个取决于你的需求。Fetch是原生 JavaScript API,适合简单的 API 请求,使用时需要手动处理一些功能。Axios。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1735

Vercel静态站被墙别慌!手把手教你用Cloudflare免费CDN+域名解析搞定DNS污染

本文详细介绍了如何利用Cloudflare免费CDN和域名解析解决Vercel静态网站遭遇DNS污染的问题。通过诊断DNS污染、设计Cloudflare解决方案架构、实战配置步骤以及高级调优技巧,帮助用户快速恢复站点访问并提升防护能力。

weixin_27442001的博客 677

【用ArcGIS制作一张好看的中国月度气温图

要最后选中那个事先调整好的那个数据框,这样其他两个数据框才能和其大小一致。

J_Giser的博客 1017

React 应用中的异步数据请求----fetch,以及fetch的优缺点

React 应用中的异步数据请求----fetch 与Vue.js一样,React官方也没有提供服务器端接口异步请求方案; 可以使用第三方的axios模块,或者H5新增的原生技术:fetch(抓取)---- 有望取代XHR 使用fetch发起GET请求: fetch(url) .then( res=>res.json() )//res就是完整的响应消息;res.body是流对象 .then( data=>console.log(data) ) .catch( err=>consol

人间真的不值得的博客 2945

RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点

本文记录的是利用模块优化的目标检测网络模型。的目的是在不出现过参数化的情况下有效地增加卷积的感受野,从而解决了在感受野扩展中的参数膨胀问题。本文将其加入到深度可分离卷积中,有效降低模型参数量和计算量,并二次创新,使模块更好地捕捉低频特征,增强网络性能。Wavelet Convolutions for Large Receptive Fields小波卷积及其改进的实现代码如下: 四、创新模块 4.1 改进点1⭐ 模块改进方法:加入(第五节讲解添加步骤)。添加后如下:模块改进方法:基于的(第五节讲解添加步骤)

Limiiiing的博客 1504

create react app搭建完整项目,结合antd mobile, react-router-dom从零到整搭建完整移动端项目

ui:antd mobile 路由:react-router-dom request请求:自带的fetch github地址 项目代码:https://github.com/yquanmei/create-react-app 项目创建 npx create-react-app my-app cd my-app npm start ui:antd mobile 安装 npm i antd-mobile 按需加载 一、安装customize-cra npm install react-app-rewired

aSuncat 1029

51单片机 驱动有源/无源蜂鸣器+Proteus仿真

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序

perseverance51博客 2万+

python如何给声音增加回声效果

创建任何声音对象的回声效果。使用sndarray和numpy来创建原始声音的偏移和衰减副本。目前它只是使用硬编码的值来设置回声的数量和延迟。你可以根据自己的需要轻松地重新创建。这段注释说明了make_echo函数的用途和实现方式,即通过pygame的sndarray模块和numpy库来处理声音数据,生成具有回声效果的声音。函数中使用了固定的回声数量和延迟时间,但这些值可以根据用户的需求进行调整。

zhangzhechun的专栏 977

React+Node全栈留言板开发实战与Webpack优化

现代Web开发中,前后端分离架构已成为主流技术范式。通过React构建组件化前端界面,配合Node.js+Express提供RESTful API服务,可以实现高效的开发流程。Webpack作为核心构建工具,其模块化打包能力能有效管理前端依赖,而Express的轻量特性则适合快速搭建后端服务。这种技术组合特别适合需要快速迭代的中小型项目,如留言板、博客系统等应用场景。通过配置Webpack代码分割和缓存策略,结合React的memo优化,能显著提升应用性能。本文以留言板项目为例,详解如何实现前后端联调、解决

chulilang8944的博客 340

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Mobx+Reactjs+Material-UI+Webpack+React-Router 搭建后台管理系统

先讲一下mobx,mobx是一个强大的状态管理工具,相比redux, 更将深入的阐释了面向对象的概念,mobx官网的几个实例demo也写得很精彩,大家可以好好拜读一下。https://github.com/mobxjs/awesome-mobx#example-projects中有很多封装得不...

chongchoumang3266的博客 654

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

vue2-elm完整开发指南:45个页面从零构建外卖平台的终极教程

vue2-elm是一个基于Vue2构建的完整外卖平台项目,包含45个页面的完整业务流程,从注册登录到下单支付全覆盖。本教程将带你从零开始掌握这个复杂Vue项目的开发方法,适合希望提升实战能力的前端开发者。 ## 为什么选择vue2-elm作为学习项目? 对于前端开发者来说,找一个既实用又有足够复杂度的项目练习并不容易。vue2-elm项目恰好满足这一需求,它具有以下特点: - **完整的业务

gitblog_00352的博客 611

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Vue2-elm项目深度解析:如何用Vue2打造完整外卖平台生态圈

想要学习如何用Vue2构建一个完整的外卖平台应用吗?🤔 Vue2-elm项目就是一个绝佳的学习案例!这个项目展示了如何利用Vue2技术栈打造一个功能完善的外卖平台生态圈,从用户注册登录到商品浏览、购物车管理、下单支付等完整流程一应俱全。本文将为您深度解析这个项目的技术架构和实现思路,帮助您快速掌握Vue2大型项目开发的核心技巧。 ## 📱 项目概述与技术架构 Vue2-elm是一个基于Vu

gitblog_00965的博客 991

html5从入门到放弃,react从入门到放弃实战笔记分享

环境配置npm 安装包npm init 初始化项目,生成package.json文件,内部显示了所有安装的包npm install -g packageName 全局安装npm install --save packageName 当前项目安装webpack 把所有依赖包整合成bundle.js文件webpack 编译打包webpack --watch 自动编译打包webpack-dev-ser...

weixin_42135773的博客 283

React实现web音乐app(可预览)

暂未实现的功能: 路由的过渡效果(本来想用react-transition-group,但没能成功,就用了css动画代替) 路由组件缓存(路由后退时,会重新请求页面,滚动条的位置没有保存,页面刷新) 图片懒加载(没有实现图片懒加载) 上面的功能在react中实现或许有点麻烦,但是在vue中都可以很好的实现,比如vue自带了过渡组件,路由keep-alive,和 vue-lazyload 。 ...

张致豪 2335

React篇3--ajax、路由、UI组件库、redux

React本身只关注界面,并不包含发送ajax请求的代码。前端应用需要通过ajax请求与后台进行交互(json数据)。react应用中需要集成第三方ajax库或自己封装。一个路由就是一个映射关系(key:value),key是路径,value可能是function或component。每一个路径(导航栏中每一项)对应一个组件。

qq_51476492的博客 271

使用React模仿大众点评

技术栈: https://github.com/Topthinking/react-webapp-dianping react + react-router4.1 + redux + less + ES6/7 + webpack + fetch + bundle-loader 下载 git clone https://github.com/Topthinking/react-w

大灰狼的小绵羊哥哥的博客 4659

React开发环境搭建指南:从CRA到Vite的完整实践

前端开发中,构建工具是提升开发效率的核心基础设施。其原理在于通过模块化打包、代码转换和资源优化,将现代JavaScript代码转换为浏览器可执行的格式。在React生态中,构建工具的技术价值尤为突出,它们不仅解决了JSX编译、热更新等工程问题,还通过优化开发体验加速了项目迭代。常见的应用场景包括快速原型开发、企业级应用构建和教学演示。本文聚焦于React项目初始化,详细对比了Create React App(CRA)和Vite两种主流方案。CRA作为官方脚手架,提供了开箱即用的零配置体验,特别适合初学者快速

weixin_34203832的博客 1108

Node.js 项目构建之 Webpack 深度配置

本文深入探讨了Webpack在Node.js项目中的深度配置技巧,涵盖代码分割、环境隔离、开发体验优化等核心价值。通过实战案例展示了如何正确设置构建目标、处理外部依赖、实现热更新等关键配置,帮助开发者提升Node.js项目的构建效率和性能。特别针对生产环境提供了多阶段构建、内存编译等最佳实践方案。

weixin_30684743的博客 292
上一篇: 那些年hybrid遇到的兼容性bug
下一篇: css BFC 原理
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值