向 doubao.com/chat/ 提问:
node.js + js-mdict 作为后端,vue 3 + vite 作为前端,编写在线查询英汉词典
后端部分(express + js-mdict )
1. 项目结构
首先,创建一个项目目录,结构如下:cd \js
mkdir mydict-app
mydict-app/
├── public/
│ ├── index.html
│ ├── styles.css
│ └── script.js
├── server/
│ └── app.js
├── package.json
└── README.md
英汉词典文件(*.mdx , *.mdd) 已经放在 /js/testdict/
在 public 中添加一些英汉字典的样式:oalecd8e.css , oalecd8e.js , uk_pron.png, us_pron.png,
copy jquery-3.2.1.min.js pulibc\jquery.js
2. 安装依赖
在项目根目录下运行以下命令,初始化项目并安装所需的依赖:
cd mydict-app
npm init -y
npm install express cors
added 69 packages in 6s
npm install js-mdict
added 3 packages in 2s
3. 编写后端代码
创建 app.js 文件,代码如下:
const express = require('express');
const cors = require('cors');
const Mdict = require('js-mdict');
const path = require('path');
const app = express();
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// 提供静态文件
app.use(express.static(path.join(__dirname, '../public')));
// 加载MDict词典文件
//const mdict = new Mdict('path/to/your/dictionary.mdx');
const mdx = new Mdict.MDX('/js/testdict/oale8.mdx');
const mdd = new Mdict.MDD('/js/testdict/oale8.mdd');
const isWord = (txt) => {
// 只允许字母、/、空格、-
return /^[a-zA-Z \/\-]+$/.test(txt);
};
// 处理查询请求,响应:单词的定义(html)
app.get('/query', (req, res) => {
let word = req.query.word;
if (!word) {
return res.status(400).json({ error: 'No word input'});
}
if (word) {
let data = mdx.lookup(word);
console.log("cha: "+ word);
if(data.definition){
res.send(data.definition);
} else {
res.status(400).send('this word not found');
}
} else {
res.status(400).send('error: No word input');
}
});
// 处理查询请求,响应:单词的定义(json)
app.get('/search', async (req, res) => {
const word = req.query.word;
if (!word) {
return res.status(400).json({ error: 'No word input'});
}
console.log("cha: "+ word);
try {
let data = await mdx.lookup(word);
let result;
if (data.definition){ result = data.definition;}
else { result ='';}
res.json({ result });
} catch (error) {
conso

最低0.47元/天 解锁文章
994

被折叠的 条评论
为什么被折叠?



