nodejs:vue 3 + vite 作為前端,將 html 填入<iframe>,在線查詢英漢詞典

向 doubao.com/chat/ 提問:
node.js + js-mdict 作為后端,vue 3 + vite 作為前端,編寫在線查詢英漢詞典

后端部分(express +?js-mdict

詳見上一篇:nodejs:express + js-mdict 作為后端,vue 3 + vite 作為前端,在線查詢英漢詞典


前端部分(Vue 3 + Vite)

1. 創建前端項目

node -v
v18.20.6
npm -v
10.8.2

cd \js
cnpm create vite@latest mydict-web --template vue
?選 Vue?
?選 Javascript

項目結構?:Vite 會自動創建一個基本的項目結構,包括?src目錄下的組件、路由和狀態管理等文件。主要文件和目錄如下:

  • App.vue:根組件
  • main.js:應用程序入口
  • router:Vue Router配置
  • store:狀態管理

在?public?中添加一些英漢字典的樣式:oalecd8e.css ,?oalecd8e.js ,?uk_pron.png,?us_pron.png,
copy?jquery-3.2.1.min.js pulibc\jquery.js?

修改?index.html 中的標題如下

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite 在線英漢詞典查詢</title></head><body><div id="app"></div><script type="module" src="/src/main.js"></script></body>
</html>

修改 src/main.js 如下

import { createApp } from 'vue'
import App from './App.vue'
import axios from 'axios'createApp(App).mount('#app')

vite 代理服務器(Proxy)的配置通常用于開發環境,以解決跨域請求等問題。
修改?vite.config.js 如下

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vite.dev/config/
export default defineConfig({plugins: [vue()],server: {proxy: {'/api': {target: 'http://localhost:8006', // 后端服務地址changeOrigin: true, // 是否改變源地址rewrite: (path) => path.replace(/^\/api/, '')}}}    
})

2. 安裝依賴

cd mydict-web
cnpm install axios

cnpm install vue-router -S

?package.json 如下

{"name": "mydict-web","private": true,"version": "0.1.0","type": "module","scripts": {"dev": "vite","build": "vite build","preview": "vite preview"},"dependencies": {"axios": "^1.7.9","vue": "^3.5.13","vue-router": "^4.5.0"},"devDependencies": {"@vitejs/plugin-vue": "^5.2.1","vite": "^6.1.0"}
}

3. 編寫前端代碼

修改?src/App.vue?文件:

<template><div id="app"><input v-model="sWord" placeholder="請輸入英文單詞" @keyup.enter="search" target="iframe">&nbsp; <button @click="search">查詢</button>&nbsp; <button @click="prefix">前綴查詢</button>&nbsp; <button @click="fuzzy">模糊查詢</button><h3>查詢結果</h3><div style="float:left; width:100%;"><div id="result" style="float:left; width:75%; height:500; border:2px;"><iframe ref="iframe" name="iframe" width="100%" height="500"> </iframe></div><div v-if="alist"><div v-html="alist" style="float:right; width:25%; height:500; border:2px;"></div></div></div><div v-if="error">{{ error }}</div></div>
</template><script setup>
import { ref } from 'vue';
import axios from 'axios';const sWord = ref('');
const result = ref('');
const error = ref('');
const iframe = ref(null);
const alist = ref(null);// 查詢
const search = async () => {try {const response = await axios.get('/api/search', {params: {word: sWord.value}});let htm1 = response.data.result;const frame1 = iframe.value;if (frame1 && htm1) {let doc1 = frame1.contentWindow.document;doc1.open();doc1.write(htm1);doc1.close();}error.value = '';} catch (err) {result.value = '';error.value = err.response?.data?.error || '請求出錯,請稍后重試';}
};// 前綴查詢
const prefix = async () => {try {const response = await axios.get('/api/prefix', {params: {word: sWord.value}});let items = [];let wordls = response.data.wordls;wordls.forEach((item, i) => {if (i<=20){items[i] = `<a href="http://localhost:8006/query?word=${item}" target="iframe">${item}</a>`;}});if (items.length >0){ alist.value = items.join('<br>\n');}else { alist.value = '';}error.value = '';} catch (err) {alist.value = '';error.value = err.response?.data?.error || '請求出錯,請稍后重試';}
};// 模糊查詢
const fuzzy = async () => {try {const response = await axios.get('/api/fuzzy', {params: {word: sWord.value}});let items = [];let wordls = response.data.wordls;wordls.forEach((item, i) => {if (i<=20){items[i] = `<a href="http://localhost:8006/query?word=${item}" target="iframe">${item}</a>`;}});if (items.length >0){ alist.value = items.join('<br>\n');}else {alist.value = '';}error.value = '';} catch (err) {alist.value = '';error.value = err.response?.data?.error || '請求出錯,請稍后重試';}
};</script><style scoped>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: left;color: #2c3e50;margin-top: 10px;
}
</style>

4. 運行前端項目

cd mydict-web
npm run dev

> mydict-web@0.1.0 dev
> viteVITE v6.1.1  ready in 1083 ms?  Local:   http://localhost:5173/?  Network: use --host to expose?  press h + enter to show help
hShortcutspress r + enter to restart the serverpress u + enter to show server urlpress o + enter to open in browserpress c + enter to clear consolepress q + enter to quit
o

?注意事項

  • 跨域問題:在開發環境中使用?cors?中間件解決跨域問題,在生產環境中可以通過配置反向代理等方式處理。
  • MDX 文件路徑:確保?app.js?中的?mdict Path?指向正確的?.mdx?詞典文件。
  • 安全性:在生產環境中,需要考慮對后端接口進行安全防護,如限制請求頻率、驗證請求來源等。

通過以上步驟,你就可以實現一個簡單的在線英漢詞典查詢系統。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70535.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins 部署在 Mac 并在局域網內通過 ip 訪問

Jenkins 部署在 Mac 并在局域網內通過 ip 訪問 一、修改配置文件 打開文件 ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist 打開文件 /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist 兩個文件目錄不同&#xff0c;內容一樣 <?xml version"1.0" e…

2通道12bit 10G USB高速示波器采集卡

概述 USB高速示波器采集卡 2通道&#xff0c;12位&#xff0c;10GSa/s 采樣率 DC~2.5GHz 帶寬 USB高速示波器采集卡是一款高速12bit多通道USB數字化儀它具有2通道10GSa/s采樣率&#xff0c;模擬前端帶寬從DC到2.5GHz&#xff0c;板載32GB DDR4存儲&#xff0c;使其能夠滿足長…

Python|OpenCV-實現人物眨眼檢測(21)

前言 本文是該專欄的第23篇,后面將持續分享OpenCV計算機視覺的干貨知識,記得關注。 通過OpenCV庫來實現人物的眨眼檢測,首先是需要了解眨眼檢測的基本原理。一般來說,是需要通過檢測眼睛的狀態,比如眼睛是否閉合來判斷是否眨眼。對此,如果基于OpenCV,通過Python如何去實…

Qt | Excel創建、打開、讀寫、另存和關閉

01 如何在Qt中使用QXlsx庫進行Excel文件的讀寫操作,包括創建新Excel、寫入數據、讀取數據以及文件保存和釋放資源。通過實例展示了如何加載庫、編寫.h和.cpp文件,并演示了使用單元格引用和行列號進行數據操作的方法。 QXlsx是一個可以讀寫Excel文件的庫。不依賴office以及…

AMBA-CHI協議詳解(十九)

文章目錄 4.6 Silent cache state transitions4.7 Cache state transitions at a Requester4.7.1 Read request transactions4.7.2 Dataless request transactions4.7.3 Write request transactions4.7.4 Atomic transactions4.7.5 Other request transactions4.6 Silent cache…

常見的“鎖”有哪些?

悲觀鎖 悲觀鎖認為在并發環境中&#xff0c;數據隨時可能被其他線程修改&#xff0c;因此在訪問數據之前會先加鎖&#xff0c;以防止其他線程對數據進行修改。常見的悲觀鎖實現有&#xff1a; 1.互斥鎖 原理&#xff1a;互斥鎖是一種最基本的鎖類型&#xff0c;同一時間只允…

深入理解 Python 作用域:從基礎到高級應用

在 Python 編程中&#xff0c;作用域是一個至關重要的概念&#xff0c;它決定了變量和函數的可見性與生命周期。正確理解和運用作用域規則&#xff0c;對于編寫結構清晰、易于維護的代碼起著關鍵作用。無論是簡單的腳本還是復雜的大型項目&#xff0c;作用域都貫穿其中&#xf…

ubuntu磁盤清理垃圾文件

大頭文件排查 #先查看是否是內存滿了&#xff0c;USER 很高即是滿了 du -f#抓大頭思想&#xff0c;優先刪除大文件#查看文件目錄 內存占用量并排序&#xff0c;不斷文件遞歸下去 du --max-depth1 -h /home/ -h | sort du --max-depth1 -h /home/big/ -h | sort 緩存文件清理…

ctf網絡安全題庫 ctf網絡安全大賽答案

此題解僅為部分題解&#xff0c;包括&#xff1a; 【RE】&#xff1a;①Reverse_Checkin ②SimplePE ③EzGame 【Web】①f12 ②ezrunner 【Crypto】①MD5 ②password ③看我回旋踢 ④摩絲 【Misc】①爆爆爆爆 ②凱撒大帝的三個秘密 ③你才是職業選手 一、 Re ① Reverse Chec…

VSCode集成deepseek使用介紹(Visual Studio Code)

VSCode集成deepseek使用介紹&#xff08;Visual Studio Code&#xff09; 1. 簡介 隨著AI輔助編程工具的快速發展&#xff0c;VSCode作為一款輕量級、高度可擴展的代碼編輯器&#xff0c;已成為開發者首選的工具之一。DeepSeek作為AI模型&#xff0c;結合Roo Code插件&#x…

git 常用功能

以下是 Git 的常用功能及其命令&#xff1a; 初始化倉庫 git init在當前目錄初始化一個新的 Git 倉庫。 克隆倉庫 git clone <倉庫地址>將遠程倉庫克隆到本地。 查看狀態 git status查看工作區和暫存區的狀態。 添加文件到暫存區 git add <文件名>將文件添…

Unity 腳本控制3D人物模型的BlendShape

有些3D角色模型帶有BlendShape面部控制, 在Unity中可以通過接口訪問并操作其參數可以表現不同的面部表情 在Unity中選中角色模型的指定部位,這個是由模型師定義的,不固定.但肯定是在面部建模上. 點選之后在檢查器可以看到對應的BlendShapes設定項出現在SkinedMeshRenderer組件…

vscode設置終端復制快捷鍵(有坑!!!)

vscode的編輯頁面和終端的復制粘貼快捷鍵是不一樣的。 vscode的終端復制快捷鍵為ctrlshiftC&#xff0c;當然&#xff0c;自己可以自定義設置 vscode設置終端復制快捷鍵&#xff08;有坑&#xff01;&#xff01;&#xff01;&#xff09;_vs code 不能復制-CSDN博客文章瀏覽…

Ansible 學習筆記

這里寫自定義目錄標題 基本架構文件結構安裝查看版本 Ansible 配置相關文件主機清單寫法 基本架構 Ansible 是基于Python實現的&#xff0c;默認使用22端口&#xff0c; 文件結構 安裝 查看用什么語言寫的用一下命令 查看版本 Ansible 配置相關文件 主機清單寫法

0083.基于springboot+uni-app的社區車位租賃系統小程序+論文

一、系統說明 基于springbootuni-app的社區車位租賃系統小程序,系統功能齊全, 代碼簡潔易懂&#xff0c;適合小白學編程。 現如今&#xff0c;信息種類變得越來越多&#xff0c;信息的容量也變得越來越大&#xff0c;這就是信息時代的標志。近些年&#xff0c;計算機科學發展…

NavVis VLX三維掃描:高層建筑數字化的革新力量【滬敖3D】

在三維激光掃描領域&#xff0c;樓梯結構因其復雜的空間形態和連續垂直移動的實際需求&#xff0c;一直是技術難點之一。利用NavVis VLX穿戴式移動掃描系統成功完成一棟34層建筑的高效掃描&#xff0c;其中樓梯部分的數據一遍成形且無任何分層或形變。本文將深入分析該項目的技…

3D模型在線轉換工具:輕松實現3DM轉OBJ

3D模型在線轉換是一款功能強大的在線工具&#xff0c;支持多種3D模型格式的在線預覽和互轉。無論是工業設計、建筑設計&#xff0c;還是數字藝術領域&#xff0c;這款工具都能滿足您的需求。 3DM與OBJ格式簡介 3DM格式&#xff1a;3DM是一種廣泛應用于三維建模的文件格式&…

引入elementUI時報錯undefined is not an object (evaluating ‘h.a.prototype‘)

把這兩個引入方式都做了 于是報錯&#xff1a; 把CDN的刪掉就好了。

PHP商協會管理系統小程序源碼

&#x1f4ca; 商協會管理系統 &#x1f4bb; 這是一款基于ThinkPHPUniapp框架&#xff0c;經過深度定制與匠心打造的商協會系統&#xff0c;被譽為商協會領域數字化運營管理的新銳之星。它以“智慧化會員體系、智敏化內容運營、智能化活動構建”為三大核心動力源&#xff0c;…

端邊云架構

端邊云架構是一種分布式計算架構&#xff0c;它將計算任務分布在終端設備、邊緣節點和云端服務器之間&#xff0c;以實現高效的數據處理和資源管理。這種架構在現代物聯網&#xff08;IoT&#xff09;、智能城市、工業互聯網等場景中得到了廣泛應用。以下是端邊云架構的主要組成…