在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ angular6 打包代碼之后路由地址怎么變了?

angular6 打包代碼之后路由地址怎么變了?

先簡單說說項目情況吧

  1. 使用angular6.x版本
  2. 使用官方cli腳手架
  3. 前后分離,angular模塊調(diào)用node的api,node調(diào)用后端的服務(wù)
  4. angular打包過后的dist目錄放在node的靜態(tài)資源目錄下
  5. node使用koa作為框架,配套的還是用了koa-static,koa-router,koa-views

代碼如下

/*
* node 端部分代碼如下
* 用ejs模版作為模版引擎
*/
// router模塊
router.prefix('/node')
router.get('/index', async (ctx, next) => {
  await ctx.render('index.ejs', {})
  // 解釋一下為什么不是直接訪問angular打包過的靜態(tài)資源
  // 因為這邊要添加一個權(quán)限,如果沒有登錄的話需要重定向到其他的登錄頁面去(地址是動態(tài)的所以沒有放在angular里面)
  // 我將angualr打包過后的index.html里面的內(nèi)容復(fù)制到這個index.ejs文件中,配置好js等文件靜態(tài)資源目錄后,一切正常訪問
});
// 我將這個router文件導(dǎo)出后在app.js中一次性加載

// angular app-routing.module.ts文件部分代碼如下
@NgModule({
  imports: [RouterModule.forRoot(routes, { useHash: true})], // 使用了hash URL模式
  // imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
// 為了性能考慮app下掛在的路由都是采用懶加載的模式 如下:
loadChildren: './pages/aaa/aaa.module#aaa'

當(dāng)我打包之后用訪問 xxxxx:3001/node/index 就會拿到這個頁面,問題如下

// 打包過后的代碼會將我的我地址替換為如下地址,但是頁面沒有發(fā)生跳轉(zhuǎn)可以正常操作
// http://localhost:3001/#/store/home
// 但是不能刷新,刷新就會404 (因為我并沒有在node上配置這個url)

有沒有辦法可以不讓angular去修改url地址 例如訪問地址:

http://localhost:3001/node/index/#/store/home
// angualr自己在變動url的時候只是去變動#后面的
// cli打包命令使用 ng build --prod

因為有hash路由模式下頁面并沒有發(fā)生真實的跳轉(zhuǎn),為什么進(jìn)入之后url會是http://localhost:3001/#/store/home 難道不應(yīng)該是http://localhost:3001/node/index/#/store/home

回答
編輯回答
怣人

試試把index.html中的

<base href="/">

改為

<script>
    document.write('<base href="' + document.location + '" />');
</script>
2017年3月4日 22:14