慕慕手記項目日記 首頁數據的渲染,使用js 2025-3-16

慕慕手記項目日記 首頁數據的渲染,使用js 2025-3-16

到這部分我們先測試能不能使用js的方式來動態數據,先寫出一個簡短的demo出來

console.log("index.js文件引入了")var ClientHeight = document.documentElement.clientHeight; // 可視區域的高度,就是我們能看見的內容的高度
var sroTop = document.documentElement.scrollTop; // 滾動條在文檔中的高度的位置(滾出可見區域的高度)
var srollHeight = document.body.scrollHeight; // 所有內容的高度var allowRequest = true; // 鎖定后端數據請求中的狀態。 是否允許請求后端function toNext()
{allowRequest = trueconsole.log("打開請求鎖");
}
function windowScroll() {if (sroTop+ClientHeight >= srollHeight && allowRequest){  console.log("開始向后端請求數據,重新渲染頁面");toNext()allowRequest = false;}
}window.addEventListener("scroll", windowScroll)

在瀏覽器中測試發現這個邏輯沒有問題,稍后完善對于網頁翻頁值的初始化處理,其中起始頁start_num為0,默認獲取的最大頁數為10頁。現在來添加一下index.js的代碼。

console.log("index.js文件引入了")var ClientHeight = document.documentElement.clientHeight; // 可視區域的高度,就是我們能看見的內容的高度
var allowRequest = true; // 鎖定后端數據請求中的狀態。 是否允許請求后端
var page = 1;
var endNum = 10; // 假設初始值為10,根據實際情況調整function getUrlParams() {var uri = location.search;var final_result = {};// 第一次請求沒有參數的時候if (uri === "") {final_result['page'] = page;final_result['article_type'] = 'recommend';final_result['start_num'] = 0;final_result['end_num'] = 10;} else {if (uri.indexOf("?") != -1) {params = uri.substr(1);params_list = params.split("&");for (var i = 0; i < params_list.length; i++) {var key = params_list[i].split("=")[0]; // article_type=recommendvar value = params_list[i].split("=")[1]; // recommendfinal_result[key] = value;}}}return final_result;
}function toNextPage(params) {console.log(params);// 開始拼接urlvar url = "?";for (var key in params) {if (key === "page") {params[key] = parseInt(params[key]) + 1;}if (key === "start_num") {params[key] = endNum;}url += key;url += "=";url += params[key];url += "&";}// 去掉末尾的&符號if (url.endsWith("&")) {url = url.substr(0, url.length - 1);}// 滾動標識if (!url.includes("scroll")) {url += "scroll=1";}console.log(url);allowRequest = true;location.href = url;
}function windowScroll() {var scrollTop = document.documentElement.scrollTop; // 滾動條在文檔中的高度的位置(滾出可見區域的高度)var scrollHeight = document.body.scrollHeight; // 所有內容的高度if (scrollTop + ClientHeight >= scrollHeight && allowRequest) {console.log("開始向后端請求數據,重新渲染頁面");allowRequest = false;var params = getUrlParams();toNextPage(params);}
}window.addEventListener("scroll", windowScroll);

文章分類功能實現

現在文章需要按照類別進行分類,狀態分為選擇和未選擇。同時需要修改前端模板

首先在index.py里面添加代碼:

區分選擇與未選擇

label_types = {"recommend": {"name":"推薦","selected":"selected"},"auto_test": {"name": "自動化測試", "selected": "no-selected"},"python": {"name": "Python", "selected": "no-selected"},"java": {"name": "Java", "selected": "no-selected"},"function_test": {"name": "功能測試", "selected": "no-selected"},"pref_test": {"name": "性能測試", "selected": "no-selected"},"funny": {"name": "幽默段子", "selected": "no-selected"},
}

修改選擇器

 左側菜單欄的處理for k,v in label_types.items():if article_type == k:v["selected"] = "selected"else:v["selected"] = "no-selected"

然后修改index.html內的代碼,里面的內容需要靠后端傳過來才能進行使用。

<div class="article-container clearfix"><div class="left-menu fl">{% for label_name,label_value in label_types.items() %}<div class="{{label_value.selected}}"><a href="?article_type={{label_name}}&page=1">{{label_value.name}}</a></div>{% endfor %}</div>

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

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

