@equinor/fusion-framework-module-navigation

中文文档
8.0.0发布于 2026/11/12ISCTypeScriptES Module近 30 天下载 1.2万

利用反应路由器7提供路由和导航能力的融合框架导航模块

中文使用文档
文档目录18 节
  1. 特征
  2. 安全操作遥测
  3. 安装
  4. 使用量
  5. 启用模块
  6. 程序导航
  7. 可观测导航状态
  8. 创建 href / URL
  9. 路由器整合(遗产)
  10. 历史类型
  11. 导航屏蔽
  12. API 参考
  13. 职能
  14. 类
  15. 接口类型( T)
  16. 活动
  17. 配置
  18. 另见

@equinor/核聚变-框架-模块-导航

运行和导航模块 融合框架 具有可观察到的状态管理和自动基名本地化.

特征

  • 路径本地化 消费者采用清洁道路(/users),而历史堆栈则收到完整的路径(/apps/my-app/users) (中文(简体) ).
  • 可观察状态 ——作为RxJS观测器暴露的导航状态(state$与 shareReplay 语义.
  • 多历史类型 ——浏览器(路径名),散列(#/path),和内存(没有 URL 更改).
  • 路由器兼容性 —— 说 createRouter() 创建 @remix-run/router 与框架历史连接的实例.
  • 导航屏蔽 - 拦截导航 history.block() 并随意重试.
  • 遥测事件( E) ——发出 NavigateEvent 编号 : NavigatedEvent 通过遥测模块跟踪动作.

安全操作遥测

INavigationProvider 扩展共享 TelemetryConnectable 合同。 导航保留 现有 Navigation::* 而不是采用新的业务记录名称.

初始化后,导航无需等待即可连接可用的主机遥测 在启动时。 明确 setTelemetry(provider) 优先; setTelemetry(undefined) 禁用自动连接。 自动接线报告 Navigation::navigated 没有每个动作调试聊天.

遥测不再包括地点、以前地点、路由状态或动作 载荷。 使用静态的清晰提供器动作事件 Navigation::action 名称只包含受控动作类型。 更新旧动态名称的消费者 或有效载荷场。 导航商务事件和通路行为不变. 见 操作遥测。 。 。 .

安装

pnpm add @equinor/fusion-framework-module-navigation

使用量

启用模块

import { enableNavigation } from '@equinor/fusion-framework-module-navigation';

// Minimal — basename only
enableNavigation(configurator, '/apps/my-app');

// Advanced — full configuration
enableNavigation(configurator, {
  configure: (config) => {
    config.setBasename('/apps/my-app');
    config.setHistory(createHistory('browser'));
  },
});

程序导航

const navigation = framework.modules.navigation;

navigation.push('/users');             // adds history entry
navigation.replace('/login');          // replaces current entry
navigation.push('/users', { id: 1 }); // with state

console.log(navigation.path.pathname); // '/users' — basename removed

可观测导航状态

import { filter } from 'rxjs';

navigation.state$.subscribe(({ action, location }) => {
  console.log(action, location.pathname); // 'PUSH' '/users'
});

navigation.state$.pipe(
  filter(({ action }) => action === 'POP'),
).subscribe(({ location }) => {
  console.log('Back/forward to', location.pathname);
});

创建 href / URL

// basename = '/apps/my-app'
navigation.createHref('/users');
// → '/apps/my-app/users'

navigation.createURL('/users');
// → URL { pathname: '/apps/my-app/users', ... }

路由器整合(遗产)

说明: 偏爱 @equinor/fusion-framework-react-router 新申请.

import type { AgnosticRouteObject } from '@remix-run/router';

const routes: AgnosticRouteObject[] = [
  { path: '/', element: <Home /> },
  { path: '/users/:id', element: <UserDetail /> },
];

const router = navigation.createRouter(routes);

总是使用 navigation.createRouter() 改为 createBrowserRouter() 直接在提供者外创建路由器 .

历史类型

工厂论证类说明
'browser'BrowserHistory基于路径名的路由通过历史API. 默认.
'hash'BrowserHistory (哈什堆叠)散裂道(#/path) (中文(简体) ). 不需要服务器配置 .
'memory'MemoryHistory内相史. 理想的部件,测试,和SSSR.
import { createHistory } from '@equinor/fusion-framework-module-navigation';

const browserHistory = createHistory('browser');
const hashHistory    = createHistory('hash');
const memoryHistory  = createHistory('memory');

导航屏蔽

const unblock = navigation.history.block((transition) => {
  if (hasUnsavedChanges) {
    showConfirmDialog(() => {
      unblock();          // remove blocker first
      transition.retry(); // then retry navigation
    });
  } else {
    unblock();
    transition.retry();
  }
});

API 参考

职能

导出说明
enableNavigation(configurator, opts?)在配置器上注册导航模块.
createHistory(type, ...args)工厂 BrowserHistory,基于散列 BrowserHistory,或 MemoryHistory。 。 。 .

类

导出说明
NavigationProvider模块提供者——管理状态,本地化和生命周期.
NavigationConfigurator有Zod验证的流利配置构建器.
BrowserHistory由浏览器支持的历史 pushState 编号 : replaceState。 。 。 .
MemoryHistory历史以内存为后盾.

接口类型( T)

导出说明
INavigationProvider通航供应商的公开合同.
INavigationConfigurator配置形状( E)basename, (中文(简体) ), history, (中文(简体) ), telemetry, (中文(简体) ), eventProvider) (中文(简体) ).
History历史实例合同(可观察状态+导航方法).
Path{ pathname, search, hash }
LocationPath 以 state 财务报告和审定财务报表 key。 。 。 .
Tostring | Partial<Path> ——导航作业目标.
Action数字 : Pop, (中文(简体) ), Push, (中文(简体) ), Replace。 。 。 .
NavigationUpdate{ delta, action, location } 发射者 state$。 。 。 .

活动

活动何时可取消
NavigateEvent (单位:千美元)onNavigate(中文(简体) )导航前对
NavigatedEvent (单位:千美元)onNavigated(中文(简体) )导航后没有

配置

选项类型默认说明
basenamestringundefinedURL 路径前缀从 / 准备到消费者路径 .
historyHistory浏览器历史( 或节点内存)通过 createHistory()。 。 。 .
telemetryITelemetryProvider自动解析跟踪导航事件和错误.
eventProviderIEventModuleProvider自动解析调度 onNavigate 编号 : onNavigated 事件.

另见

版本与发布记录

@equinor/fusion-framework-module-navigation 共发布 103 个版本,首次发布于 2022/11/17;过去 12 个月发布了 24 个版本。

版本发布日期距今
8.0.0latest2026/11/121 天前
8.0.0-next.1next2026/11/112 天前
8.0.0-next.02026/10/2816 天前
7.0.122026/10/1727 天前
7.0.12-trusted-publishing-20261015-9dfe7602cd2a49a8a9df00d62c26e7304a82a85atrusted-publishing-202610152026/10/1629 天前
7.0.112026/10/121 个月前

其他发布通道:navigator → 1.0.7-navigator.0,apploader → 5.0.3-apploader-be21a6b60eb13eee8bf869e75002d8634e9c50a9,cli-search-index → 6.0.1-cli-search-index.0,msal-v5 → 6.0.1-msal-v5.0,trusted-publishing-20261015 → 7.0.12-trusted-publishing-20261015-9dfe7602cd2a49a8a9df00d62c26e7304a82a85a,next → 8.0.0-next.1。

关于 @equinor/fusion-framework-module-navigation 的常见问题

@equinor/fusion-framework-module-navigation 是什么?

利用反应路由器7提供路由和导航能力的融合框架导航模块

如何安装 @equinor/fusion-framework-module-navigation?

在项目目录运行 npm install @equinor/fusion-framework-module-navigation,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:rxjs(^7.0.0)、@remix-run/router(^1.0.0)、@equinor/fusion-observable(^9.2.6)、@equinor/fusion-framework-module(^6.2.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@equinor/fusion-framework-module-navigation 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@equinor/fusion-framework-module-navigation 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@equinor/fusion-framework-module-navigation 可以商用吗?

@equinor/fusion-framework-module-navigation 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@equinor/fusion-framework-module-navigation 的下载量有多少?

根据 npm 官方下载统计,@equinor/fusion-framework-module-navigation 在 2026/10/14 – 2026/11/12 这 30 天内被下载 12,114 次,日均约 404 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@equinor/fusion-framework-module-navigation 还在维护吗?

最新版本 8.0.0 发布于 2026/11/12(1 天前);至今共发布 103 个版本,其中过去 12 个月发布了 24 个;首次发布于 2022/11/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。