整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          深入理解 MVC 在實際開發中和thinkPhp、a

          深入理解 MVC 在實際開發中和thinkPhp、angular、vue框架關系

          VC 簡介

          MVC(Model View Controller),是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。主要目的提高了軟件可維護性、可復用性,也因為把 模型-視頻-控制器,進行抽象分離開發,有助于管理復雜的應用程序,因為您可以在一個時間內專門關注一個方面。例如,您可以在不依賴業務邏輯的情況下專注于視圖設計。同時也讓應用程序的測試更加容易。

          • Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。
          • 通常模型對象負責在數據庫中存取數據,前端表現為和后端之間接口調用。
          • View(視圖)是應用程序中處理數據顯示的部分。
          • 通常視圖是依據模型數據創建的。
          • Controller(控制器)是應用程序中處理用戶交互的部分。
          • 通??刂破髫撠煆囊晥D讀取數據,控制用戶輸入,并向模型發送數據。

          我們以web前端為例,來解釋一下 M-V-C 三者之間的關系,當用戶打開一個網站后

          • 加載靜態文件 html、css、js
          • View 渲染出第一次視圖,這時候是沒有數據的,View 調用 Model 方法
          • Model 調用后端接口,獲取到初始化數據并緩存在本地,通知 View 進行數據填充
          • 用戶操作界面,發起事件=> Controller 接收到事件
          • 如果是切換頁面的,則進行視圖選擇,View 改變之后,發現需要有數據沒有,則調用 model 方法,進行重新獲取數據
          • 如果是數據增、刪、改,則調用 Model 方法進行修改,Model 通知視圖做相應調整

          到這里大家還是會感覺到比較抽象,沒有實際的感覺,下面我們用后端一個框架(php 中的 thinkPHP)前端中的 vue 來理解這三者之間的關系

          MVC 從后端到前端簡單發展歷程

          沒有前端工程師的年代

          在很多年前,當時 js 剛起步,由于性能問題,前后端分離還沒開始等因素,但是網站開發僅僅是后端一個人的事,他們不寫接口,而是使用數據塞入html方式進行開發。

          最早以 php 為例,是 php + html + css 開發模式,但是也同樣遇到 php 和 html 混編,導致代碼可以維護性、復用性、開發的專注性、協作性,都非常低,為了改變這種現狀,出現了很多解決方案,而 thinkPHP 提供了 MVC 開發模式的解決方案,大大的改變了那種垃圾代碼的現狀,讓開發者感受到了爽的感覺。

          thinkPHP 中的 MVC

          在 thinkPHP 中

          • Model 就是作為,數據庫直接的增、刪、改、查,四個部分的,其它事情都不做,而且也只有 Model 可以直接和數據庫進行打交道
          • Controller 比真實的控制器能力要強,它不僅僅承載用戶操作事件接受者、視圖選擇、數據庫狀態改變,它還把數據庫通知視圖渲染數據的能力交給了它
          • View 根據 Controller 選擇的視圖,Controller 給與的數據進行視圖渲染,并把用戶操作的事件通知給 Controller 進行處理

          可以看出和 MVC 概念里面不同的是,Model 沒有直接通知 View 改變的能力,全部需要經過 Controller 進行處理加工,然后放入到 View 進行渲染(也就是另一種開發模式 MVP)

          前端工程師崛起

          后來因為互聯網的發展,業務開發的業務復雜度日益增長,用戶對于也沒的體驗要求越來越高(體驗式經濟)純服務端渲染的形態體驗肯定不可能非常好,也由于 js 的快速發展(得益于 Google 的 v8 引擎)使得前端工程師崛起了。

          js 的崛起使得,用戶對 web 交互操作的時候,可以立馬可以得到相應,且可以做動畫,而不是傻不拉幾的開始請求新的頁面,在哪等待瀏覽器的加載、

          而后為了使得前端開發更便捷,dom操作更方便,也出現了 jq 為代表的很多框架,但是依然沒有從軟件設計模式上去解決 好維護、好協同、更專注的問題,這個階段主要是對于常用的操作進行封裝階段。

          這個階段在前端抽象層來說,Model View Controller 三者相當耦合。

          而后出現了 angular 改變了這種格局,angular 的 MVC 的抽象

          • View 很清晰,就是 HTML + CSS
          • Controller 里面進行業務邏輯處理 & 后端數據、狀態的緩存
          • Model 比較不清晰,沒有明確說明,其實在 angular 中 Model 就是調接口的 ajax 但由于框架本身沒有明確的定義,所以有很多時候,開發者又耦合到 C 中

          angular的出現簡直算是跨時代的產物,從此前端 jq 獨大的局面開始變化。angular 中除了使用了 MVC 開發模式外,還引入很多比較好的概念,比如:依賴注入、雙向數據綁定等,具體這邊不做說明,今天的主題不是說這個。

          angular 雖然使用了 MVC ,但是對于很多東西的定義的不夠清晰,比如 Model,比如 Controller 中存在數據的緩存 + 業務邏輯的處理,這時候我們中國的開發者就有重新定義了一下 MVC,也就是現在中國很流行的 vue

          vue 中 的實際上有兩個 MVC,第一個 MVC,是相對于后端的,第二個MVC是前端內部的數據和視圖直接的MVC關系

          首先我們來說第一個,相對于后端的MVC

          • Model 是指調接口的 ajax,框架中沒有明確的定義,但是在樣例中卻表達的很清楚,Model 需要單獨建立文件夾,進行基于 promise 的 ajax 的封裝,Controller 中如果使用則進行調用
          • Controller 負責業務邏輯,視圖選擇,數據初始化等(在這個抽象里面 C 應該稱作 P,MVP 的 P 和 php 中的 C 很像,因為 Model 不直接和 View 進行打交道)
          • View 就是 HTML + CSS 對于數據的渲染,事件鉤子調用 C

          第二個,純前端內部的 MVC 抽象嗎,后來稱作 MVVM

          • Model 就是 vue 中的 data ,data 變化 由 VM 引擎 自動同步至視圖
          • Controller 就是 vue 中的 methods,負責業務邏輯處理、視圖選擇
          • View 就是 HTML + CSS 對于視圖的渲染,時間鉤子調用 methods 函數(當然提供的其它功能這邊就不做介紹啦)

          到這里基本就把東西介紹完啦,感謝大家讀完,我沒有多寫細節上的介紹,也沒有對框架的作者背景,為啥會開發這個框架等方面進行介紹,只是簡單的發展歷程稍微介紹,更多的是讓大家理解 MVC MVP MVVM 和框架之間的關系,并且知道他們的抽象層,分別負責什么。

          如何讓一群程序員爭論不休?”我想只需要說出那句名言:“PHP是世界上最好的語言”。包括現在,也是同樣會熱鬧起來[淚奔]。

          作為曾經我的入門語言,其實,對我而言,感情很深,或者說是感受很深。

          近些年,由于一些原因,其實在上一篇文章中已經提到的一些原因吧,導致PHP的使用率確實在降低,包括身邊的同事所在的公司,也可以看出來。

          比如我曾經待過的某大廠養老院,2000年初至2016年左右的很多項目都是用PHP做的,但是在2019年開始,新項目基本都用Golang了,很多舊項目,代碼已經成了“屎山”,也是用Golang來重構的。

          不管如何轉換,不管如何跟風或者替代,我始終覺得,只有合適的場景與需求,沒有垃圾的語言,每一種語言都有其獨特的地方,合適的場景,合適的業務,選擇合適的語言去做,這是最重要的。

          [比心]接下來,還是想回顧一下世界上最好的語言PHP的前世今生、PHP的特性與特色。

          PHP是一種流行的服務器端腳本語言,主要用于開發Web應用程序。它的名字是"PHP: Hypertext Preprocessor"的遞歸縮寫,強調了它的主要用途:處理Web頁面的超文本預處理。

          [比心]PHP的主要特點包括:

          易學易用:PHP易于學習,尤其適合初學者。語法簡單明了,最初輝煌的時候,是與HTML混編,不需要復雜的編譯過程。

          跨平臺性:PHP在多種操作系統上運行,包括Windows、Linux、macOS等,使得開發者可以在不同環境中工作。

          廣泛的數據庫支持:PHP支持多種數據庫系統,包括MySQL、PostgreSQL、Oracle等,方便與數據庫交互。

          強大的Web開發能力:PHP能夠處理表單數據、生成動態網頁內容、管理會話、處理文件上傳等,使其成為構建交互性網站的強大工具。

          開源和免費:PHP是開源的,免費使用,有大量的社區支持和資源可供開發者使用。

          巨大的社區和庫:PHP擁有龐大的社區,有豐富的擴展和庫,可用于加速開發過程,同時PHP擁有強大、豐富的函數庫,可以高效的開發。

          面向對象編程:PHP支持面向對象編程,開發者可以使用類和對象來構建更模塊化、可維護的代碼。

          安全性:雖然PHP在過去因安全問題而受到一些批評,但現在的版本更加注重安全性,提供了各種安全功能和最佳實踐。

          [比心]使用PHP的典型應用場景包括:

          網站開發:PHP廣泛用于構建博客、電子商務網站、社交媒體平臺等各種類型的網站。

          Web應用程序:開發各種Web應用,包括在線表單處理、內容管理系統(如WordPress)、電子郵件系統等。

          API開發:創建RESTful API,用于移動應用程序或其他Web服務的后端。

          命令行腳本:PHP也可用于編寫命令行腳本,用于自動化任務、數據處理等。

          總之,PHP是一種功能強大、靈活且易于學習的服務器端腳本語言,適用于各種Web開發項目。不過,需要注意合理的安全性措施以保護應用程序免受潛在的攻擊。

          喜歡的朋友點贊關注一下吧[來看我][來看我]

          #程序員經驗分享# #it那些事兒# #php最好的語言#

          能要求

          使用不同的標記方式第PHP代碼進行標識。

          實例代碼

          <!doctype html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>php中常用的標記</title>

          </head>

          <body>

          <?php echo "使用標準標記格式"; ?>

          <br />

          <? echo "使用短標記格式";?>

          </body>

          </html>


          (此處已添加書籍卡片,請到客戶端查看)

          運行結果


          (此處已添加書籍卡片,請到客戶端查看)

          知識說明

          PHP是嵌入式腳本語言,在實際開發中經常會與HTML內容混編在一起,為了區別HTML和PHP代碼,需要使用標記對PHP代碼進行標識。

          <?php echo "使用標準標記格式"; ?>:是一段嵌入在HTML中的PHP代碼。其中“<?php”和“?>”是PHP標記中的一種,專門用來包含PHP代碼,echo用于輸出一個或多個字符串。在結束標記前的最后一條語句的分號“;”可以省略。這是一種標準標記方式,是最常用的標記類型,服務器不能禁用這種風格的標記。PHP推薦使用這種方式。

          <? echo "使用短標記格式";?>:短標記格式以“<?”開始,以“?>”結束。在使用時,需要將php.ini中的short_open_tag選項設置為On,開啟短標記功能后才能使用。

          注意:如果腳本中包含XML語句,應避免使用短標記“<? ?>”,要選擇標準的標記“<?php ?>”。因為“<?”是XML解析器的一個處理指令,如果腳本中包含XML語句并且使用短標記格式,PHP解析器可能會混淆XML處理指令和PHP開始標記。


          主站蜘蛛池模板: 精彩视频一区二区三区| 久久久久人妻一区精品果冻| 无码国产精品一区二区免费16| 国产吧一区在线视频| 福利一区国产原创多挂探花| 日韩精品人妻一区二区三区四区| 亚洲乱码国产一区三区| 视频在线一区二区三区| 性色AV一区二区三区无码| 精品黑人一区二区三区| 色欲AV蜜臀一区二区三区| 国产自产在线视频一区| 三上悠亚日韩精品一区在线| 激情啪啪精品一区二区| 美女AV一区二区三区| 无码一区二区三区亚洲人妻| 国产精品日韩欧美一区二区三区| 麻豆亚洲av熟女国产一区二| 色窝窝无码一区二区三区成人网站 | 亚洲码一区二区三区| 无码人妻久久一区二区三区 | 亚洲欧美一区二区三区日产| 亚洲香蕉久久一区二区| 精品欧洲av无码一区二区14| 国模私拍福利一区二区| 99热门精品一区二区三区无码| 精品国产福利一区二区| 在线欧美精品一区二区三区| 人妻在线无码一区二区三区| 无码av中文一区二区三区桃花岛| 无码中文字幕一区二区三区| 精品国产一区二区三区www| 四虎在线观看一区二区| 视频一区视频二区制服丝袜| 天天看高清无码一区二区三区| 国产成人综合精品一区| 亚洲av福利无码无一区二区| 亚洲综合一区二区精品久久| 国产微拍精品一区二区| 一区二区三区四区在线播放| 寂寞一区在线观看|