【DW12月-推薦系統】Task04 前后端基礎及交互

參考鏈接:https://github.com/datawhalechina/fun-rec/blob/master/docs/

一、前端基礎

1.1 Web前端

Web前端網頁主要由文字、圖像和超鏈接等元素構成。除了這些元素,網頁中還可以包含音頻、視頻以及Flash等。

1.1.1 什么是Web?

Web(World Wide Web)即全球廣域網,也稱為萬維網,它是一種基于超文本和HTTP的、全球性的、動態交互的、跨平臺的分布式圖形信息系統。是建立在Internet上的一種網絡服務,為瀏覽者在Internet上查找和瀏覽信息提供了圖形化的、易于訪問的直觀界面,其中的文檔及超級鏈接將Internet上的信息節點組織成一個互為關聯的網狀結構。
Web前端主要是通HTML,CSSJS,ajax,DOM等前端技術,實現網站在客服端的正確顯示及交互功能。

1.1.2 Web 標準構成

主要由結構(Structure)、表現(Presentation)和行為(Behavior)三個方面構成。
結構標準:結構用于對網頁元素進行整理和分類,對于網頁來說是最重要的一部分 ??梢酝ㄟ^語義分析對其劃分結構,具有了結構的內容,將更容易閱讀。
表現標準:表現用于設置網頁元素的版式、顏色、大小等外觀樣式,主要指的是CSS 。目的是讓網頁展現出靈活多樣的顯示效果。
行為標準:行為是指網頁模型的定義及交互的編寫 。讓用戶對網頁進行操作,網頁可以做出響應性的變化。
總的來說,Web標準有三層結構,分別是結構(HTML)、表現(CSS)和行為(JS),結構類似人的身體, 表現類似人的著裝, 行為類似人的行為動作,理想狀態下,他們三層都是獨立的, 放到不同的文件里面。

HTML (Hyper Text Markup Language)

  • HTML指的是超文本標記語言,是用來描述網頁的一種語言。
  • HTML 不是一種編程語言,而是一種標記語言 (markup language)。
  • 標記語言是一套標記標簽 (markup tag)。

CSS(Cascading Style Sheets)

  • 通常稱為CSS樣式表或層疊樣式表(級聯樣式表)。
  • 主要用于設置 HTML頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式、邊距等)以及版面的布局和外觀顯示樣式。
  • 以HTML為基礎,提供了豐富的功能,如字體、顏色、背景的控制及整體排版等,而且還可以針對不同的瀏覽器設置不同的樣式。

JS(JavaScript)

  • JS 是 Web 的編程語言,是一種基于對象和事件驅動并具有相對安全性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發的腳本語言,常常用來給HTML網頁添加動態效果,從而實現人機交互的網頁
  • 腳本語言不需要編譯,在運行過程中由 js 解釋器(js引擎)逐行來進行解釋并執行。

1.2 Vue簡介

