黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 基于TS手寫前端MVC框架簡單實現(xiàn)購物車功能

基于TS手寫前端MVC框架簡單實現(xiàn)購物車功能

來源:千鋒教育
發(fā)布人:wjy
時間: 2022-08-11 10:28:14 1660184894

  一、后端TS版搭起MVC架構的web服務器

  注意點:

  1.用TS寫node服務器需要先下node API的TS庫

  2.通過引入文件,通過回調(diào)方式,將參數(shù)傳入引入文件進行不同層的聯(lián)動操作

  3.事件偵聽,拋發(fā)的方式完成路由操作

  項目目錄說明:

  1.main:

  0)入口文件

  1)創(chuàng)建了main單例,在當前頁面執(zhí)行main實例的init方法,即直接node main.js開啟服務

  2)init方法中根據(jù)引入的sever類,創(chuàng)建server對象開啟web服務

  3)main類,創(chuàng)建時即注冊了購物車增刪改查操作的事件以及對應的觸發(fā)函數(shù)dataHandler

  4)因為所有的觸發(fā)函數(shù)是同一個,根據(jù)傳進來事件類型的不同而去創(chuàng)建command對象并執(zhí)行其exec方法

  2.sever:

  0)負責web服務

  1)接收處理接口請求傳過來的data數(shù)據(jù)及type接口類型

  2)拋發(fā)給main的實例去處理type類型,data數(shù)據(jù),同時將http的req,res也傳遞出去

  3.command:

  0)主要用來處理各種業(yè)務邏輯,連接Model層等,工作類似于controller層(這里包括ResDataShow,ResGoodsOperate,ResShoppingShow文件)

  1)這里只寫了部分功能的注釋,請查看ResGoodsOperate類的addGoods,deleteGoods,getShoppingItem,getShoppingIndex方法

  4.model:

  0)充當數(shù)據(jù)庫的角色,web服務只要不掛,這些數(shù)據(jù)就會一直保持動態(tài)更新(掛了,就恢復為初始值了)

  1)主要存放購物車表及商品表數(shù)據(jù)

  2)創(chuàng)建model的單例,外部主要操作的是model單例

  5.VO層:主要用來定義一些常量,或者說是配置文件,方便根據(jù)不同需求直接修改配置文件中的參數(shù)即可,不用去每個程序文件中修改

  6.Interface層:

  0)存放接口文件

  1)用于創(chuàng)建規(guī)范聲明數(shù)據(jù)類型(TS中不能隨便定義var xx={a:1,b:"2",c:false}這樣的數(shù)據(jù))

  2)用于創(chuàng)建規(guī)范的類(如要求command層的類都必須要寫一個exec方法)

  后端架構圖:

