router.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. export default ({ app, context, req, store}) => {
  2. if (process.server) {
  3. const { host, referer } = req.headers
  4. const routes = app.router.options.routes
  5. const isKaifain = host.includes('kaifain') || referer && new URL(referer).hostname.includes('kaifain')
  6. if (isKaifain) {
  7. const kaifainIndex = routes.find(v => v.name === 'kaifain')
  8. const kaifainSearch = routes.find(v => v.name === 'kaifainSearch')
  9. const kaifainRoutes = []
  10. // search
  11. if (!routes.find(v => v.name === 'kaifainSearch_$')) {
  12. kaifainRoutes.push({
  13. name: 'kaifainSearch_$',
  14. path: '/search',
  15. component: kaifainSearch.component
  16. })
  17. }
  18. // page
  19. if (!routes.find(v => v.name === 'kaifainPage_$')) {
  20. kaifainRoutes.push({
  21. name: 'kaifainPage_$',
  22. path: '/page/:page',
  23. component: kaifainIndex.component
  24. })
  25. }
  26. // category
  27. if (!routes.find(v => v.name === 'kaifainCategory_$')) {
  28. kaifainRoutes.push({
  29. name: 'kaifainCategory_$',
  30. path: '/c/:cat_id',
  31. component: kaifainIndex.component
  32. })
  33. }
  34. if (kaifainRoutes.length) {
  35. try {
  36. routes.unshift(...kaifainRoutes)
  37. app.router.matcher.addRoutes(kaifainRoutes)
  38. } catch (e) {
  39. console.log(e)
  40. }
  41. }
  42. }
  43. }
  44. if (process.client) {
  45. const { host } = location || {}
  46. const isKaifain = host.indexOf('kaifain') !== -1
  47. const isJishuin = host.indexOf('jishuin') !== -1
  48. const isJob = host.indexOf('job') !== -1
  49. console.log('before Route Path', window.__NUXT__.routePath)
  50. console.log("app.router.options.routes", app.router.options.routes)
  51. if (isKaifain) {
  52. window.__NUXT__.routePath = app.context.route.path.replace(/^\/kaifain/, '/')
  53. let kaifainIndex = app.router.options.routes.filter(v => v.name === 'kaifain')[0]
  54. let kaifainSearch = app.router.options.routes.filter(v => v.name === 'kaifainSearch')[0]
  55. let kaifainDetail = app.router.options.routes.filter(v => v.name === 'kaifain-detail-tid')[ 0 ]
  56. let kaifainCaseDetail = app.router.options.routes.filter(v => v.name === 'kaifain-case-tid')[ 0 ]
  57. let kaifainAdd = app.router.options.routes.filter(v => v.name === 'kaifain-add')[ 0 ]
  58. let kaifainPreview = app.router.options.routes.filter(v => v.name === 'kaifain-preview')[ 0 ]
  59. let kaifainPreviewCase = app.router.options.routes.filter(v => v.name === 'kaifain-previewCase')[ 0 ]
  60. let kaifainIndexNow = {
  61. name: 'kaifain_$',
  62. path: '/*',
  63. component: kaifainIndex.component
  64. }
  65. let kaifainPageNow = {
  66. name: 'kaifainPage_$',
  67. path: '/page/:page',
  68. component: kaifainIndex.component
  69. }
  70. let kaifainCategoryNow = {
  71. name: 'kaifainCategory_$',
  72. path: '/c/:cat_id',
  73. component: kaifainIndex.component
  74. }
  75. let kaifainSearchNow = {
  76. name: 'kaifainSearch_$',
  77. path: '/search',
  78. component: kaifainSearch.component
  79. }
  80. let kaifainDetailNow = {
  81. name: 'kaifainSeoDetails_$',
  82. path: '/s/:tid',
  83. component: kaifainDetail.component
  84. }
  85. let kaifainCaseDetailNow = {
  86. name: 'kaifainCaseSeoDetails_$',
  87. path: '/d/:tid',
  88. component: kaifainCaseDetail.component
  89. }
  90. let kaifainAddNow = {
  91. name: 'kaifainAdd_$',
  92. path: '/add',
  93. component: kaifainAdd.component
  94. }
  95. let kaifainPreviewNow = {
  96. name: 'kaifainPreview_$',
  97. path: '/preview',
  98. component: kaifainPreview.component
  99. }
  100. let kaifainPreviewCaseNow = {
  101. name: 'kaifainPreviewCase_$',
  102. path: '/previewCase',
  103. component: kaifainPreviewCase.component
  104. }
  105. let kaifainOrderList = [ kaifainPreviewCaseNow,
  106. kaifainPreviewNow,
  107. kaifainAddNow,
  108. kaifainCaseDetailNow,
  109. kaifainDetailNow,
  110. kaifainSearchNow,
  111. kaifainCategoryNow,
  112. kaifainPageNow,
  113. kaifainIndexNow
  114. ]
  115. try {
  116. app.router.options.routes.unshift(...kaifainOrderList)
  117. app.router.matcher.addRoutes(kaifainOrderList)
  118. } catch ( e ) {
  119. console.log(e)
  120. }
  121. }
  122. if (isJishuin) {
  123. window.__NUXT__.routePath = app.context.route.path.replace(/^\/jishuin/, '/')
  124. let jishuinCIndex = app.router.options.routes.filter(v => v.name === "user-collect_article-id-type")[ 0 ]
  125. let jishuinCType = app.router.options.routes.filter(v => v.name === "user-collect_article-id-type")[ 0 ]
  126. let jishuinUIndex = app.router.options.routes.filter(v => v.name === "user-id-type")[ 0 ]
  127. let jishuinUType = app.router.options.routes.filter(v => v.name === "user-id-type")[ 0 ]
  128. let jishuinU = {
  129. name: 'jishuinSeoU_$',
  130. path: '/u/:id',
  131. component: jishuinUIndex.component
  132. }
  133. let jishuinUT = {
  134. name: 'jishuinSeoUType_$',
  135. path: '/u/:id/:type',
  136. component: jishuinUType.component
  137. }
  138. let jishuinC = {
  139. name: 'jishuinSeoC_$',
  140. path: '/c/:id',
  141. component: jishuinCIndex.component
  142. }
  143. let jishuinCT = {
  144. name: 'jishuinSeoCT_$',
  145. path: '/c/:id/:type',
  146. component: jishuinCType.component
  147. }
  148. let jishuinOrderList = [
  149. jishuinCT, jishuinC, jishuinUT, jishuinU
  150. ]
  151. try {
  152. app.router.options.routes.unshift(...jishuinOrderList)
  153. app.router.matcher.addRoutes(jishuinOrderList)
  154. } catch ( e ) {
  155. console.log(e)
  156. }
  157. }
  158. if (isJob) {
  159. window.__NUXT__.routePath = app.context.route.path.replace(/^\/job/, '/')
  160. let jobIndex = app.router.options.routes.filter(v => v.name === 'job')[ 0 ]
  161. let jobDetail = app.router.options.routes.filter(v => v.name === 'job-detail-id')[ 0 ]
  162. let jobIndexNow = {
  163. name: jobIndex.name,
  164. path: '/*',
  165. component: jobIndex.component
  166. }
  167. let jobDetailNow = {
  168. name: jobDetail.name,
  169. path: '/d/:id?',
  170. component: jobDetail.component
  171. }
  172. let jobOrderList = [
  173. jobDetailNow, jobIndexNow
  174. ]
  175. try {
  176. app.router.options.routes.unshift(...jobOrderList)
  177. app.router.matcher.addRoutes(jobOrderList)
  178. } catch ( e ) {
  179. console.log(e)
  180. }
  181. }
  182. console.log('router', app.router)
  183. app.router.beforeEach((to, from, next) => {
  184. console.log("beforeEach", to, from)
  185. next()
  186. })
  187. }
  188. }