推荐词典: 精装 - 牛津高阶双解第 10 版完美版(OALDPE)。
下载完该词典后,请进一步参考 词典适配说明。
-
安装 node.js
-
下载项目
git clone --recurse-submodules https://github.com/wamich/js-mdx-server.git
-
安装依赖:
npm install # 或者 pnpm install
命令行参数
npx tsx main.ts -h
当前版本: v0.2
Usage(使用): npx tsx main.ts [options]
Options(参数说明):
-h, --help 显示帮助信息
-p, --port: (可选)。服务运行端口,默认端口:3000
-d, --dir: (必填)。请指定绝对路径!示例如下:
1. 一个 mdx 文件时,dir 参数为: *父级目录* 的绝对路径。
└── *父级目录*
└── oaldpe.mdx
2. 多个 mdx 文件时,dir 参数为: *祖父级目录* 的绝对路径。
└── *祖父级目录*
├── 精选牛津十
│ ├── oaldpe.mdx
│ ├── oaldpe.mdd
│ ├── oaldpe1.mdd
│ ├── oaldpe2.mdd
│ ├── oaldpe3.mdd
│ └── oaldpe4.mdd
└── 21 世纪英汉词典
└── 21 世纪英汉词典.mdx
-
运行方式一:(直接运行)
npx tsx main.ts --dir='你的目录!' --port=3000 # mac 示例: npx tsx main.ts --dir='/Users/ming/dict-workspace/dictionaries' --port=3000 # win 示例: npx tsx main.ts --dir='C:\Users\Ming\Downloads\OALD 2024.09' --port=3000
-
运行方式二:(调试运行)
- 据实修改 package.json 中,scripts 字段中 --dir 参数、--port 参数。
{ "scripts": { "dev": "tsx watch main.ts --dir='/Users/ming/dict-workspace/dictionaries' --port=3000" } }
- 执行:
npm run dev
-
当后续存在更新时
# 1. 更新代码 git pull --recurse-submodules # 2. 安装依赖 npm install # 或者 pnpm install # 3. 重新运行 # 见上节: B. 运行
-
main.ts: 程序主入口
-
injection.html: 公共的注入内容,每个词典都会注入。参考 ninja33/mdx-server
-
如需为特定 mdx 词典定制或修复时,一般有几种方法:
- 直接修改 mdx 词典引用的 js 或 css 文件
- 可在 该 mdx 词典目录下,新建一个 html 文件,以实现注入特定的需求。示例:
<!-- 如为单独的词典(CED_231010_v231014.mdx),进行自定义。 --> <!-- 原词典内容:特殊单词之间没有空格,而采用是边距 margin 隔开。 --> <script> // inject js document.querySelectorAll("div.ced23 a").forEach((a) => { // 特殊单词前后插入空格字符串 a.insertAdjacentText("beforebegin", " "); a.insertAdjacentText("afterend", " "); }); </script> <style> /* inject css */ div.ced23 a { /* 禁止边距 */ margin: 0px !important; } </style>
- 本地
# 通过 Dockerfile 构建镜像,名称为:js-mdx-server:0.2
docker build -t js-mdx-server:0.2 .
- NAS
# 指定platform
docker build --platform=linux/amd64 -t js-mdx-server-nas:0.2 .
# 将镜像导出
docker image save -o ./js-mdx-server-nas-0.2.tar js-mdx-server-nas:0.2
# 将镜像上传至NAS中
- 本地
docker run -d \
-p 3000:3000 \
-p 9001-9005:9001-9005 \
-e SUB_PORT_START=9001 \
-e SUB_PORT_END=9005 \
-v ~/dict-workspace/dictionaries:/root/dictionaries \
--name js-mdx-server \
js-mdx-server:0.2
-
主服务端口 : [容器内]主服务端口
-p 3000:3000
‼️ 主服务端口: 3000,可修改‼️ [容器内]主服务端口: 3000,不可修改
-
子服务端口范围 : [容器内]子服务端口范围
-p 9001-9005:9001-9005
‼️ 预留端口范围:- 范围之差 应当 大于 挂载目录下 mdx 词典目录的数量,例中的范围 9001-9005,即允许最多 5 个本地 mdx 词典目录
‼️ 本机的端口范围 和 容器的端口范围 必须保持一致!!
-
子服务端口(起始值)
-e SUB_PORT_START=9001
‼️ 上述范围的起始值
-
子服务端口(结束值)
-e SUB_PORT_END=9005
‼️ 上述范围的结束值
-
目录映射,本地词典目录 : [容器内]词典目录
-v ~/dict-workspace/dictionaries:/root/dictionaries
‼️ 本地词典目录: 示例(~/dict-workspace/dictionaries),请修改‼️ [容器内]词典目录: /root/dictionaries,不可修改
-
NAS
# 在 NAS 中选择上传的镜像文件,并导入
# 参照上述运行容器的命令行信息,配置容器