You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Nodejs将文本文件内容存入字典并实现简易翻译服务

实现思路

  • 服务启动时预加载词库并构建翻译映射表,避免每次请求重复读取文件
  • 解析请求URL获取翻译方向和待翻译内容
  • 遍历待翻译单词匹配映射表,拼接返回翻译结果

完整可运行代码

const http = require('http');
const fs = require('fs');
const url = require('url');

const hostname = '127.0.0.1';
const port = 5000;

// 服务启动时预加载词库构建翻译字典
const translateMap = {};
// 同步读取词库文件
const dictContent = fs.readFileSync('Spanish.txt', 'utf8');
// 按行拆分文本
const lineList = dictContent.split('\n');
// 遍历每行构建映射表
for (let line of lineList) {
  line = line.trim();
  if (!line) continue; // 跳过空行
  // 按TAB分割成英文和西班牙文
  const [enWord, esWord] = line.split('\t');
  if (enWord && esWord) {
    translateMap[enWord.toLowerCase()] = esWord;
  }
}

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain; charset=utf-8');

  // 解析URL路径
  const pathname = url.parse(req.url).pathname;
  const pathSegments = pathname.split('/').filter(seg => seg);

  // 匹配翻译请求路径格式 /translate/e2s/xxx
  if (pathSegments.length === 3 && pathSegments[0] === 'translate' && pathSegments[1] === 'e2s') {
    // 提取待翻译内容,把+替换为空格,拆成单词
    const queryStr = decodeURIComponent(pathSegments[2]);
    const wordList = queryStr.replaceAll('+', ' ').split(' ');
    // 遍历单词翻译
    const translatedList = wordList.map(word => {
      return translateMap[word.toLowerCase()] || word;
    });
    // 返回翻译结果
    res.end(translatedList.join(' '));
    return;
  }

  // 非翻译请求返回提示
  res.end('请访问 /translate/e2s/[待翻译内容] 使用翻译服务');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
  console.log(`词库加载完成,共加载${Object.keys(translateMap).length}条词汇`);
});

关键修改说明

  • 把词库读取逻辑移到了服务启动阶段,只用执行一次,性能更高
  • 修正了词库分割逻辑:先按行拆分,每行再按TAB分割得到词汇对,存入translateMap字典
  • 移除了原来请求逻辑开头的res.end('Hello World'),避免还没处理逻辑就返回响应
  • 增加了URL路径解析逻辑,识别翻译请求的路径参数,把待翻译内容拆分后逐个匹配字典
  • 未匹配到的单词会直接返回原词,避免内容缺失

内容的提问来源于stack exchange,提问作者umijs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:27:02