前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将多页面框架中的 index 页面改成单页面应用框架

将多页面框架中的 index 页面改成单页面应用框架

原创
作者头像
lqmeta
修改2020-07-05 15:01:30
1.7K0
修改2020-07-05 15:01:30
举报
文章被收录于专栏:得一得一

本文基于“基于create-react-app构建多页面应用框架”项目框架,将其中的 index 页面改成单页面应用框架。

使用 react-router-dom 做页面的路由管理:

代码语言:txt
复制
npm i --save react-router-dom

1、修改 index.js

index.js 引入 App.js,页面的路由管理在 App.js 中进行管理。

2、页面路由管理 App.js

使用 react-router-dom 的 HashRouter 对页面进行路由转发。

代码语言:txt
复制
import React from 'react';
import { HashRouter, Route, Switch } from "react-router-dom";

const NoMatch = React.lazy(() => import(/* webpackChunkName: "components/NoMatch" */ './../../components/NoMatch/NoMatch'));
const Home = React.lazy(() => import(/* webpackChunkName: "index/Home" */ './views/Home/Home'));
const Test = React.lazy(() => import(/* webpackChunkName: "index/Test" */ './views/Test/Test'));

function App(props) {

  return (
    <HashRouter>
      <React.Suspense fallback={''}>
        <Switch>
          <Route exact path='/' component={Home} />
          <Route exact path='/test' component={Test} />
          <Route component={NoMatch} />
        </Switch>
      </React.Suspense>
    </HashRouter>
  )
}

export default App;

项目框架的结构

项目框架的结构如下所示:

代码语言:txt
复制
multiple-page
├── README.md
├── config
│   ├── env.js
│   ├── getHttpsConfig.js
│   ├── jest
│   │   ├── cssTransform.js
│   │   └── fileTransform.js
│   ├── modules.js
│   ├── paths.js
│   ├── pnpTs.js
│   ├── webpack.config.js
│   └── webpackDevServer.config.js
├── package.json
├── public
│   ├── favicon.ico
│   ├── logo192.png
│   ├── logo512.png
│   ├── manifest.json
│   └── robots.txt
├── scripts
│   ├── build.js
│   ├── start.js
│   └── test.js
├── src
│   ├── components
│   │   └── NoMatch
│   │       ├── NoMatch.js
│   │       └── NoMatch.less
│   └── views
│       ├── demo
│       │   ├── demo.html
│       │   └── demo.js
│       └── index
│           ├── App.js
│           ├── index.html
│           ├── index.js
│           └── views
│               ├── Home
│               │   ├── Home.js
│               │   └── Home.less
│               └── Test
│                   ├── Test.js
│                   └── Test.less
├── tools.js
└── yarn.lock
  • 访问 index.html 的 Home 页面

http://localhost:3000

  • 访问 index.html 的 Test 页面

http://localhost:3000/#/test

  • index.html HashRouter 路由未匹配到页面时

http://localhost:3000/#/test-no-match

路由未匹配到的页面
路由未匹配到的页面

webpack 增加 less loader

由于 create-react-app 框架默认是没有加入 less loader 的,所以需要我们添加一下。

1、安装依赖

代码语言:txt
复制
npm i --save less less-loader

2、修改 config/webpack.config.js

2.1、定义 lessRegex 和 lessModuleRegex

代码语言:txt
复制
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;

2.2、在 module rules 中配置 less-loader

代码语言:txt
复制
{
  test: lessRegex,
  exclude: lessModuleRegex,
  use: getStyleLoaders(
    {
      importLoaders: 2,
      sourceMap: isEnvProduction && shouldUseSourceMap,
    },
    'less-loader'
  ),
  // Don't consider CSS imports dead code even if the
  // containing package claims to have no side effects.
  // Remove this when webpack adds a warning or an error for this.
  // See https://github.com/webpack/webpack/issues/6571
  sideEffects: true,
},
配置 less-loader
配置 less-loader

项目代码:

将多页面框架中的 index 页面改成单页面应用框架

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 react-router-dom 做页面的路由管理:
    • 1、修改 index.js
      • 2、页面路由管理 App.js
        • 项目框架的结构
        • webpack 增加 less loader
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档