钩子属性
- 类型:
对象
钩子是听众收听next活动通常在next模块中使用,但也可以在
nuxt.config.js
.
nuxt.config.js
进口fs从“fs”进口路径从“路径”出口默认的{钩子:{建造:{完成(构建器){常量extraFilePath=路径.加入(构建器.nuxt.选项.buildDir,“extra-file”)fs.writeFileSync(extraFilePath,一些额外的)}}}}
在内部,钩子遵循冒号命名模式(例如,构建:完成
).为了便于配置,在使用时可以将它们构造为层次对象nuxt.config.js
(如上所示)来设置你自己的钩子。看到Nuxt内部获取有关它们如何工作的更详细信息。
列表的钩子
万博体育app彩票平台票
重定向到路由器。基地when not on root
让我们说你想为页面提供服务/门户
而不是/
.
这可能是一个边缘案例,而且nuxt.config.js”router.base
是当一个网络服务器将服务于其他地方而不是域根。
但当在当地发展,打击本地主机当路由器。基地is not / returns a 404. In order to prevent this, you can setup a Hook.
也许重定向不是生产Web站点的最佳用例,但这将帮助您利用Hooks。
首先,您可以改变router.base
;更新你的nuxt.config.js
:
nuxt.config.js
进口钩子从“/钩。”出口默认的{路由器:{基地:' /门户”}钩子:钩子(这)}
然后,创建几个文件;
钩子/ index.js
,钩子模块钩子/ index.js进口渲染从”。/渲染”出口默认的nuxtConfig=>({渲染:渲染(nuxtConfig)})
钩子/ render.js
,使钩钩子/ render.js进口redirectRootToPortal从”。/ route-redirect-portal '出口默认的nuxtConfig=>{常量路由器=反映.有(nuxtConfig,“路由器”)?nuxtConfig.路由器:{}常量基地=反映.有(路由器,“基地”)?路由器.基地:' /门户”返回{/** * 'render:setupMiddleware' *{@link核心/ renderer.js node_modules nuxt / lib /}*/setupMiddleware(应用程序){应用程序.使用(' / ',redirectRootToPortal(基地))}}}
钩子/ route-redirect-portal.js
中间件本身钩子/ route-redirect-portal.js/** * next中间件钩子重定向从/到/portal(或我们在next .config.js中设置的任何路由器。base{@linknode_modules /连接/ package.json}*/进口parseurl从“parseurl”/** *连接中间件处理重定向到所需的Web应用程序上下文根。* *注意,next文档没有解释如何使用钩子。*这是一个示例路由器来帮助解释。* *参见nice implementation for inspiration: * - https://github.com/nuxt/nuxt.js/blob/dev/exa万博体育app彩票平台票mples/with-cookies/plugins/cookies.js * - https://github.com/yyx990803/launch-editor/blob/master/packages/launch-editor-middleware/index.js * * [http_class_http_clientrequest]:https://nodejs.org/api/http.html#http_class_http_clientrequest * [http_class_http_serverresponse]: https://nodejs.org/api/http.html#http_class_http_serverresponse * *@param{http.ClientRequest.}要求的事情Node.js内部客户端请求对象@param{http.ServerResponse}res* .js内部响应[http_class_http_serverresponse@param{函数}下一个中间件调* /出口默认的desiredContextRoot=>函数projectHooksRouteRedirectPortal(要求的事情,res,下一个){常量desiredContextRootRegExp=新正则表达式(`^$ {desiredContextRoot}`)常量_parsedUrl=反映.有(要求的事情,“_parsedUrl”)?要求的事情._parsedUrl:零常量url=_parsedUrl= = !零?_parsedUrl:parseurl(要求的事情)常量startsWithDesired=desiredContextRootRegExp.测试(url.路径名)常量isNotProperContextRoot=desiredContextRoot= = !url.路径名如果(isNotProperContextRoot& &startsWithDesired===假){常量路径名=url.路径名===零?'':url.路径名常量搜索=url.搜索===零?'':url.搜索常量位置=desiredContextRoot+路径名+搜索res.writeHead(302,{位置})res.结束()}下一个()}
然后,每当开发中的同事不小心击中目标时/
到达开发web开发服务,next将自动重定向到/门户
贡献者














发现了一个错误还是想对文档做出贡献?在GitHub上编辑此页!