--max_old_space_size
命令強制分配內存來避免node進程 out of memory
項目前端相關指標:html
\ | 業務代碼大小 | 打包後代碼總量 | 路由數量 | 編譯總時長 | 熱加載時長 |
---|---|---|---|---|---|
總量 | 5.26 MB | 35.5MB | 近100個 | 20分 | 45 s |
==能夠看到前端編譯的時間已經極大的影響了開發人員的開發時間和開發效率==前端
功能模塊
爲第一維度分割大項目。location
分發到不一樣靜態目錄。hash
模式改成history
模式/src/index.js:
node
import browserHistory from 'history/createBrowserHistory'; const app = dva({ history: browserHistory(), });
package.json
/src/index.ejs
首頁文件中非本項目的文件引入nginx.conf:
nginx
location /sub-path/ { alias /xxx/dist/; #靜態文件路徑 try_files $uri $uri/ /xxx/dist/index.html; #404時從新定向到靜態文件目錄下的index.html下 }
nginx.conf:
json
location / { alias /xxxx/dist/; #靜態文件路徑 try_files $uri $uri/ /xxxx/dist/index.html; #404時從新定向到靜態文件目錄下的index.html下 }
nginx
前端404路由
和nginx404路由
同時存在致使無限刷新需緩存一個更新狀態在本地,防止死刷新tryRefresh() { if (window.sessionStorage.getItem('refresh') === 'true') { window.sessionStorage.removeItem('refresh'); this.show404 = true; } else { window.sessionStorage.refresh = 'true'; this.show404 = false; window.location.href = window.location.href; } }
setDefaultOpenKeys() { try { const { location: { pathname } } = this.props; let keys = []; const pathItems = pathname.replace('/', '', 1).split('/'); const pathItemsWithoutLast = pathItems.slice(0, pathItems.length-1); this.setState({ openKeys: pathItemsWithoutLast, }); } catch (err) { // what you do } }
將前端代碼拆分紅爲一個基礎模板和3個子項目。後端
\ | 業務代碼大小 | 打包後代碼總量 | 路由數量 | 編譯總時長 | 熱加載時長 |
---|---|---|---|---|---|
==項目 - 舊== | ==5.26 MB== | ==35.5MB== | ==近100個== | ==20分== | ==45 s== |
項目模板 | 0.45 MB | 2MB | 2個 | 15s | 1 s |
子項目一 | 3.5 MB | 28MB | 近70個 | 12分 | 7 s |
子項目二 | 4.2 MB | 12MB | 10個 | 4分 | 5 s |
子項目三 | 2 MB | 9.16MB | 16個 | 1.5分 | 2 s |