基于TS手寫前端MVC框架簡單實現(xiàn)購物車功能

  二、TS前端MVC架構

  項目目錄說明:

  1.入口文件:

  0)入口文件相當于直接掛載到對應的html頁面上,加載頁面時,就直接執(zhí)行該文件,類似于三階段實際運行在生產(chǎn)環(huán)境的是dist靜態(tài)資源,這里的HTML頁面相當于public下的index.html,入口文件相當于是app.js,如ShoppingList.ts,GoodList.ts

  1)以ShoppingList.ts舉例,當渲染購物車列表頁面時,加載該文件,具體細節(jié)看該ts文件的注釋

  2.business:

  0)專門處理通信模塊,項目主要封裝AJAX類的post,get方法

  1)給外部其他層去進行ajax請求(主要是view層的shoppingTable中添加,刪除,選中等功能需要調(diào)用,這里不應該在view層內(nèi)進行ajax請求,而是拋出事件在控制層進行數(shù)據(jù)請求)

  2)因為后臺只實現(xiàn)了商品列表和購物車功能,且接口必返回商品或者購物車數(shù)據(jù),所以這里自動更新Model層的存的數(shù)據(jù)(因為view層視圖主要是根據(jù)Model層里的數(shù)據(jù)進行渲染的)

  3.component:

  1)寫一些用于View層的組件,注意因為TS中沒有事件拋發(fā),所以用自己重寫的events層來拋發(fā)數(shù)據(jù)(如stepNumber組件)

  2)用在command層,實際還是當成view層,做模板視圖作用

  4.events:上述的重構的事件拋發(fā)機制

  5.Interface:存放接口文件,用于規(guī)范聲明數(shù)據(jù)類型以及其他類

  6.utils:存放一些公用的工具ts文件

  7.vo:主要用來定義一些常量,或者說是配置文件,這里只寫了事件類型名稱,ajax后端接口的配置文件

  8.command:

  0)為了配合controller層而寫的一些命令類,主要作用是在其中的exec方法中寫業(yè)務邏輯

  1)以ShowShoppingCommand為例,每次觸發(fā)事件執(zhí)行exec方法,作用是重新生成shoppingTable視圖

  9.controller

  0)項目的控制中心,充當觀察者的角色,其中還用到了抽象工廠模式+單例模式(本來打算用工廠模式)

  1)總結:controller相當于是整個前端項目的觀察者,繼承EmitterTarget類,

  2)必須具備有add, remove, dispatch三種方法, 而這三種方法相當于是基于EmitterTarget中的三種方法封裝的

  3)注意controller里的兩個屬性有不同的作用:commandList和list(繼承于EmitterTarget的屬性)

  commandList存放命令類型,對應命令操作的實例化對象數(shù)組(不同類的對象)

  list存放命令類型,對應命令操作的實例化對象的exec方法的數(shù)組(有點像commandList的底層實現(xiàn))

  4)具體細節(jié)看MainController.ts文件的注釋

  10.model

  1)viewModel:主要用的是其單例,存放兩個屬性divCon容器和showTable模板,這里是用作前端引擎模板作用(根據(jù)ShowShoppingCommand.ts以及入口文件ShoppingList.ts推斷)

  2)mainModel:主要是存數(shù)據(jù)的作用,完成的目的是為了組件之間的通信以及利用set get寫組件的屬性對應渲染到dom上。

  3)每次操作(購物車的增刪改查)引起mainModel層存儲的數(shù)據(jù)變動(setter)(入口文件ShoppingList.ts綁定通知的事件)

  ->controller層執(zhí)行command層的命令進行操作

  ->command層去執(zhí)行調(diào)用viewModel

  ->viewModel去調(diào)用view層的模板重新渲染視圖到頁面

  ->view層渲染過程中請求mainModel層的數(shù)據(jù)(getter)

  11.view:展示插入到HTML頁面的主要內(nèi)容,結合了Component層中的組件,Model層MainModel數(shù)據(jù),business層的請求后臺接口操作,Utils層的工具方法,VO層的配置常量,interface層的接口規(guī)范,events層因為component層組件需要數(shù)據(jù)拋發(fā)接收,更多細節(jié)請看源碼ShoppingTable

  ==總結==

  1. TS和JS有很大不一樣的地方在于數(shù)據(jù)的規(guī)范型,所以各種地方都必須要涉及到去聲明數(shù)據(jù)類型是什么,需要引入已有的數(shù)據(jù)類型如ServerResponse,自定義創(chuàng)建如IRes這樣的接口。除此之外,我們只能通過斷言as或者聲明為any類型(迫于無奈的情況下)

  2. TS中沒有事件拋發(fā),所以在上述前后端操作中需要用到的事件拋發(fā)都是自己重寫的

  3. controller層中本來是想某個命令類型對應的是命令類數(shù)組,但是因為TS沒有泛型類數(shù)組不能直接存類的數(shù)組,所以這里存的是類對應的實例化對象數(shù)組。==目的是想用工廠模式,每次調(diào)用命令時,根據(jù)命令類數(shù)組創(chuàng)建新的實例,這樣在數(shù)據(jù)刷新或者下一次觸發(fā)命令時,上一次的數(shù)據(jù)不會殘留造成污染。由于TS的缺陷,這里用的實例化對象即單例模式。==

  4. 數(shù)據(jù)模型和顯示模型是完全分離的,實現(xiàn)了組件之間的通信,以及數(shù)據(jù)改變而重新渲染頁面(單向渲染?)

  5. 這里的MVC模式實際上M V C三層之間數(shù)據(jù)是可以雙向通信的,后面改良的RMVP模式V和M層不進行數(shù)據(jù)通信

  6. TS版的MVC架構,即model層變動->view層改變的單向數(shù)據(jù)流有點像React的單向數(shù)據(jù)流

  7. view層和component層是可以獨立拿開復用的,不去操作任何數(shù)據(jù),只有數(shù)據(jù)進入,數(shù)據(jù)拋出,==view層充當?shù)氖且晥D模板引擎的角色==

  8. MVC和MVVM的不同:

  1)view層本身是沒有不做任何數(shù)據(jù)操作,view丟出的數(shù)據(jù)交給controller去改變model view接收數(shù)據(jù),引起視圖模板改變,用戶操作view層,view層丟出數(shù)據(jù),交給其它層,如果這個層是controller層這里就是MVC結構

  2)如果這里是丟出數(shù)據(jù)交給的是Model層的viewModel,則這里是MVVM結構,viewModel即是VM,不僅僅是存儲視圖的中心,還充當完成一部分controller層的職責

  前端架構圖:以ShoppingList的操作為例

  更多關于html5培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內(nèi)強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
