主張最少,也就是弱主張,他是在vue核心庫(視圖模板引擎)的基礎上,去逐步添加所需要功能(如,組件系統、路由、狀態機等)
vue“漸進式”:是指先使用vue核心庫,在vue核心庫的基礎上,根據自己需要再去逐漸增加功能。
Vue的核心的功能,是一個視圖模板引擎,但這不是說Vue就不能成為一個框架。
在聲明式渲染(視圖模板引擎)的基礎上,我們可以通過添加組件系統、客戶端路由、大規模狀態管理來構建一個完整的框架。
更重要的是,這些功能相互獨立,你可以在核心功能的基礎上任意選用其他的部件,不一定要全部整合在一起。
所說的“漸進式”,其實就是Vue的使用方式,同時也體現了Vue的設計的理念。
有一種理解是漸進式代表的含義代表:主張最少。
每個框架都不可避免會有自己的一些特點,從而會對使用者有一定的要求,這些要求就是主張,主張有強有弱,它的強勢程度會影響在業務開發中的使用方式。
比如說,Angular,它兩個版本都是強主張的,如果你用它,必須接受以下東西:
- 必須使用它的模塊機制
- 必須使用它的依賴注入
- 必須使用它的特殊形式定義組件(這一點每個視圖框架都有,難以避免)
所以Angular是帶有比較強的排它性的,如果你的應用不是從頭開始,而是要不斷考慮是否跟其他東西集成,這些主張會帶來一些困擾。
比如React,它也有一定程度的主張,它的主張主要是函數式編程的理念,比如說,你需要知道什么是副作用,什么是純函數,如何隔離副作用。它的侵入性看似沒有Angular那么強,主要因為它是軟性侵入。
你當然可以只用React的視圖層,但幾乎沒有人這么用,為什么呢,因為你用了它,就會覺得其他東西都很別扭,於是你要引入Flux,Redux,Mobx之中的一個,於是你除了Redux,還要看saga,於是你要糾結業務開發過程中每個東西有沒有副作用,純不純,甚至你連這個都可能不能忍:
const getData = () => {
// 如果不存在,就在緩存中創建一個並返回
// 如果存在,就從緩存中拿
}