為什麼很少前端開發會對介面資料定義Model?

時間 2021-05-11 19:43:38

1樓:周林

很簡單啊,因為介面定義不能放在前端。前端同學對後端資料庫完全不了解,在這個情況下,定義的介面model幾乎都不是最優的(對後端來說),因此無法得到後端的支援,或者根本就是後端無法實現的。

不過前端需要對自己的頁面模組定義Model,也就是View層對應的Model,然後將後端的介面轉換為View所需的Model即可。這個前後端Model轉換的過程,可以放在瀏覽器端,也可以通過nodejs中間層來實現。

這樣,前後端各司其職,唯一耦合的地方也可以通過介面資料轉換來實現。而不是前端強行為後端定義介面,而不考慮後端系統的實際情況。

2樓:ivan zhang

首先json和js的資料是無縫銜接的,model的作用除了效率外還起了一定的安全作用,限制資料型別和欄位名,前端不需要,可以拿到資料後直接按照「model」的方式使用,為什麼還要定義model?

3樓:

定義 Model:

+ 介面更變後不用費大勁修改 ViewModel 和 View,只需要改 Model,專案規模一上去,這玩意是害死人的.

+ 方便加入資料過濾,保證資料安全.

+ 提供了乙個你可以為所欲為的統一地帶.

+ 要是給伺服器介面也寫了定義,撕逼真是方便.

不定義 Model:

- 不知道這是什麼東西,它為什麼引入,以及它解決了什麼.

- 歷史包袱,比如專案沒有辦法使用 TypeScript(個人認為 Model 配合 TS 才能最佳發揮優勢,JS 加上去開發體驗打折很多),但這個其實可以使用 IDE + Typings 彌補.

- 專案規模還沒到那種程度,就幾行的東西還加這玩意.

- 什麼都懂,純粹覺得麻煩.

4樓:凌妖

首先, 大部分資料都是以JSON形式傳輸的, 在JS中, 前端可以直接使用"點"語法, 一路點下去, 方便不易出錯.

在Android和iOS中, 基本上不轉成Model的話, 就得手寫key, 更容易出錯, 而且在不請求API的情況下, 不知道返回資料的資料結構.

而且根據不斷變換的需求, 開發者並沒有多少思考框架架構的時間.

5樓:KentonYu

iOS 轉前端的小白說一句

習慣了 iOS 裡各種 Model 對映框架( YYModel JSONModel.etc )之後,上手 js 那叫乙個難受,改個邏輯,還得先找介面文件,看那些欄位的意思和型別。特別的是長得像 Number 的 String 字段或者長得像 String 的 Number 字段 ,外加 === 判斷,得先判斷型別日了狗了。

享受過 Xcode 的智慧型提醒 ,發現 VSCode + js 簡直是渣渣,當然這也跟習慣有關係,寫多了 OC ,js 的各種 vars funcs 的名字也很長 。當然不得不吐槽作為有點潔癖的開發經常不滿意服務端的字段命名,反正我就是這樣,什麼 ID URI 縮寫統統給我大寫,不然會很不爽。

回到正題,我們為什麼不在 js 裡先定義個 Model 層呢? 我覺得至少有以下幾個原因:

1. 原來的 Web 應用都是基於後端的模版引擎的,也就是說 Model 其實是在後端的;

2. 前後端分離之後,還沒有完全意識到前端 = 乙個完整的應用,大多數人還停留前端就是展示介面,所以側重點在資料和UI 的對映上。

3. 專案迭代速度決定了開發的思考時間,專案那麼趕,還要老子乙個個給介面建 Model?天真了吧。

4. 大多數專案沒有引入靜態型別校驗,因此 Model 的收益會有所降低。

劃重點,但是建了 Model,寫了字段注釋的話,接鍋的人會給你燒高香的!!!記得寫上 Author

以上純屬瞎BB,輕噴

6樓:SimplyY

其實M層的建立有兩個大方面。

乙個是定義M層的資料結構,也就是各個欄位的含義及型別,這有利於複雜專案開發以及多人合作開發。

另乙個是將M層的資料持久化的存在客戶端,而不是拿了ajax的資料就只更新V層,這樣資料實際上就丟了,沒法多頁面多元件共享資料。

客戶端程式設計和(非spa的)網頁程式設計其實還是挺有區別的,而spa其實更像客戶端程式設計,會儲存資料,資料在多個「頁面」共享,而不是像網頁那樣靠重新整理和頁面跳轉來拉取最新資料,所以往往大部分網頁(不重新整理或者跳轉到話)的資料不是實時最新的。

也就是說對於大部分網頁而言,實際上並不需要資料持久化、實時更新、資料多頁面共享等功能,所以對於大部分簡單網頁實際上不需要M層。

當然對於重互動的網頁,甚至於spa這種,前端M層的需求自然就有了,像redux,ts等等實際上就解決了我最上面說的資料結構字段定義以及資料持久化等問題,很多複雜的前端頁面(也有可能是electron)也都開始使用了。

所以,我想說的是,前端要不要M層還是看場景的。

ps: 我沒把react state算作M層,因為state屬於乙個乙個的元件,是零碎的,不符合我最上面說的兩個方面。當然對於概念的理解因人而異,明白我的意思就行。

7樓:順陌先生