我想直播帶貨去哪里找貨源一件代發(fā)

現(xiàn)在直播帶貨是一個非常火的行業(yè),越來越多的人進入到這個圈子,但是,認真地說,直播帶貨能不能賺到錢還是要看自己。雖然這一行業(yè)火,收入高,...詳情>>

2023-09-19 08:41:02
入駐短視頻mcn需要多少錢?有哪些費用?

眾所周知,現(xiàn)在短視頻成了很多人的自媒體創(chuàng)業(yè)道路之一,越來越多人喜歡在網(wǎng)上消遣時間,購物等。也有很多優(yōu)秀的博主去做出很多新的內(nèi)容,那么入...詳情>>

2023-09-19 08:12:47
短視頻帶貨應該注冊什么公司?需要什么資料?

短視頻大家應該都非常熟悉,現(xiàn)在很多人都喜歡在閑暇的時候刷短視頻,短視頻平臺也開始了直播帶貨,商家也都開始創(chuàng)業(yè)了,那么短視頻帶貨需要營業(yè)...詳情>>

2023-09-19 08:09:31
怎樣投抖加不花錢?別人能看出來嗎?

抖音一些視頻為了獲取更多點擊,一些博主機會投抖加。其實抖加的投放沒有絕對正確的方法,而不同賬號和視頻投放的策略都是不一樣的,不過一般情...詳情>>

2023-09-19 08:00:10
抖店入駐收費多少?開抖店費用是多少?

如果要開通抖音小店,需要先把抖音賬號開通商品櫥窗功能。入駐之后,可以選擇頭條賬號、抖音賬號、火山賬號任一類型注冊或登錄。那開個抖店要多...詳情>>

2023-09-19 07:50:26
開班信息
北京校區(qū)
  • 北京校區(qū)
  • 大連校區(qū)
  • 廣州校區(qū)
  • 成都校區(qū)
  • 杭州校區(qū)
  • 長沙校區(qū)
  • 合肥校區(qū)
  • 南京校區(qū)
  • 上海校區(qū)
  • 深圳校區(qū)
  • 武漢校區(qū)
  • 鄭州校區(qū)
  • 西安校區(qū)
  • 青島校區(qū)
  • 重慶校區(qū)
  • 太原校區(qū)
  • 沈陽校區(qū)
  • 南昌校區(qū)
  • 哈爾濱校區(qū)