相關文章

當前企業使用VPN面臨的不足和挑戰

VPN的防護理念無法滿足數字化轉型的需求 古人云&#xff1a;知己知彼&#xff0c;百戰不殆&#xff0c;既然要替換VPN&#xff0c;就要先了解VPN。VPN于1996年起源&#xff0c;98年首次在我國出現&#xff0c;歷經25年的持續演進&#xff0c;直到現在依然廣泛流行。VPN的起源背…

python中ord()和chr()轉化ASCII數值+解密字符串例題

1.ASCII碼簡介 ASCII 即美國信息交換標準代碼&#xff08;American Standard Code for Information Interchange&#xff09;&#xff0c;是基于拉丁字母的一套電腦編碼系統&#xff0c;主要用于顯示現代英語和其他西歐語言。 發展歷程&#xff1a;ASCII 碼于 1963 年首次發布…

AMBA-CHI協議詳解(二十五)

AMBA-CHI協議詳解&#xff08;一&#xff09;- Introduction AMBA-CHI協議詳解&#xff08;二&#xff09;- Channel fields / Read transactions AMBA-CHI協議詳解&#xff08;三&#xff09;- Write transactions AMBA-CHI協議詳解&#xff08;四&#xff09;- Other transac…

HTML 區塊和布局

HTML 可以通過 <div> 和 <span>將元素組合起來。 HTML 區塊元素 大多數 HTML 元素被定義為塊級元素或內聯元素。 塊級元素在瀏覽器顯示時&#xff0c;通常會以新行來開始&#xff08;和結束&#xff09;。 實例: <h1>, <p>, <ul>, <table&…

在 STM32F7 系列微控制器中,使用定時器(如 TIM10)實現 10ms 中斷,并在中斷服務函數中調用 ProRelay() 函數

在 STM32F7 系列微控制器中&#xff0c;使用定時器&#xff08;如 TIM10&#xff09;實現 10ms 中斷&#xff0c;并在中斷服務函數中調用 ProRelay() 函數&#xff0c;可以按照以下步驟實現&#xff1a; 1. 配置 TIM10 定時器 首先&#xff0c;需要配置 TIM10 定時器&#xff0…

Web 小項目: 網頁版圖書管理系統

目錄 最終效果展示 代碼 Gitee 地址 1. 引言 2. 留言板 [熱身小練習] 2.1 準備工作 - 配置相關 2.2 創建留言表 2.3 創建 Java 類 2.4 定義 Mapper 接口 2.5 controller 2.6 service 3. 圖書管理系統 3.1 準備工作 - 配置相關 3.2 創建數據庫表 3.2.1 創建用戶表…

Godot讀取json配置文件

概述 在Godot 4.3中讀取JSON配置文件&#xff0c;可以通過以下步驟實現&#xff1a; 步驟說明 讀取文件內容&#xff1a;使用FileAccess類打開并讀取JSON文件。 解析JSON數據&#xff1a;使用JSON類解析讀取到的文本內容。 錯誤處理&#xff1a;處理文件不存在或JSON格式錯…

RabbitMQ八股文

RabbitMQ 核心概念與組件 1. RabbitMQ 核心組件及其作用 1.1 生產者&#xff08;Producer&#xff09; 作用&#xff1a;創建并發送消息到交換機。特點&#xff1a;不直接將消息發送到隊列&#xff0c;而是通過交換機路由。 1.2 交換機&#xff08;Exchange&#xff09; 作…

C語言每日一練——day_7

引言 針對初學者&#xff0c;每日練習幾個題&#xff0c;快速上手C語言。第七天。&#xff08;連續更新中&#xff09; 采用在線OJ的形式 什么是在線OJ&#xff1f; 在線判題系統&#xff08;英語&#xff1a;Online Judge&#xff0c;縮寫OJ&#xff09;是一種在編程競賽中用…

C#原型模式:通過克隆對象來優化創建過程

在軟件開發中&#xff0c;創建對象是非常常見的操作。然而&#xff0c;在某些情況下&#xff0c;構造對象的過程可能非常復雜或耗時&#xff0c;特別是當對象的創建涉及多個步驟或者需要初始化大量數據時。為了解決這個問題&#xff0c;**原型模式&#xff08;Prototype Patter…

