亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

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

基于TS手寫前端MVC框架簡單實現購物車功能

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

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

  注意點:

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

  2.通過引入文件,通過回調方式,將參數傳入引入文件進行不同層的聯動操作

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

  項目目錄說明:

  1.main:

  0)入口文件

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

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

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

  4)因為所有的觸發函數是同一個,根據傳進來事件類型的不同而去創建command對象并執行其exec方法

  2.sever:

  0)負責web服務

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

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

  3.command:

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

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

  4.model:

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

  1)主要存放購物車表及商品表數據

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

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

  6.Interface層:

  0)存放接口文件

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

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

  后端架構圖:

基于TS手寫前端MVC框架簡單實現購物車功能

  二、TS前端MVC架構

  項目目錄說明:

  1.入口文件:

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

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

  2.business:

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

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

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

  3.component:

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

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

  4.events:上述的重構的事件拋發機制

  5.Interface:存放接口文件,用于規范聲明數據類型以及其他類

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

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

  8.command:

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

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

  9.controller

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

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

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

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

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

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

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

  10.model

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

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

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

  ->controller層執行command層的命令進行操作

  ->command層去執行調用viewModel

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

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

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

  ==總結==

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

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

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

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

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

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

  7. view層和component層是可以獨立拿開復用的,不去操作任何數據,只有數據進入,數據拋出,==view層充當的是視圖模板引擎的角色==

  8. MVC和MVVM的不同:

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

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

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

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

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您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
我想直播帶貨去哪里找貨源一件代發

現在直播帶貨是一個非?;鸬男袠I,越來越多的人進入到這個圈子,但是,認真地說,直播帶貨能不能賺到錢還是要看自己。雖然這一行業火,收入高,...詳情>>

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

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

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

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

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

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

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

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

