藍橋杯 - 中等 - 絕美宋詞

介紹

“今宵酒醒何處,楊柳岸曉風殘月”,“驀然回首,那人卻在燈火闌珊處”,“試問閑愁都幾許?一川煙草,滿城風絮,梅子黃時雨” ......

宋詞可謂是古代文學桂冠上一顆璀璨的明珠,本題將實現一個在搜索框中輸入關鍵字,實時顯示符合條件的完整宋詞的功能。

準備

本題已經內置了初始代碼,打開實驗環境,目錄結構如下:

├── css
│   └── style.css
├── data.json
├── index.html
└── js├── axios.min.js└── vue.min.js

其中:

  • index.html?是主頁面。
  • js/vue.min.js?是項目用到的 vue2.x 版本文件。
  • js/axios.min.js?是 axios 文件。
  • data.json?是項目中需要用到宋詞數據。
  • css/style.css?是樣式文件。

選中?index.html?右鍵啟動 Web Server 服務(Open with Live Server),讓項目運行起來。

接著,打開環境右側的【Web 服務】,就可以在瀏覽器中看到如下效果:

目標

請使用 Vue ,完成?index.html?文件中的 TODO 部分。

  1. 完成數據請求(數據來源?./data.json),data.json?是宋詞數據,poetry_content?表示詞句,title?表示詞牌名,author?表示詞人。
  2. 在輸入框輸入關鍵詞時在?ulclass = suggestions)的元素中實時顯示詞牌名、詞句、詞人中包含關鍵詞的完整詞句(包含詞牌名、詞人)列表,當關鍵詞為空或者匹配不到時?ulclass = suggestions)元素的子節點為空。完整詞句的 DOM 結構按照如下規定顯示:
<!-- 每一首完整詞句用一個 li 包裹 -->
<li><span class="poet">詞句</span><span class="title">詞牌名 - 詞人</span>
</li>

例:

<li><span class="poet">常記溪亭日暮,沉醉不知歸路。興盡晚回舟,誤入藕花深處。爭渡,爭渡,驚起一灘鷗鷺</span><span class="title">如夢令 - 李清照</span>
</li>

  1. 高亮匹配到的所有詞句中的關鍵詞。即使用?<span class="highlight"></span>?標簽包裹所有關鍵詞。

例:(關鍵詞:雨)

<li><span class="poet">寒蟬凄切,對長亭晚,驟<span class="highlight">雨</span>初歇。都門帳飲無緒,方留戀處,蘭舟催發。執手相看淚眼,竟無語凝噎。念去去千里煙波,暮靄沉沉楚天闊。多情自古傷離別,更那堪冷落清秋節。今宵酒醒何處,楊柳岸曉風殘月。此去經年,應是良辰美景虛設。便縱有千種風情,更與何人說</span><span class="title"><span class="highlight">雨</span>霖鈴 - 柳永</span>
</li>

注意本題要求的是實時顯示,即輸入完成的同時顯示結果,非失去焦點顯示

規定

  • 請勿修改已經提供的代碼,以免造成判題無法通過。
  • 請嚴格按照考試步驟操作,切勿修改考試默認提供項目中的文件名稱、文件夾路徑等。
  • 滿足題目需求后,保持 Web 服務處于可以正常訪問狀態,點擊「提交檢測」系統會自動判分

