初識(shí)
vue.js是什么
vue是什么犹芹?官網(wǎng)首頁就有答案:漸進(jìn)式JavaScript框架呆躲。有靈活,易用八孝,高效的特點(diǎn)干跛。官網(wǎng)首頁有詳細(xì)的介紹:https://vuejs.org/guide/quick-start.html#with-build-tools
如何理解漸進(jìn)式
個(gè)人理解:
- 易上手牧抽,可以逐漸深入學(xué)習(xí)
- 初創(chuàng)項(xiàng)目很簡(jiǎn)單阐肤,沒有多余的東西,根據(jù)需要不斷添加插件擴(kuò)展項(xiàng)目。
相關(guān)功能有:解耦視圖與數(shù)據(jù)府瞄,數(shù)據(jù)驅(qū)動(dòng),可復(fù)用的組件,前端路由,狀態(tài)管理舒裤,虛擬DOM等鲜滩。
與React榜聂,Angular一樣,vue也是基于MVVM的一種架構(gòu)模式。
MVC->MVP(省略)->MVVM
一般MVC的架構(gòu)模式是前后端不分離,例如基于.net的ASP巷燥,基于java的JSP陨享。那么為什么在MVC架構(gòu)模式下開發(fā)的好好的,為什么還需要使用MVVM呢?我們用一張圖來看看MVC模式做了什么抛姑。
這是MVC的一個(gè)模型圖赞厕,model對(duì)應(yīng)數(shù)據(jù),view對(duì)應(yīng)視圖定硝,controller對(duì)應(yīng)控制器皿桑。看起來是一個(gè)很好的閉環(huán)蔬啡,view->controller->model->view,邏輯清晰诲侮,易于維護(hù),那這里面存在什么問題呢星爪?
個(gè)人認(rèn)為:
- 前后端不分離浆西,增加學(xué)習(xí)成本,人員問題
- 規(guī)范的還不夠嚴(yán)格顽腾,如果對(duì)MVC理解使用得不好可能會(huì)造成內(nèi)部代碼的混亂近零。例如多個(gè)controller對(duì)應(yīng)多個(gè)model的情況,那樣維護(hù)起來就有些麻煩抄肖。
- 隨著多端(桌面久信,h5,小程序)應(yīng)用的發(fā)展,controller慢慢的不再是控制路由和邏輯漓摩,而僅僅是邏輯裙士,作為數(shù)據(jù)接口使用,而不需要view的參與管毙。
那么MVVM就很好嗎腿椎?它本質(zhì)上就是MVC的改進(jìn)版,目前來看是不錯(cuò)的選擇夭咬。
MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時(shí)發(fā)展演變過來的一種新型架構(gòu)框架啃炸。它立足于原有MVP框架并且把WPF的新特性糅合進(jìn)去,以應(yīng)對(duì)客戶日益復(fù)雜的需求變化卓舵。
所以南用,MVVM的產(chǎn)生由來已久。其實(shí)很多前端的一些概念掏湾,在后端早已應(yīng)用裹虫,只是前端領(lǐng)域目前正如旭日東升,接納百家之長(zhǎng)而已融击。之前由于很多條件的限制下(帶寬/客戶端等)筑公,前端領(lǐng)域發(fā)展并不是很迅速,只需要完成簡(jiǎn)單的功能即可尊浪。隨著社會(huì)的進(jìn)步匣屡,人們已經(jīng)不僅限于對(duì)功能的要求涩拙,還需要很好的用戶體驗(yàn),所以迎來了前端的春天耸采。
插個(gè)話題
機(jī)器語言 -> 匯編-> C -> C++ ->
基于c++ 封裝: C#(2000)/java(20世紀(jì)90年代)
基于c++ 解釋: javascript(1995)(由于瀏覽器多由c++編寫)
言歸正傳
看看mvvm的架構(gòu)模式:
MVVM通過ViewModel為紐帶,當(dāng)view變化時(shí)工育,利用data binding , ViewModel會(huì)自動(dòng)變化虾宇,反之亦然。
再從網(wǎng)上盜兩張圖(個(gè)人覺得還是很清晰的):
如何使用vue.js
- 在頁面上以 CDN package 的形式導(dǎo)入如绸。
- 使用 npm 安裝它嘱朽。
- 使用官方的 CLI 來構(gòu)建一個(gè)項(xiàng)目,它為現(xiàn)代前端工作流程提供了功能齊備的構(gòu)建設(shè)置 (例如怔接,熱重載搪泳、保存時(shí)的提示等等)。