@dsinni/connect-history-api-fallback

中文文档
1.6.0发布于 2021/09/28MITCommonJS零依赖近 30 天下载 3422

为已存在的目录提供倒置,以便 HTML 5 历史 API 可用.

中文使用文档
文档目录9 节
  1. 目录
  2. 导言
  3. 使用量
  4. 选项
  5. 指数
  6. 重写
  7. 动词
  8. html 接受信头
  9. 禁用点规则

连接历史- api- fall- back

中间软件通过指定的索引页向代理请求,用于使用 HTML5 History API 的单页应用程序 .

Build Status Dependency Status

NPM

目录

导言

单页应用程序通常只使用一个索引文件,即 由网页浏览器访问: 通常 index.html。在应用程序中导航 然后通常在 JavaScript 的帮助下使用它处理 HTML5 历史 API。 。 。 . 当用户点击刷新按钮或直接使用时, 会产生问题 访问登陆页面以外的页面,例如:. /help 或者说 /help/online 由于网络服务器绕过索引文件在此位置查找文件. 由于您的应用程序是 SPA, 网络服务器将无法尝试获取文件并返回 a 404 - 未找到 给用户的消息.

这个微小的中间器件解决了一些问题。 具体来说,它将会改变 请求的位置到您指定的索引( 默认为 /index.html(中文(简体) ) 凡符合下列标准的请求:

  1. 请求是GET请求
  2. 接受 text/html, (中文(简体) ),
  3. 不是直接文件请求, 即请求的路径不包含 . (DOT) 特性和
  4. 不匹配选项中提供的图案。 重写( 见下文选项)

使用量

中间软件通过国家预防机制提供,很容易被添加.

npm install --save connect-history-api-fallback

导入库

var history = require('connect-history-api-fallback');

现在你只需要在应用程序中添加中间软件

var connect = require('connect');

var app = connect()
  .use(history())
  .listen(3000);

当然,你也可以使用这块中间软件,上面写着:

var express = require('express');

var app = express();
app.use(history());

选项

您可以在获取中间软件时选择将选项传递到库

var middleware = history({});

指数

覆盖索引( 默认) /index.html) (中文(简体) ). 这是当中间软件确定需要重写请求路径时将使用的请求路径.

这不是磁盘上文件的路径 。 而是 HTTP 请求路径 。 下游连接/表达中件负责将这个重写的HTTP请求路径转化为实际响应,例如通过从磁盘读取一个文件.

history({
  index: '/default.html'
});

重写

当请求 URL 匹配 regex 模式时覆盖索引 。 您可以重写为静态字符串, 或者使用一个函数来转换收到的请求 .

以下将重写一个符合 /\/soccer/ 样式改为 /soccer.html。 。 。 .

history({
  rewrites: [
    { from: /\/soccer/, to: '/soccer.html'}
  ]
});

或者可以使用函数来对重写过程拥有更多的控制. 例如,下列清单说明如何将请求 /libs/jquery/jquery.1.12.0.min.js 类似的东西可以通向 ./bower_components/libs/jquery/jquery.1.12.0.min.js。如果在 URL 路径中有一个 API 版本,您也可以使用它.

history({
  rewrites: [
    {
      from: /^\/libs\/.*$/,
      to: function(context) {
        return '/bower_components' + context.parsedUrl.pathname;
      }
    }
  ]
});

函数将总是以具有下列属性的上下文对象来调用 :

  • 解析: 提供URL信息 URL 模块 url.parse。 。 。 .
  • 匹配: 匹配结果阵列 String.match(...)。 。 。 .
  • 请求: HTTP 请求对象.

动词

此中间软件默认不会日志任何信息 。 如果您希望激活日志, 您可以通过 verbose 选项或指定日志函数.

history({
  verbose: true
});

或者用你自己的登录器

history({
  logger: console.log.bind(console)
});

html 接受信头

覆盖默认值 Accepts: 匹配 HTML 内容请求时被询问的标题( 默认 : ['text/html', '*/*']) (中文(简体) ).

history({
  htmlAcceptHeaders: ['text/html', 'application/xhtml+xml']
})

禁用点规则

禁用上述点规则 :

[...]不是一个直接的文件请求,即请求的路径不包含 . (DOT)字符[.]

history({
  disableDotRule: true
})

版本与发布记录

@dsinni/connect-history-api-fallback 共发布 1 个版本,首次发布于 2021/09/28;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.6.0latest2021/09/285 年前

关于 @dsinni/connect-history-api-fallback 的常见问题

@dsinni/connect-history-api-fallback 是什么?

为已存在的目录提供倒置,以便 HTML 5 历史 API 可用.

如何安装 @dsinni/connect-history-api-fallback?

在项目目录运行 npm install @dsinni/connect-history-api-fallback,或使用 pnpm add / yarn add / bun add。

@dsinni/connect-history-api-fallback 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/dsinni__connect-history-api-fallback 是否存在。

@dsinni/connect-history-api-fallback 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dsinni/connect-history-api-fallback 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=0.8。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dsinni/connect-history-api-fallback 可以商用吗?

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

@dsinni/connect-history-api-fallback 的下载量有多少?

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

@dsinni/connect-history-api-fallback 还在维护吗?

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