999精品在线| 一级毛片视频在线观看| 美女免费精品高清毛片在线视| 日本伦理片网站| 91麻豆tv| 国产麻豆精品hdvideoss| 久久精品大片| 色综合久久天天综合| 精品国产一区二区三区久久久狼| 日韩中文字幕在线亚洲一区| 韩国毛片基地| 日韩字幕在线| a级精品九九九大片免费看| 国产一区二区精品| 国产视频在线免费观看| 精品视频在线看| 国产韩国精品一区二区三区| 亚欧成人毛片一区二区三区四区| 国产91丝袜在线播放0| 国产国语在线播放视频| 欧美1区| 日韩在线观看免费| 夜夜操天天爽| 韩国三级视频网站| 黄视频网站免费| 欧美另类videosbestsex| 欧美激情伊人| 一级女性全黄久久生活片| 久久久成人影院| 国产91精品系列在线观看| 成人免费一级纶理片| 999久久久免费精品国产牛牛| 国产麻豆精品| 国产精品免费久久| 日韩中文字幕一区| 日韩免费在线视频| 青青青草影院| 精品在线视频播放| 天天做日日干| 国产视频久久久| 国产精品12| 日韩在线观看视频免费| 99色视频在线| 91麻豆国产福利精品| 欧美18性精品| 日韩avdvd| 久久精品大片| 91麻豆国产福利精品| 日韩一级黄色| 国产一区二区精品久久91| 美女免费毛片| 国产麻豆精品视频| 日韩字幕在线| 91麻豆精品国产自产在线观看一区| 日韩中文字幕一区| 国产不卡在线播放| 精品久久久久久综合网| 国产国语在线播放视频| 亚欧成人毛片一区二区三区四区| 麻豆网站在线看| 欧美激情一区二区三区在线播放| 四虎影视精品永久免费网站| 午夜在线影院| 国产一区二区精品在线观看| 国产亚洲免费观看| 九九久久99综合一区二区| 中文字幕一区二区三区精彩视频| 91麻豆tv| 四虎影视库| 精品视频在线观看免费| 欧美爱色| 欧美1区| 国产麻豆精品高清在线播放| 天天做日日爱| 国产伦理精品| 国产一区二区精品在线观看| 欧美一级视频免费| 九九精品久久| 久久99这里只有精品国产| 国产极品白嫩美女在线观看看| 日韩男人天堂| 日本在线不卡免费视频一区| 日韩avdvd| 四虎影视库国产精品一区| 亚洲女人国产香蕉久久精品 | 国产一区二区精品久| 黄色福利片| 成人a大片高清在线观看| 你懂的福利视频| 欧美激情一区二区三区视频高清| 青青青草影院 | 国产91素人搭讪系列天堂| 国产精品12| 超级乱淫黄漫画免费| 国产美女在线观看| 亚飞与亚基在线观看| 可以免费看污视频的网站| 日韩专区亚洲综合久久| 欧美激情一区二区三区在线| 欧美大片a一级毛片视频| 精品视频一区二区三区| 国产精品123| 国产一区免费观看| 国产伦理精品| 天天色色色| 国产精品自拍在线观看| 久久精品大片| 韩国毛片基地| 毛片高清| 国产网站免费在线观看| 免费国产一级特黄aa大片在线| 欧美电影免费| 色综合久久天天综线观看| 成人免费观看的视频黄页| 免费毛片播放| 天天色成人| 亚洲天堂免费观看| 九九久久国产精品大片| 一本高清在线| 国产91精品一区| 欧美大片毛片aaa免费看| 国产伦久视频免费观看 视频 | 成人a大片在线观看| 国产视频网站在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 香蕉视频一级| 色综合久久手机在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩免费片| 91麻豆精品国产高清在线| 午夜久久网| 国产视频一区二区在线观看| 国产精品免费久久| 国产伦精品一区二区三区无广告| 一级毛片视频免费| 日韩专区第一页| 亚洲 欧美 91| 中文字幕一区二区三区 精品| 国产91精品一区二区| 色综合久久天天综合绕观看| 精品久久久久久中文字幕一区 | 超级乱淫黄漫画免费| 一本伊大人香蕉高清在线观看| 韩国三级视频在线观看| 日本特黄特黄aaaaa大片| 91麻豆国产福利精品| 欧美1卡一卡二卡三新区| 免费毛片播放| 久久国产一区二区| 国产综合91天堂亚洲国产| 99久久精品国产国产毛片| 国产麻豆精品免费密入口| 国产精品12| 中文字幕一区二区三区精彩视频| 亚洲精品久久玖玖玖玖| 香蕉视频一级| 日韩av成人| 青青久久精品| 日韩免费在线视频| 日本在线不卡视频| 91麻豆精品国产自产在线观看一区| 欧美1区| 99色视频在线| 免费毛片基地| 韩国三级一区| 精品国产三级a∨在线观看| 毛片成人永久免费视频| 免费国产在线观看不卡| 欧美a级大片| 国产欧美精品| 成人免费一级纶理片| 99色视频在线| 精品视频在线看| 韩国妈妈的朋友在线播放| 99久久精品国产国产毛片| 国产不卡在线播放| 精品视频一区二区三区免费| 久久精品免视看国产成人2021| 日韩一级精品视频在线观看| 一a一级片| 久久99中文字幕| 国产视频久久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产视频一区在线| 精品美女| 欧美a免费| 欧美日本免费| 九九精品在线播放| 久久久久久久免费视频| 亚欧成人毛片一区二区三区四区| 一a一级片| 成人免费观看网欧美片| 999精品视频在线| 欧美另类videosbestsex久久| 青青久久精品| 夜夜操天天爽| 亚洲第一色在线| 99久久精品国产高清一区二区 | 久久99中文字幕| 国产激情视频在线观看|