react-router-dom vs react-router
React 路由
react-router-domreact-router类似的npm包:

React 路由

React 路由库是用于在 React 应用程序中实现客户端路由的工具。它们允许开发者创建单页应用(SPA),在不重新加载整个页面的情况下,根据用户的交互动态地改变页面内容。react-router 是一个核心库,提供了路由的基本功能,而 react-router-dom 则是为浏览器环境提供的扩展,包含了与 DOM 相关的路由组件和功能。

npm下载趋势

3 年

GitHub Stars 排名

统计详情

npm包名称
下载量
Stars
大小
Issues
发布时间
License
react-router-dom28,752,89056,2685.46 kB1505 天前MIT
react-router056,2684.18 MB1505 天前MIT

功能对比: react-router-dom vs react-router

环境支持

  • react-router-dom:

    react-router-dom 专为浏览器环境设计,提供了与 DOM 交互的组件和 API,例如 <Link><Route>useHistory。它适合构建传统的 Web 应用程序。

  • react-router:

    react-router 适用于任何 JavaScript 环境,包括浏览器、服务器和移动设备。它提供了与环境无关的路由功能,适合需要跨平台支持的应用。

DOM 交互

  • react-router-dom:

    react-router-dom 提供了一系列与 DOM 交互的组件和工具,简化了链接、导航和历史记录管理。它包括 <Link><NavLink><BrowserRouter> 等组件,方便开发者快速集成路由功能。

  • react-router:

    react-router 不直接处理 DOM 交互,开发者需要自己实现与 DOM 相关的功能。它提供了路由逻辑和状态管理,但不包含任何与浏览器交互的组件。

链接组件

  • react-router-dom:

    react-router-dom 提供了 <Link><NavLink> 组件,方便在应用中创建导航链接。它们支持动态路径、样式和活动状态,增强了用户体验。

  • react-router:

    react-router 本身不提供链接组件,开发者需要自行实现链接功能。它专注于路由逻辑,而不是 UI 组件。

示例代码

  • react-router-dom:

    react-router-dom 示例代码

    import { BrowserRouter, Route, Link } from 'react-router-dom';
    
    const App = () => (
      <BrowserRouter>
        <nav>
          <Link to="/">首页</Link>
          <Link to="/about">关于</Link>
        </nav>
        <Route path="/" exact component={Home} />
        <Route path="/about" component={About} />
      </BrowserRouter>
    );
    
  • react-router:

    react-router 示例代码

    import { Router, Route } from 'react-router';
    import { createMemoryHistory } from 'history';
    
    const history = createMemoryHistory();
    
    const App = () => (
      <Router history={history}>
        <Route path="/" component={Home} />
        <Route path="/about" component={About} />
      </Router>
    );
    

如何选择: react-router-dom vs react-router

  • react-router-dom:

    选择 react-router-dom 如果您正在构建一个浏览器应用程序,并且需要使用与 DOM 相关的组件和功能,例如链接、导航和浏览器历史记录管理。

  • react-router:

    选择 react-router 如果您正在构建一个非浏览器环境的应用程序,例如 React Native,或者您只需要路由的核心功能,而不需要与 DOM 直接交互。

react-router-dom的README

This package simply re-exports everything from react-router to smooth the upgrade path for v6 applications. Once upgraded you can change all of your imports and remove it from your dependencies:

-import { Routes } from "react-router-dom"
+import { Routes } from "react-router"