_ _ _ ____ ____ _ _ | |__ | |_ _ __ ___ | | ___| | _ \ ___ _ _| |_(_)_ __ __ _ | '_ \| __| '_ ` _ \| |___ \ | |_) / _ \| | | | __| | '_ \ / _` | | | | | | | | | | |___) | | _ < (_) | | | | | | (_| | |_|\__|_| |_|_|____/ \_\___/ \__,_|\__|_|_| |_|\__, | |___/
【簡介】
做 Single-page webapp 最大的問題就是不能像普通鏈接一樣:
- 要不給加上【#!】(Hashbang) (e.g.) http://www.example.com/webapp#!/login
- 這樣的【#!】,可以透過 (e.g.) http://www.example.com/webapp/index.html 有聯繫的 javascript 分析 【#!/login】,再輸出合適的內容
- 但看起來好不順眼,直接跟 (e.g.) http://www.example.com/webapp/login 相比,下面的順眼多了
- 要不只能傳送網址的 Root Directory (e.g.) http://www.example.com/webapp
- 這樣就更不方便,要登入就只能再按網頁上的按鈕來登入
- 而且,分享也更困難~
所以,現在要做的是:
- 讓網頁的內容能透過 (e.g.) http://www.example.com/webapp/login 來分享
- 讓【上一頁】按鈕能運作,真的返回先前的狀態
但,要注意的是:
- 網頁一定要透過 Javascript 才能執行
- 如果要照顧沒有 Javascript 的瀏覽器用戶,只能把整個網頁用 Server-side programme 重寫
- 不支援HTML5 的瀏覽器,也可以瀏覽網頁,但
- 網址還是會有 #!
- 不能使用【上一頁】、【下一頁】的按鈕
【事前功夫】
- 要有已經設定好的 Server:以下的教學會分別說明 Apache 跟 Nginx
- 為了簡化內容(還有小弟的技術不足, haha),以下內容用上 Javascript Framework (e.g.)AngularJS,EmberJS,BareboneJS
- 在這裡,會以 AngularJS 為目標
- 支援 html5 的瀏覽器,尤其是支援 【History.pushState】
【秒懂步驟~開始】
下面的教學,會以一下的設置做背景
- Server: Apache/ Nginx
- Website Path: /webapp/exampleApp/
- 所以內部瀏覽的網址是: 127.0.0.1/webapp/exampleApp
以下內容將會一氣呵成,需要解釋的可以再留言區問~