因為不做任何預處理的js 缺少善意的model之母——-類的支援!

ios android使用的語言人家叫物件導向...

js呢...天天仿造...

別說新標準和ts...沒babel能跑??

8樓:

別聽他們瞎叨叨,其實吧,一切都是那個你肯定聽過的很土鱉的原因,那就是因為前端用的語言是動態弱型別…

因為是動態型別,一切設計模式都可以不用,想怎麼玩兒就怎麼玩兒,怎麼短平快怎麼玩兒。

至於這麼瘋玩到底好不好,歷史已經給你答案。

9樓:brant

從iOS的角度說一下:

不定義model在使用欄位的時候,你得記得那個欄位名,多處使用了就到處寫,這很容易寫錯,如果後端修改了欄位名稱或者什麼的,漏改的可能性更大。

定義了model就不同了,有IDE的提示,你不需要記住欄位名,可以隨時檢視都有一些什麼字段,修改了字段,呼叫的地方會報錯。不會出現漏了改動。

web端肯定也是存在這些的。

10樓:三月懶驢

為什麼前端沒有這個習慣?其實很簡單。因為以前的前端都是MVC裡面的View 。Model層在後端就定義好了。view層接受顯示就好了。

11樓:七七

可能只是不知道這樣吧。。。

我以前也沒想到可以這樣寫,後來跳的坑多了,就知道了。前端和客戶端都是偏前的,很多可以互相學習的。我那時候後端由於種種亂起八糟的原因導致給的字段一種條件下是videoUrl,一種條件下是videourl,怎麼一會有問題一會沒問題,後來查了半天才發現是欄位名大小寫的問題,奇怪客戶端為什麼沒出現這個bug,然後他們說他們拿到資料後會先定義個model,那時候就想其實前端也可以這樣啊,這樣能解決好多問題,比如,

後端改欄位名;

後端給的無用的資料太多;

資料型別;

簡單的資料處理;

這樣前端的資料都掌握在前端手上,改個欄位名什麼的不用後端,其實這部分也可以做node中間層,具體的有沒有必要在node上寫這些,就看具體專案了

12樓:

因為沒用 TypeScript + 1。

沒那麼多其他回答的大道理,objC 要過編譯器檢查,沒有 Model 你要手寫一路的get 方法呼叫, [apiData get "fieldName"],太煩。

換成 JS 這種動態語言一路點點點,點過去毫無障礙。點兩下的成本比定義 model 低太多,而且 model 定義完了,沒有編譯器就沒有立等可見的檢查,回報不立即見效。

13樓:丁長老

隨便說兩句吧,不是回答「為什麼」,只是恰好相關。

今天上午有個朋友問我,怎麼規範前端和後端介面呼叫的問題.我給了他幾條約定建議.

1.最佳的約定方式是用IDL.用IDL的好處在於,定義IDL之後,通過合適的工具編譯,可以防止前後端亂改介面標準.

2.如果因為技術選型的原因,沒法使用IDL,那麼應該使用JSON或者XML作為傳遞引數,介面呼叫之後的返回值也是JSON或者XML格式.這樣只需要定義乙個唯一的介面.

好處在於JSON或者XML的引數可以做前置校驗.後端可以通過前置校驗來過濾掉前端的一些錯誤呼叫.傳遞給前端結果是乙個完整的Model.前端同樣也可以做一些校驗工作.

3.restful.

這三點,實際操作上,第二種方式,最好理解,操作起來最靈活。我實際遇到的,公司之間對接的介面。很多都會這樣操作。

只要給介面接入方乙份介面文件,告訴對方介面位址,基本就可以完全不管了。

如果把前後端兩個組當作兩個公司來看,只要後端能整出乙份介面文件,直接丟給前端。溝通都可以減少很多回合。

僅作參考。

14樓:2gua

那是因為沒用Angular。用了Angular就很自然習慣使用Model了。所以有時候不是說Angular不好、不是說它有多麼多的缺點,而是接受程度,以及所謂「政治正確」的錯覺造成的而已。

資料結構學好了會對前端開發有什麼幫助?

可可 以全端工程師為目標的我來看,資料結構不管怎樣都用得到,你做乙個物件乙個元件一組資料,最起碼要考慮怎樣設計才最合適時間空間最優,這些都要資料結構知識!不懂資料結構怎麼可以!話說,我面試開發者的時候,問了一些最基礎的資料結構問題,能答上來的寥寥無幾的時候,我都感到很崩潰 QAQ 龍騰道默默地 你是...

為什麼前端工程師很少用 Visual Studio Windows

wangyu60 Visual Studio Code 了解一下?Visual Studio Code Code Editing.Redefined 永恆的夢魘 我是個前端工程師 visual studio 開發前端頁面確實沒有hbuilder 用著好前端又不需要什麼環境,能從瀏覽器開啟就行。又一次...

你們為什麼堅持從事前端開發工作?

蘇夢苓 其實我們生活中有很多這樣的堅持案例 起初做前端工作是因為比較喜歡,在學習前端的時候也是比較感興趣的。還有是薪資方面的話也會比一般的工作薪資高。 前端改變了我的命運 在轉行前端之前二十多年來一直拿著不到3k的工資也沒學歷29轉前端後第一年5k 第二年10k 現在快兩年半了跳槽 15k 在乙個二...