vue的history模式,koa2及路由的配置方法

按上图所示,以public下的ww文件夹为例,故访问路径为http://www.abc.com/ww/

normal.js 

注意顺序,如果/*优先注册,会导致ww这种二级目录失效,所以/*应该放最后

const Router = require("koa-router")
const router = new Router()
const fs = require("fs")
const path = require("path")
//注意顺序,如果/*优先注册,会导致ww这种二级目录失效,所以/*应该放最后
router.get("/ww/*", (ctx, next) => {
  let filePath = path.join(__dirname, "../public/ww/index.html") //图片地址
  ctx.set("Content-Type", "text/html;charset=utf-8")
  ctx.body = fs.readFileSync(filePath)
})
router.get("/*", (ctx, next) => {
  //ctx.body = "这是首页"
  let filePath = path.join(__dirname, "../public/index.html") //图片地址
  ctx.set("Content-Type", "text/html;charset=utf-8")
  ctx.body = fs.readFileSync(filePath)
})

module.exports = router

index.js--将该目录下的js文件自动载入并注册路由(即backend.js,frontend.js,normal,js里的路由进行注册)

const compose = require('koa-compose')
const glob = require('glob')
const { resolve } = require('path')

registerRouter = () => {
  let routers = [];
    glob.sync(resolve(__dirname, './', '**/*.js'))
        .filter(value => (value.indexOf('index.js') === -1))
        .map(router => {
            routers.push(require(router).routes())
            routers.push(require(router).allowedMethods())
        })
    return compose(routers)
}

module.exports = registerRouter

注意,中间件staticFiles要在router前注册,它会影响到目录里的其他文件是否可以被直接访问

app.js

const Koa = require("koa2")
const app = new Koa()
const staticFiles = require("koa-static")
//先注册staticFiles中间件,后注册路由中间件
app.use(staticFiles(__dirname + "/public/"))

const registerRouter = require("./routes")
app.use(registerRouter())


在vue-router中,需要把默认的/替换为/ww

const router = createRouter({
  history: createWebHistory("/ww"),
  routes,
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值