首页
/ Ecstatic 项目技术文档

Ecstatic 项目技术文档

2024-12-24 09:16:00作者:侯霆垣

1. 安装指南

1.1 使用 npm 安装

1.1.1 作为库安装

要将 Ecstatic 作为库安装到你的项目中,请在项目目录下运行以下命令:

npm install --save ecstatic

1.1.2 作为 CLI 工具安装

如果你希望将 Ecstatic 作为命令行工具使用,可以全局安装:

npm install ecstatic -g

或者,你也可以在本地安装并使用 npm runscripts 将其添加到 $PATH,或者直接引用 ./node_modules/.bin/ecstatic

2. 项目的使用说明

2.1 使用示例

2.1.1 与 Express 4.x 一起使用

'use strict';

const express = require('express');
const ecstatic = require('ecstatic');
const http = require('http');

const app = express();

app.use(ecstatic({
  root: `${__dirname}/public`,
  showdir: true,
}));

http.createServer(app).listen(8080);

console.log('Listening on :8080');

2.1.2 使用原生 HTTP 服务器

'use strict';

const http = require('http');

const ecstatic = require('ecstatic')({
  root: `${__dirname}/public`,
  showDir: true,
  autoIndex: true,
});

http.createServer(ecstatic).listen(8080);

console.log('Listening on :8080');

2.1.3 允许 fall through

ecstatic({ root: __dirname + '/public', handleError: false })

2.1.4 使用 CLI

ecstatic ./public --port 8080

3. 项目API使用文档

3.1 ecstatic(opts)

在 Node.js 中,传递一个选项对象给 ecstatic,它将返回一个中间件函数。

const opts = {
  root: path.join(__dirname, 'public'),
  baseDir: '/',
  autoIndex: true,
  showDir: true,
  showDotfiles: true,
  humanReadable: true,
  hidePermissions: false,
  si: false,
  cache: 'max-age=3600',
  cors: false,
  gzip: true,
  brotli: false,
  defaultExt: 'html',
  handleError: true,
  serverHeader: true,
  contentType: 'application/octet-stream',
  weakEtags: true,
  weakCompare: true,
  handleOptionsMethod: false,
}

如果 opts 是一个字符串,它将被分配给 root 文件夹,其他选项将设置为默认值。

3.2 CLI 模式

在 CLI 模式下,所有选项都与上述相同,但通过 optimist 风格传递。port 默认值为 8000。如果没有传递 dir--root dir 参数,Ecstatic 将服务当前目录。Ecstatic 还尊重 PORT 环境变量。

3.3 选项详解

3.3.1 opts.root / --root {root}

opts.root 是你希望服务的目录。

3.3.2 opts.host / --host {host}

在 CLI 模式下,opts.host 是你希望 Ecstatic 监听的主机。默认值为 0.0.0.0。可以通过 --host 标志或 HOST 环境变量覆盖。

3.3.3 opts.port / --port {port}

在 CLI 模式下,opts.port 是你希望 Ecstatic 监听的端口。默认值为 8000。可以通过 --port 标志或 PORT 环境变量覆盖。

3.3.4 opts.baseDir / --baseDir {dir}

opts.baseDir 默认为 /,但可以更改以允许你的静态文件从特定路由提供服务。

3.3.5 opts.cache / --cache {value}

自定义缓存控制。

3.3.6 opts.showDir / --no-showDir

关闭目录列表。

3.3.7 opts.showDotfiles / --no-showDotfiles

从目录列表中排除点文件。

3.3.8 opts.humanReadable / --no-human-readable

如果启用了 showDir,添加人类可读的文件大小。

3.3.9 opts.hidePermissions / --hide-permissions

如果启用了 hidePermissions,文件权限将不会显示。

3.3.10 opts.headers / --H {HeaderA: valA} [--H {HeaderB: valB}]

在每个响应上设置头。

3.3.11 opts.si / --si

如果启用了 showDirhumanReadable,打印文件大小时使用基数 1000 而不是基数 1024。

3.3.12 opts.autoIndex / --no-autoindex

当请求 /path/ 时,服务 /path/index.html

3.3.13 opts.defaultExt / --defaultExt {ext}

启用默认文件扩展名。

3.3.14 opts.gzip / --no-gzip

默认情况下,Ecstatic 将服务 ./public/some-file.js.gz 而不是 ./public/some-file.js

3.3.15 opts.brotli / --brotli

服务 ./public/some-file.js.br 而不是 ./public/some-file.js

3.3.16 opts.serverHeader / --no-server-header

设置 opts.serverHeaderfalse 以关闭在所有响应上设置 Server 头。

3.3.17 opts.contentType / --content-type {type}

设置默认的 Content-Type 头值。

3.3.18 opts.mimeTypes / --mime-types {filename}

添加新的或覆盖一个或多个 MIME 类型。

3.3.19 opts.handleError

关闭 handleErrors 以允许 fall-through。

3.3.20 opts.weakEtags / --no-weak-etags

设置 opts.weakEtagsfalse 以生成强 ETag 而不是弱 ETag。

3.3.21 opts.weakCompare / --no-weak-compare

关闭 weakCompare 以禁用弱比较函数。

3.3.22 opts.handleOptionsMethod / --handle-options-method

设置 handleOptionsMethodtrue 以响应 OPTIONS 调用。

3.3.23 opts.cors / --cors

这是一个便利设置,用于快速启用跨域资源共享。

4. 项目安装方式

4.1 使用 npm 安装

npm install --save ecstatic

4.2 全局安装 CLI 工具

npm install ecstatic -g

4.3 本地安装并使用

npm install ecstatic

然后可以使用 ./node_modules/.bin/ecstatic 来运行 CLI 工具。

热门项目推荐
相关项目推荐

项目优选

收起
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
48
38
PDFMathTranslatePDFMathTranslate
PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/Docker
Python
31
3
open-eBackupopen-eBackup
open-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。
HTML
69
51
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
173
41
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
165
34
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
249
63
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
25
17
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
892
0
smart-adminsmart-admin
SmartAdmin国内首个以「高质量代码」为核心,「简洁、高效、安全」中后台快速开发平台;基于SpringBoot2/3 + Sa-Token + Mybatis-Plus 和 Vue3 + Vite5 + Ant Design Vue 4.x (同时支持JavaScript和TypeScript双版本);满足国家三级等保要求、支持登录限制、接口数据国产加解密、高防SQL注入等一系列安全体系。
Java
19
3
杨帆测试平台杨帆测试平台
扬帆测试平台是一款高效、可靠的自动化测试平台,旨在帮助团队提升测试效率、降低测试成本。该平台包括用例管理、定时任务、执行记录等功能模块,支持多种类型的测试用例,目前支持API(http和grpc协议)、性能、CI调用等功能,并且可定制化,灵活满足不同场景的需求。 其中,支持批量执行、并发执行等高级功能。通过用例设置,可以设置用例的基本信息、运行配置、环境变量等,灵活控制用例的执行。
JavaScript
11
2