ArcGIS10. 8簡介與安裝,附下載地址

目錄 ArcGIS10.8 1. 概述 2. 組成與功能 3. 10.8 特性 下載鏈接 安裝步驟 1. 安裝準備 2. 具體步驟 3.補丁 其他版本安裝 ArcGIS10.8 1. 概述 ArcGIS 10.8 是由美國 Esri 公司精心研發的一款功能強大的地理信息系統&#xff08;GIS&#xff09;平臺。其核心功能在于…

Mac:JMeter 下載+安裝+環境配置(圖文詳細講解)

&#x1f4cc; 下載JMeter 下載地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi &#x1f4cc; 無需安裝 Apache官網下載 JMeter 壓縮包&#xff0c;無需安裝&#xff0c;下載解壓后放到自己指定目錄下即可。 按我自己的習慣&#xff0c;我會在用戶 jane 目…

【PCB工藝】基礎:電子元器件

電子原理圖&#xff08;Schematic Diagram&#xff09;是電路設計的基礎&#xff0c;理解電子元器件和集成電路&#xff08;IC&#xff09;的作用&#xff0c;是畫好原理圖的關鍵。 本專欄將系統講解 電子元器件分類、常見 IC、電路設計技巧&#xff0c;幫助你快速掌握電子電路…

nvm 安裝某個node.js版本后不能使用或者報錯,或不能使用npm的問題

安裝了nvm之后發現不能使用某個版本的node.js&#xff0c;報錯之后&#xff0c;不能使用npm這個命令。可以這樣解決&#xff1a; 1、再node.js官網直接下載node.js 的壓縮包。 找到nvm的安裝目錄 2、直接將文件夾解壓到這個安裝目錄中修改一下名字即可。

【MySQL數據庫】多表查詢(笛卡爾積現象,聯合查詢、內連接、左外連接、右外連接、子查詢)-通過練習快速掌握法

在DQL的基礎查詢中&#xff0c;我們已經學過了多表查詢的一種&#xff1a;聯合查詢&#xff08;union&#xff09;。本文我們將系統的講解多表查詢。 笛卡爾積現象 首先&#xff0c;我們想要查詢emp表和stu表兩個表&#xff0c;按照我們之前的知識棧&#xff0c;我們直接使用…

Java:Apache HttpClient中HttpRoute用法的介紹

當使用Apache HttpClient組件時&#xff0c;經常會用到它的連接池組件。典型的代碼如下&#xff1a; PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager();connectionManager.setMaxTotal(httpConfig.getMaxPoolTotal());connect…

RHCE(RHCSA復習:npm、dnf、源碼安裝實驗)

七、軟件管理 7.1 rpm 安裝 7.1.1 掛載 [rootlocalhost ~]# ll /mnt total 0 drwxr-xr-x. 2 root root 6 Oct 27 21:32 hgfs[rootlocalhost ~]# mount /dev/sr0 /mnt #掛載 mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# [rootlo…

分布式的消息流平臺之Pulsar

Pulsar 流處理詳解 Apache Pulsar 是一個分布式的消息流平臺&#xff0c;集成了**消息隊列&#xff08;MQ&#xff09;和流處理&#xff08;Stream Processing&#xff09;**能力。Pulsar 不僅提供低延遲、高吞吐的消息傳輸能力&#xff0c;還支持基于 Pulsar Functions、Flin…

【C++多線程】thread

C中的std::thread是C11引入的線程庫的一部分&#xff0c;提供了創建和管理線程的能力。它封裝了操作系統的線程接口&#xff0c;使得在C中更方便地進行多線程編程。 1. std::thread 的定義 std::thread 類位于<thread>頭文件中&#xff0c;定義在std命名空間下&#xff…

【css酷炫效果】純CSS實現故障文字特效

【css酷炫效果】純CSS實現故障文字特效 緣創作背景html結構css樣式完整代碼基礎版進階版(3D效果) 效果圖 想直接拿走的老板&#xff0c;鏈接放在這里&#xff1a;https://download.csdn.net/download/u011561335/90492053 緣 創作隨緣&#xff0c;不定時更新。 創作背景 剛…