代碼

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>絕美宋詞</title><link rel="stylesheet" href="css/style.css" /><script src="./js/vue.min.js"></script><script src="./js/axios.min.js"></script></head><body><div id="app"><h1 style="text-align: center">輸入關鍵字,找一首詞</h1><!-- TODO:待補充代碼 --><div class="search-form"><inputtype="text"id="search"class="search"placeholder="詞牌名 詞句 詞人"v-model="searchValue"/><ul class="suggestions" v-for="item in setSearchData"><!-- 每一首完整詞句用一個 li 包裹 --><li><span class="poet" v-html="highlight(item.poetry_content)">{{item.poetry_content}}</span><span class="title"><span v-html="highlight(item.title)">{{item.title}}</span>-<span v-html="highlight(item.author)">{{item.author}}</span></span></li></ul></div></div><script>let vm = new Vue({el: "#app",// TODO:待補充代碼data: {dataList: [],searchValue: "",},mounted() {axios.get("./data.json").then((res) => {this.dataList = res.data;console.log(res.data);});},computed: {setSearchData() {// 當搜索值為空時返回空數組if (!this.searchValue) return [];// 正確過濾包含搜索詞的項return this.dataList.filter((item) => {return (item.poetry_content.includes(this.searchValue) ||item.title.includes(this.searchValue) ||item.author.includes(this.searchValue));});},},methods: {highlight(it) {// 替換搜索詞并高亮顯示return it.replaceAll(this.searchValue,`<span class="highlight">$&</span>`);},},});</script></body>
</html>
  • v-html="highlight(...):使用?v-html?指令渲染 HTML 內容,highlight?方法會將匹配搜索詞的部分用?<span class="highlight">?包裹,實現高亮效果。
computed: {setSearchData() {if (!this.searchValue) return [];return this.dataList.filter((item) => {return (item.poetry_content.includes(this.searchValue) ||item.title.includes(this.searchValue) ||item.author.includes(this.searchValue));});},
},
  • 作用:根據?searchValue?的值動態過濾?dataList,返回包含搜索詞的詩詞數據。
  • 工作原理
    1. 當?searchValue?為空時,返回空數組,隱藏所有結果。
    2. 當?searchValue?有值時,使用?filter?方法遍歷?dataList,篩選出?poetry_content(詩詞內容)、title(詞牌名)或?author(詞人)包含搜索詞的項。
  • 響應式:計算屬性會自動追蹤依賴的響應式數據(searchValue?和?dataList),當它們變化時,重新計算并更新視圖。
methods: {highlight(it) {return it.replaceAll(this.searchValue, `<span class="highlight">$&</span>`);},
},
  • highlight?方法
    • 接收一個字符串?it(如詩詞內容、詞牌名或詞人)。
    • 使用?replaceAll?方法將?it?中所有匹配?searchValue?的部分替換為?<span class="highlight">$&</span>其中?$&?表示匹配的子字符串
    • 最終返回帶有高亮樣式的 HTML 字符串,通過?v-html?渲染到頁面上,實現搜索詞高亮效果。

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

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

相關文章

JDBC、excute()、DriveManager、Connection、Statement、自建JDBC工具類、占位符

DAY19.2 Java核心基礎 JDBC JDBC&#xff1a;Java database Connectivity JDBC是java程序連接各種數據庫的組件 Mybatis就是基于JDBC的封裝&#xff0c;是獨立于數據庫的管理系統&#xff0c;通用的SQL數據庫存取和操作的公共接口 定義了一套標準&#xff0c;為訪問 不同數…

21天Python計劃:函數簡單介紹

文章目錄 前言一、函數知識體系二、函數基礎函數的定義和調用函數參數 三、函數對象、函數嵌套、名稱空間與作用域、裝飾器函數對象函數嵌套名稱空間與作用域裝飾器 四、迭代器、生成器、面向過程編程迭代器生成器面向過程編程 五、三元表達式、列表推導式、生成器表達式、遞歸…

污水處理廠人員定位方案-UWB免布線高精度定位

1. 方案概述 本方案采用免布線UWB基站與北斗衛星定位融合技術&#xff0c;結合UWBGNSS雙模定位工卡&#xff0c;實現污水處理廠室內外人員高精度定位&#xff08;亞米級&#xff09;。系統通過低功耗4G傳輸數據&#xff0c;支持實時位置監控、電子圍欄、聚集預警、軌跡回放等功…

無人機DSP處理器工作要點!

一、DSP處理器在無人機中的工作要點 1. 高效運算架構 哈佛結構&#xff1a;DSP采用程序與數據存儲分離的哈佛結構&#xff0c;允許同時訪問指令和數據&#xff0c;提升數據吞吐效率。 流水線技術&#xff1a;將指令分解為取指、譯碼、執行等多個階段并行處理&#xff0c…

MySQL查詢成本計算

對于如上SQL&#xff0c;只是因為查詢字段不同&#xff0c;最終執行時選擇的索引就不同&#xff0c;那么MySQL是如何決定選擇使用哪個索引呢&#xff1f; 答案是MySQL會進行成本計算&#xff0c;對于各個場景查詢進行成本預估&#xff0c;最終選擇最優。 我們可以使用trace工具…

《K230 從熟悉到...》矩形檢測

《K230 從熟悉到...》矩形檢測 《廬山派 K230 從熟悉到...》矩形檢測 矩形檢測技術是一種廣泛應用于電子圖像處理的核心技術。它通過識別和分析圖像中的矩形結構&#xff0c;為各種應用提供基礎支持。從傳統圖像處理算法到現代深度學習技術&#xff0c;矩形檢測的實現途徑多種多…

python基礎學習三(元組及字符串的使用)

文章目錄 元組什么是元組元組的創建方式為什么要將元組設計成不可變序列元組的遍歷集合集合的相關操作集合操作集合的數學操作集合生成式列表&#xff0c;字典&#xff0c;元組&#xff0c;集合總結 字符串字符串的駐留機制判斷字符串的操作方法字符串的比較操作字符串的切片操…

Java基礎-22-基本語法-實體類

實體類&#xff08;Entity Class&#xff09; 1. 什么是實體類&#xff1f; 實體類&#xff08;Entity Class&#xff09; 是 Java 中用于表示數據庫表結構或業務對象的類。它通常包含屬性&#xff08;字段&#xff09;和getter/setter 方法&#xff0c;用于存儲和操作數據。…

Android 系統ContentProvider流程

一、ContentProvider初始化注冊流程 源碼查看路徑&#xff1a;http://xrefandroid.com/android-11.0.0_r48/ 涉及到源碼文件&#xff1a; /frameworks/base/core/java/android/content/ContentProvider.java 自定義ContentProvider需要繼承該類,內部類Transport繼承關系如下,實…

爬蟲工程師分享自動批量化獲取商品評論數據的方法有哪些?

在電商領域&#xff0c;商品評論數據對于商家了解產品口碑、洞悉用戶需求&#xff0c;以及開展競品分析等工作具有極其重要的價值。作為爬蟲工程師&#xff0c;掌握自動批量化獲取商品評論數據的方法&#xff0c;能極大提升數據收集效率。下面&#xff0c;我將分享一些實用的操…

Vue3組件事件用戶信息卡練習

用戶信息卡 題目要求 實現一個用戶信息卡系統&#xff0c;包含以下功能&#xff1a; 1.父組件收集用戶信息&#xff08;姓名、年齡、班級&#xff09; 2.子組件接收并展示用戶信息卡片 3.添加基本的數據驗證 <!DOCTYPE html> <html lang"en"> <h…

SpringBean模塊(二)bean初始化(2)和容器初始化順序的比較--引入ApplicationContextInitializer

前面介紹了獲取容器可以讓spring bean實現ApplicationContextAware&#xff0c;實際也是初始化執行了setApplicationContext接口&#xff0c; 初始化接口還可以借助一些注解或者spring bean的初始化方法&#xff0c;那么他們的執行順序是什么樣的呢&#xff1f; 一、驗證&…

中小型企業網絡的搭建

1.1 網絡邏輯拓撲、布線方案的設計 1.1.1 網絡設計依據 網絡設計應遵循以下基本原則&#xff1a; 高效性&#xff1a;確保網絡架構能夠支持企業日常業務的高效運行。 可靠性&#xff1a;采用冗余設計&#xff0c;確保網絡的高可用性&#xff0c;避免單點故障。 可擴展性…

angr基礎學習

參考&#xff1a;angr AngrCTF_FITM/筆記/03/Angr_CTF從入門到精通&#xff08;三&#xff09;.md at master ZERO-A-ONE/AngrCTF_FITM angr_explore 00_angr_find IDA分析結果&#xff1a; 邏輯簡單&#xff0c;輸入&#xff0c;complex_function進行加密&#xff0c;加密…

軟考-高級-系統架構設計師【考試備考資料下載】

計算機技術與軟件專業技術資格&#xff08;水平&#xff09;考試是原中國計算機軟件專業技術資格和水平考試的完善與發展。計算機技術與軟件專業技術資格&#xff08;水平&#xff09;考試是由國家人力資源和社會保障部、工業和信息化部領導下的國家級考試。 計算機技術與軟件專…

3. 第三放平臺部署deepseek

有時候我們會發現使用deepseek服務器&#xff0c;異常卡頓&#xff0c;這是由于多方面原因造成的&#xff0c;比如說訪問人數過多等。想要解決這個問題&#xff0c;我們可以選擇第三方平臺進行部署 第三方平臺 我們可以選擇的第三方平臺很多&#xff0c;比如硅基流動、秘塔搜索…

1.4-蜜罐\堡壘機\API接口

1.4-蜜罐\堡壘機\API接口 蜜罐&#xff1a;用來釣魚或誘惑測試人員的防護系統 bash <(curl -sS -L https://hfish.net/webinstall.sh) # 安裝HFISH蜜罐堡壘機&#xff1a; 運維用的&#xff0c;統一管理運維平臺;拿下堡壘機就很有可能等于拿下了多個平臺 jumpServer一鍵安…

知識圖引導的檢索增強生成

摘要 檢索增強生成&#xff08;RAG&#xff09;已經成為一種很有前途的技術&#xff0c;用于解決大型語言模型&#xff08;LLM&#xff09;生成的響應中的幻覺問題。現有的RAG研究主要集中在應用基于語義的方法來提取孤立的相關組塊&#xff0c;忽略了它們之間的內在關系。在本…

【機器學習】imagenet2012 數據預處理數據預處理

【機器學習】數據預處理 1. 下載/解壓數據2. 數據預處理3. 加載以及訓練代碼3.1 使用PIL等加載代碼3.2 使用OpenCV的方式來一張張加載代碼3.3 h5的方式來加載大文件 最后總結 這個數據大約 140個G,128w的訓練集 1. 下載/解壓數據 首先需要下載數據&#xff1a; 數據最后處理…

質量工程:數字化轉型時代的質量體系重構

前言&#xff1a;質量理念的范式轉移閱讀原文 如果把軟件開發比作建造摩天大樓&#xff1a; 傳統測試 竣工后檢查裂縫&#xff08;高成本返工&#xff09; 質量工程 從地基開始的全流程監理體系&#xff08;設計圖紙→施工工藝→建材選擇→竣工驗收&#xff09; IEEE研究…