單頁面應用真正開始像一個應用。php
多頁面是一個鬆散的結構,即便有個打包工具,能夠使用webpack進而使用模塊化。但每一個頁面是封閉的結構。html
類比小程序,小程序每一個頁面一樣是封閉,即便能夠經過本地存貯進行數據共享,如同多頁面也能夠額本地存儲進行數據共享。但有一點不管是多頁面仍是小程序都沒有作到的。vue
可是單頁面能夠實現的:全局導航守衛和全局響應攔截。react
從這點看說,vue和react這種輔助實現單頁面的框架其意義毫不是僅僅提高了網頁狀態改變的性能。更是從更高層面重構了開發。單頁面開發是web頁面分工程度的加重,是開發精細度和開發效率的提升。webpack
由於分工和重塑頁面元素角色因此能夠作更多的事情,包括之前無法實現的。構建了一種新的開始現象。web
單頁面開發各個角色定義:vuex
1,頁面是一個單獨的總體,是單獨的一個應用,其它都是其部分thinkphp
2,組件化,組件是總體的一部分,是涵蓋至少html元素的一個封裝,能夠複用redux
3,model能夠是一類相關的數據體小程序
4,可複用的js方法
5,全局配置項目,能夠參考php的thinkphp
6,全局路由導航和全局相應攔截
7,狀態機,狀態機就是vuex和redux創建起來的共享數據集
8,視圖或者叫路由
自己是一個mvvm的結構。
以上是爲分工角色。這樣依此做爲參照。小程序和多頁面參照下能夠是一種降級,小程序目前沒有全局路由導航,沒有全局路由響應。多頁面也沒有。
或者說小程序或者多頁面須要後端的輔助才能實現導航守衛和響應攔截。
分析到這,我想到技術的進步,從多頁面到單頁面是技術的進步。這種進步提早在控制能力和精度的提高上。
或者展望一下,谷歌的PWA更是一種進步,目前在單頁面應用能夠實現動態路由。或者PWA是將來的發展吧。
本文結束。
後記1:
看到過一句話:好的開發方式就是線性的增長代碼,單頁面開發無疑是符合的。
vue中存在組件的extends,能夠複用組件的相關js數據。