傳統多頁面是由後端控制一個 url 對應一個 html 文件,頁面之間的跳轉須要根據後端給出的 url 跳轉到新的 html 上。好比:html
http://www.example.com/page1 -> path/to/page1.html http://www.example.com/page2 -> path/to/page2.html http://www.example.com/page3 -> path/to/page3.html
多數狀況下,這種方式都是沒問題的,但對一些業務邏輯類似,重前端的應用就不是很友好了,好比系統管理應用。前端
單頁面應用(single page application),就是隻有一個頁面的應用,頁面的刷新和內部子頁面的跳轉徹底由 js
來控制。vue
通常單頁面應用都有如下幾個特色:node
js
定義路由、根據路由渲染頁面、控制頁面的跳轉,這是單頁面應用最基本的特色;這樣一來,整個應用便只有一個 html 文件,路由由前端控制(有時候須要後端配合),前端對應用的控制就變得遊刃有餘了。react
通常來講,單頁面應用的路由從表現形式上來講分爲兩種:Hash Router 與 Browser Routerwebpack
經過 location hash 定義路由。git
http://www.example.com -> path/to/main.html http://www.example.com -> 主頁面 http://www.example.com/#/ -> 主頁面 http://www.example.com/#/page1 -> page1 頁面 http://www.example.com/#/page2 -> page2 頁面 http://www.example.com/#/page3 -> page3 頁面
這樣作的好處是後端只須要給一個 url 就能夠了,由於路由徹底是由前端實現的。github
經過瀏覽器連接定義路由。這個時候,每次路由就都像正常的瀏覽器連接跳轉同樣。web
這種路由須要後端配合,就是把全部須要路由的 url 都指定同一個 html 文件,由前端來根據 url 判斷怎樣渲染頁面。vue-router
http://www.example.com/page1 -> path/to/main.html http://www.example.com/page2 -> path/to/main.html http://www.example.com/page3 -> path/to/main.html
這樣作的好處是對搜索引擎友好,對瀏覽器的表現就像正常的 url 同樣。
按需加載,就是按照當前呈現的不一樣頁面加載不一樣的文件,而不是最開始就把全部文件都加載出來。
這樣作的好處是首頁第一次加載不須要把全部頁面的文件一次性所有加載出來,而是隻加載一些每一個頁面都依賴的基礎庫文件,從而避免首頁加載很慢。
這個功能須要構建工具的支持,dynamic-imports,好比:
register('page1', () => { import('filesOfPage1').then(() => { // 渲染 page1 }); }); register('page2', () => { import('filesOfPage2').then(() => { // 渲染 page2 }); });
上一篇:私有 npm 倉庫
更多博客,查看 https://github.com/senntyou/blogs
版權聲明:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)