Vue (讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動。
Vue的生命周期
每個 Vue 實例在被創建時都要經過一系列的初始化過程——例如,需要設置數據監聽、編譯模板、將實例掛載到 DOM 并在數據變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命周期鉤子的函數,這樣用戶在不同階段可以添加自己的代碼。

1.3 基于Vue的移動端H5項目

HTML5是第五代HTML的標準,H5是基于 HTML5 實現的,是當前互聯網前端開發的主流語言。H5頁面與普通web頁面相比,最大的區別在于HTML5頁面可以與不同大小的移動設備相匹配,支持市場上不同瀏覽器的兼容。
H5頁面有以下特點:

  • 具有移動端自適應能力,H5頁面會根據不同的手機屏幕尺寸進行適配,以達到不同屏幕的最佳顯示效果。
  • 支持多媒體功能,支持背景音樂,視頻播放等多種多媒體功能。
  • 頁面素材預加載,為了保證整個頁面的播放流暢,H5頁面都搭配預加載功能,即用戶點擊之前就完成了頁面的加載,保證閱讀流暢性。
  • 支持滑動翻頁,每個頁面內容單獨成頁。
  • 使用滾動偵測特效,即滑動頁面的同時,大量文字或圖片會自動加載出來,造成一種動態美感。

隨著移動互聯網的發展,智能手機、平板等移動終端設備的普及,用戶在移動端瀏覽的時間越來越長,H5頁面傳播渠道廣,流量大,傳播效率高,傳播成本低的優勢,同時H5頁面制作搭配頁面滑動、簡單的文字、動態的圖片動畫以及妙趣橫生的音樂及視頻,給瀏覽者帶來深刻的瀏覽體驗。

二、flask簡介及基礎

Flask是一個輕量級的可定制框架,使用Python語言編寫,較其他同類型框架更為靈活、輕便、安全且容易上手。它可以很好地結合MVC模式進行開發,開發人員分工合作,小型團隊在短時間內就可以完成功能豐富的中小型網站或Web服務的實現。
Flask是目前十分流行的web框架,采用Python編程語言來實現相關功能。Flask框架的主要特征是核心構成比較簡單,但具有很強的擴展性和兼容性,程序員可以使用Python語言快速實現一個網站或Web服務。一般情況下,它不會指定數據庫和模板引擎等對象,用戶可以根據需要自己選擇各種數據庫。

2.1 路由

在Flask中,路由是指用戶請求的URL與視圖函數之間的映射。Flask通過利用路由表將URL映射到對應的視圖函數,根據視圖函數的執行結果返回給WSGI服務器。路由表的內容是由開發者進行填充,主要有一下兩個方式。

  • route裝飾器:使用Flask應用實例的route裝飾器將一個URL規則綁定到 一個視圖函數上。
  • add_url_rule() :該方法直接會在路由表中注冊映射關系。其實route裝飾器內部也是通過調用add_url_rule()方法實現的路由注冊。

2.2 請求,響應及會話

對于一個完整的HTTP請求,包括了來自客戶端的請求對象(Request),服務器端的響應對象(Respose)和會話對象(Session)等。在Flask框架中,這些對象不僅可以在請求函數中使用,同時也可以在模板中使用。
請求對象 request
在Flask包中,可以直接引入request對象,其中包含Form,args ,Cookies ,files 等屬性。Form 是一個字典對象,包含表單當中所有參數及其值的鍵和值對;args 是解析查詢字符串的內容,它是問號(?)之后的URL的一部分,當使用get請求時,通過URL傳遞參數時可以通過args屬性獲??;Cookies 是用來保存Cookie名稱和值的字典對象;files 屬性和上傳文件有關的數據。
響應對象 response
如果視圖函數想向前端返回數據,必須是Response的對象, 主要將返回數據的幾種方式:

  • 視圖函數 return 多個值;
  • 通過直接創建Response對象,配置其參數;
  • 使用make_response 函數可以傳遞三個參數 第一個是一個字符串,第二個傳狀態碼,第三個傳請求頭。

2.3 重定向與錯誤處理

重定向
當一個請求過來后可能還需要在請求另一個視圖函數才能達到目的,那么就可以調用redirect(location, code=302, Response=None)函數指定重定向頁面。
錯誤處理
當請求或服務器出現錯誤的時候,可以使用 errorhandler() 裝飾器。

2.4 SQLAlchemy

SQLAlchemy 是一個功能強大的Python ORM 工具包,為應用程序開發人員提供了SQL的全部功能和和ORM操作。其中ORM(Object Relation Mapping)指的是將對象參數映射到底層RDBMS表結構的技術,ORM API提供了執行CRUD操作的方法,不需要程序員編寫原始SQL語句。

三、前后端交互

3.1 用戶注冊登錄

為了能夠對用戶進行千人千面的推薦,因此需要每個使用該系統的人都需要明確先進行注冊登入,為每個用戶生成唯一的用戶id,根據用戶的歷史行為,實現對用戶進行個性化推薦的效果。
** 注冊部分**
注冊部分主要是記錄用戶的一些基礎屬性,并將用戶的注冊信息寫入msyql表當中。
登錄部分
用戶登陸部分,前端通過將輸入的賬號密碼通過POST請求傳給 /recsys/login,通過UserAction().user_is_exist()方法查詢數據庫中的用戶名或者密碼是否存在,其中1表示賬號密碼正確,2表示密碼錯誤,0表示用戶不存在。

3.2 推薦頁列表

image.png

該部分的主要邏輯是前端通過請求 "/recsys/rec_list" 接口,后端通過前端傳遞過來的用戶姓名,從數據庫中獲取用戶id,再根據用戶id去推薦服務(recsys_server)中獲取到推薦列表。

3.3 熱門推薦頁

熱門推薦頁部分,前端通過請求'/recsys/hot_list'接口,通過傳遞用戶姓名和當前頁號來獲取熱門新聞列表。主要的邏輯和獲取推薦頁相同,區別在于熱門新聞信息主要是通過推薦服務(recsys_server)中的get_hot_list()方法來獲取到熱門新聞推薦列表。

3.4 新聞詳情頁

image.png

該部分主要包含一些新聞的詳細信息,其中還有兩個按鈕,用于收集用戶的顯性反饋,用戶可以根據自己對該文章的喜好程度進行喜歡和收藏的反饋內容。

如果用戶對該新聞之前點擊過喜歡或收藏,再次點擊該新聞應該在喜歡或收藏按鈕應該是點亮狀態,因此還需要根據mysql中再次查詢用戶與該新聞是否存在記錄,并將結果返回給前端,將其進行點亮展示??梢圆捎胠ikes和collections這兩個字段,通過True,False來判斷用戶對該文章之前是否點擊過喜歡或收藏。

3.5 用戶的行為

用戶在看新聞時主要會留下三種用戶行為:一是閱讀,即用戶在點擊一篇新聞的詳細頁時,用戶產生的行為;二是喜歡,在新聞詳情頁下面會存在喜歡按鈕,用戶可以通過點擊按鈕觸發系統記錄該行為;三是收藏,和喜歡行為同理,需要通過用戶主動的方式來觸發。

因此在用戶點進一篇新聞的詳情頁時候,前端會發送一個請求,并給后端傳遞一個json格式數據;在點擊喜歡或收藏按鈕的時候產生一個請求,并發送json數據;通過前端的傳遞的數據,后端對應的接口可以通過傳遞的參數對用戶行為進行記錄。

四、總結

本章節通過介紹前端和后端的交互,讓我明白了整個推薦系統的運行模式,同時了解遇到什么樣的問題應該找哪一塊才能得到解決。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內容