2023-09-19 07:50:26
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
亚洲熟女一区二区三区| 无码精品国产一区二区三区免费| 熟妇人妻av无码一区二区三区| 午夜福利一区二区三区在线观看| 亚洲精品无码aⅴ中文字幕蜜桃| 伊人精品无码一区二区三区电影| 777成了乱人视频| 丰满人妻熟妇乱偷人无码av| 国产在线精品无码AV不卡顿| 老公带朋友来家里C我怎么办| 人妻丰满熟妇av无码| 无码天堂亚洲国产AV| 一二三四视频中文字幕在线看| YY111111少妇影院免费| 国产热の有码热の无码视频| 老狼老狼芦苇芭蕉| 色窝窝亚洲AV网在线观看| 亚洲国产成人精品无码区花野真一 | AV无码国产在线看免费APP| 高清不卡亚洲日韩AV在线| 精品亚洲国产成人AV不卡| 欧美综合在线激情专区| 亚洲AⅤ天堂无码专区-百度| 13岁幼儿3OOO| 国产精品天干天干有线观看| 胯下粗长挺进人妻体内电影| 少妇饥渴XXHD麻豆XXHD骆| 亚洲一二三四2021不卡| 成人午夜亚洲精品无码区毛片 | 男人把女人桶到爽免费应用| 玩弄秘书的奶又大又软| 余生请多指教在线观看免费全集 | 性BBBBBB裸体BBBBB开| 中文字幕成人精品久久不卡| 国产精品久久久久久久久久久不卡| 久久亚洲AⅤ精品网站| 私人微信放款24小时在线| 影音先锋亚洲成AⅤ人在| 国产AⅤ精品一区二区三理论片| 久久久久亚洲AV无码专区| 色欲精品国产一区二区三区AV| 亚洲小说图区综合在线| 国产AV无码专区亚洲AV桃花庵| 久久综合给合久久狠狠狠97色6 | 国产69精品久久久久777| 久久无码专区国产精品| 天天想你免费看西瓜视频| 18禁成人黄网站免费观看| 国产台湾无码AV片在线观看| 欧美群交性爱视频| 亚洲乱色熟女一区二区三区麻豆| 成年无码动漫AV片在线尤物| 久久亚洲色WWW成人网址| 无套内谢少妇毛片免费看看| JAVAPARSERHD夫妻| 久久久97精品国产一区蜜桃| 无码国产孕妇一区二区免费AV| 99久久久无码国产精品不卡| 精品国产一区二区三区久久久狼| 色多多WWW视频在线观看免费| 真实差差差无掩盖视频30分钟| 国产精品污WWW一区二区三区| 欧美成人一区二区三区在线视频 | 欧美性猛交XXXX免费看蜜桃| 亚洲色老汉AV无码专区最| 国产超碰AV人人做人人爽| 欧美成人天天综合在线| 亚洲一区二区女搞男| 国产精品一区二区AV麻豆| 人妻少妇一区二区三区| 中国CHINESE壮男GⅤ军警| 韩国的无码AV看免费大片在线| 日韩A片无码ⅩXXXX| 24小时日本在线| 精品一区二区三区国产在线观看| 无码人妻精品一区二区三区在线| 暗交拗女一区二区三区| 免费A级毛片无码无遮挡内射| 亚洲大尺度无码无码专区| 国产极品美女高潮无套在线观看 | 宝贝把腿张开我要添你下边动态图| 久久久久亚洲AV成人无码网站| 亚洲AV狠狠爱一区二区三区| 国产成人无码AV片在线观看不卡| 人人超碰人人超级碰国| 中文精品久久久久人妻| 久久变态刺激另类SM按摩| 亚洲AV日韩精品久久久久久久| 国产99视频精品免视看7| 日产无人区一线二线三线最新版| 95W乳液78WYW永久区域| 久久婷婷综合缴情亚洲狠狠_| 亚洲精品无码MV在线观看网站| 国产午夜无码精品免费看动漫| 天堂8在线天堂资源在线| 道德沦丧一家3口小说| 欧美和日本操逼视频| 1000部拍拍拍18勿入免费视 | 伊人久久中文字幕| 久久99热精品免费观看牛牛| 亚洲V欧美V国产V在线观看| 国产婷婷丁香五月缴情成人网| 天天躁日日躁狠狠躁欧美老妇小说 | 国产99久久久久久免费看 | 亚洲成AV人在线视达达兔| 国产偷窥真人视频在线观看| 无遮挡无码H纯肉动漫在线观看| 国产成人精品日本亚洲专区不卡| 色欲午夜无码久久久久久| 粗大挺进朋友未婚妻| 日韩精品无码一区二区 | 人人妻人人澡人人爽欧美一区 | 中文字幕色AV一区二区三区| 噜噜噜亚洲色成人网站| 岳故意装睡让我挺进去的电影| 久久天天躁狠狠躁夜夜不卡| 一面亲上边一面膜下边| 老头的大龟挺进秀婷小说| 又色又爽又黄的视频软件APP | 黑人大战亚洲女精品区| 亚洲超碰无码色中文字幕97| 娇妻被朋友在客厅呻吟动漫 | 婷婷伊人久久大香线蕉AV| 国产成人精品亚洲日本专区61 | 永久免费AV网站| 蜜桃AV蜜臀AV色欲AV麻| 777亚洲精品乱码久久久久久| 欧美成人V片观看| 八戒八戒神马影院在线观看 | 女生自己动手奖励自己的好处| 91久久精品www人人做人人爽| 欧美XXXX色视频在线观看| WWW内射国产在线观看| 日产乱码一二三区别视频| 疯狂做受XXXX国产| 无码专区人妻诱中文字幕| 和人妻隔着帘子按摩中字| 亚洲无人区码一码二码三码四码| 久久亚洲熟妇熟女ⅩXXX| 51爆料网每日爆料黑料| 人妻熟妇乱又伦精品无码专区| 放在里面边顶边吃饭H| 无码人妻精品一区二区蜜桃网站| 国精品午夜福利视频不卡| 亚洲一区AV无码少妇电影| 妺妺窝人体色www聚色窝仙踪| XXXXHDTEEN欧美内射| 少妇久久久久久被弄高潮| 国产无遮挡又黄又爽又色| 亚洲日韩精品欧美一区二区一| 毛茸茸BBWBBW中国妓女| 锕锕锕锕锕锕好爽视频软件 | 国产成人综合一区人人| 亚洲SSS整片AV在线播放| 久久婷婷五月综合尤物色国产| CHINESE东北嫖妓女HD| 视频一区麻豆国产传媒| 黑人又大又粗又硬XXXXX| 一本久道久久综合狠狠老| 欧美日韩人妻精品| 国产高清免费AV片在线观看不卡| 亚洲国产精品一区二区第四页 | 丰满人妻被黑人猛烈进入| 亚洲AV成人无码精品久久漂雪 | 色婷婷婷亚洲综合丁香五月| 国产偷国产偷亚洲清高孕妇 | 亚洲AV之男人的天堂网站| 麻豆高清免费国产一区| 成人网站在线观看丰满少妇电影| 小浪货水多奶大被领导| 巨大黑人极品videos精品| 差差漫画页面在线阅读弹窗在线看| 无码人妻丰满熟妇精品区| 久久夜色精品国产| 成人无码视频在线观看| 亚洲AV无码专区亚洲AV桃花桃| 麻豆国产96在线日韩麻豆| 妇女性内射冈站HDWWWOOO| 亚洲精品无码伊人久久| 欧美熟妇呻吟猛交XX性| 国产免费无遮挡吸乳视频在线观看| 一区二区三区无码被窝影院| 日本嫩交12一16XXX视频| 幻女BBWXXXX非洲黑人| AV免费啪啪永久| 小雪被老汉玩遍各种方式电影| 麻花豆传媒剧国产MV| 国产成人啪精品视频免费网站软件| 亚洲午夜无码毛片Av| 日韩精品专区在线影院重磅| 精品国产YW在线观看| 帮妺妺洗澡忍不住C了她作文| 亚洲AV中文无码乱人伦在线咪咕| 欧美激欧美啪啪片免费看| 国产精品天干天干在线观看| 50岁人妻丰满熟妇ΑV无码区| 性色欲网站人妻丰满中文久久不卡| 免费的最近直播比较火的黄台| 国产精品露脸视频观看| 99久久精品免费看国产一区二区|