門戶系統面向的是用戶,安全性很重要,而且搜索引擎對於單頁應用並不友好。因此我們的門戶系統不再采用與后台系統類似的SPA(單頁應用)。
(2)導入靜態資源
leyou-portal解壓
復制到當前工程目錄下
項目結構:
2.live-server
npm install -g live-server
<2>運行時,直接輸入命令:
live-server
-
--port=NUMBER
- 選擇要使用的端口,默認值:PORT env var或8080 -
--host=ADDRESS
- 選擇要綁定的主機地址,默認值:IP env var或0.0.0.0(“任意地址”) -
--no-browser
- 禁止自動Web瀏覽器啟動 -
--browser=BROWSER
- 指定使用瀏覽器而不是系統默認值 -
--quiet | -q
- 禁止記錄 -
--verbose | -V
- 更多日志記錄(記錄所有請求,顯示所有偵聽的IPv4接口等) -
--open=PATH
- 啟動瀏覽器到PATH而不是服務器root -
--watch=PATH
- 用逗號分隔的路徑來專門監視變化(默認值:觀看所有內容) -
--ignore=PATH
- 要忽略的逗號分隔的路徑字符串(anymatch -compatible definition) -
--ignorePattern=RGXP
-文件的正則表達式忽略(即.*\.jade
)(不推薦使用贊成--ignore
) -
--middleware=PATH
- 導出要添加的中間件功能的.js文件的路徑; 可以是沒有路徑的名稱,也可以是引用middleware
文件夾中捆綁的中間件的擴展名 -
--entry-file=PATH
- 提供此文件(服務器根目錄)代替丟失的文件(對單頁應用程序有用) -
--mount=ROUTE:PATH
- 在定義的路線下提供路徑內容(可能有多個定義) -
--spa
- 將請求從/ abc轉換為/#/ abc(方便單頁應用) -
--wait=MILLISECONDS
- (默認100ms)等待所有更改,然后重新加載 -
--htpasswd=PATH
- 啟用期待位於PATH的htpasswd文件的http-auth -
--cors
- 為任何來源啟用CORS(反映請求源,支持憑證的請求) -
--https=PATH
- 到HTTPS配置模塊的路徑 -
--proxy=ROUTE:URL
- 代理ROUTE到URL的所有請求 -
--help | -h
- 顯示簡潔的使用提示並退出 -
--version | -v
(3)測試
在idea軟件的terminal中輸入(已9002端口運行)
live-server --port=9002
瀏覽器訪問效果圖:
3.域名訪問
我們希望用域名訪問:http://www.leyou.com
127.0.0.1 www.leyou.com
server { listen 80; server_name www.leyou.com; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://127.0.0.1:9002; proxy_connect_timeout 600; proxy_read_timeout 600; } }
<2>將上述代碼插入指定位置,效果圖如下:
(3)測試
(4)再次啟動leyou-portal執行步驟
<1>利用live-server啟動leyou-portal這個前端工程
在idea軟件的terminal中輸入(以9002端口運行,不要更換成其他端口)
live-server --port=9002
<2>啟動Nginx代理
start nginx.exe
此時訪問:http://www.leyou.com/
注意:live-server服務器啟動項目默認先訪問index.html
<3>啟動ElasticSearch
可以打開bin目錄,雙擊elasticSearch.bat文件,啟動ElasticSearch
<4>啟動后台微服務
4.common.js
為了方便后續的開發,我們在前台系統中定義了一些工具,放在了common.js中:
部分代碼截圖:
定義了對象 ly ,也叫leyou,包含了下面的屬性:
-
getUrlParam(key):獲取url路徑中的參數
-
http:axios對象的別名。以后發起ajax請求,可以用ly.http.get()
-
store:localstorage便捷操作,后面用到再詳細說明
-
formatPrice:格式化價格,如果傳入的是字符串,則擴大100被並轉為數字,如果傳入是數字,則縮小100倍並轉為字符串
-
formatDate(val, pattern):對日期對象val按照指定的pattern模板進行格式化
-
stringify:將對象轉為參數字符串
-