开场白
开始使用
API
- API: The <client-only> Component
- API: <nuxt-child> 组件
- API: <nuxt-link> 组件
- API: <nuxt> 组件
- API: 构建配置
- API: buildDir 属性
- API: 缓存配置
- API: CSS 配置
- API: dev 属性配置
- API: dir 属性
- API: 环境变量配置
- API: generate 属性配置
- API: globalName 属性
- API: head 属性配置
- API: The hooks Property
- API: ignore 属性
- API: The loading indicator Property
- API: loading 属性配置
- API: The mode Property
- API: modern 属性
- API: modules 属性
- API: modulesDir 属性
- API: performance 属性
- API: plugins 属性配置
- API: The render Property
- API: rootDir 属性配置
- API: router 属性配置
- API: server 属性
- API: serverMiddleware 属性
- API: srcDir 属性配置
- API: transition 属性配置
- API: vue.config 属性
- API: watch 属性
- API: watchers 属性
- API: 上下文对象
- API: asyncData 方法
- API: The Builder Class
- API: The Generator Class
- API: The ModuleContainer Class
- API: The Nuxt Class
- API: The Renderer Class
- API: Nuxt Modules Intro
- API: nuxt.renderAndGetWindow(url, options)
- API: nuxt.renderRoute(route, context)
- API: nuxt.render(req, res)
- API: Nuxt(options)
- API: fetch 方法
- API: head 方法
- API: key 属性
- API: layout 属性
- API: loading 属性
- API: middleware 属性
- API: scrollToTop 属性
- API: transition 属性
- API: validate 方法
- API: The watchQuery Property
配置
- 外部资源
- 预处理器
- JSX
- Postcss 插件
- 如何扩展 Webpack 的配置
- Webpack 插件
- Caching Components
- 如何更改应用的主机和端口配置?
- 如何集成 Google 统计分析服务?
- 如何发起跨域资源请求?
- How to extend Webpack to load audio files?
部署
- 如何使用 Now.sh 进行部署?
- 使用 Surge.sh 部署
- 在 Google App Engine 上部署
- Netlify 部署
- AWS: S3+Cloudfront 部署
- Dokku 部署
- nginx 代理
- 如何部署至 GitHub Pages?
- 部署至 Heroku
其他
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
API: The hooks Property
- 类型:
Object
hooks是Nuxt事件的监听器,这些事件通常在Nuxt模块中使用,但也可以在nuxt.config.js中使用。了解更多
例如 (nuxt.config.js
):
import fs from 'fs'
import path from 'path'
export default {
hooks: {
build: {
done (builder) {
const extraFilePath = path.join(builder.nuxt.options.buildDir, 'extra-file')
fs.writeFileSync(extraFilePath, 'Something extra')
}
}
}
}
在内部,hooks遵循使用冒号的命名模式(例如,build:done
)。为了便于配置,当使用nuxt.config.js
(如上所示)设置自己的钩子时,可以将它们构造为分层对象。有关它们如何工作的更多详细信息,请参考Nuxt Internals。
hooks 列表
- Nuxt hooks
- Renderer hooks
- ModulesContainer hooks
- Builder hooks
- Generator hooks
例子
不在root上时重定向到 router.base
Let´s say you want to serve pages as /portal
instead of /
. 假设您希望将页面作为 /portal
而不是 /
来提供。 这可能是一个边缘情况, nuxt.config.js’ router.base
用于当Web服务器,服务Nuxt而不是域根目录时。
但是当在本地开发时,遇到 localhost,当router.base不是 / 返回404时。为了防止这种情况,你可以设置一个Hook。
也许重定向不是生产网站的最佳用例,但这将有助于您利用Hooks。
首先,你可以 改变 router.base
;更新你的nuxt.config.js:
// nuxt.config.js
import hooks from './hooks'
export default {
router: {
base: '/portal'
}
hooks: hooks(this)
}
然后,创建一些文件;
hooks/index.js
, Hooks 模块// file: hooks/index.js import render from './render' export default nuxtConfig => ({ render: render(nuxtConfig) })
hooks/render.js
, 渲染 hook// file: hooks/render.js import redirectRootToPortal from './route-redirect-portal' export default (nuxtConfig) => { const router = Reflect.has(nuxtConfig, 'router') ? nuxtConfig.router : {} const base = Reflect.has(router, 'base') ? router.base : '/portal' return { /** * 'render:setupMiddleware' * {@link node_modules/nuxt/lib/core/renderer.js} */ setupMiddleware (app) { app.use('/', redirectRootToPortal(base)) } } }
hooks/route-redirect-portal.js
, 中间件本身// file: hooks/route-redirect-portal.js /** * Nuxt middleware hook to redirect from / to /portal (or whatever we set in nuxt.config.js router.base) * * Should be the same version as connect * {@link node_modules/connect/package.json} */ import parseurl from 'parseurl' /** * Connect middleware to handle redirecting to desired Web Applicatin Context Root. * * Notice that Nuxt docs lacks explaning how to use hooks. * This is a sample router to help explain. * * See nice implementation for inspiration: * - https://github.com/nuxt/nuxt.js/blob/dev/examples/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} req Node.js internal client request object [http_class_http_clientrequest] * @param {http.ServerResponse} res Node.js internal response [http_class_http_serverresponse] * @param {Function} next middleware callback */ export default desiredContextRoot => function projectHooksRouteRedirectPortal (req, res, next) { const desiredContextRootRegExp = new RegExp(`^${desiredContextRoot}`) const _parsedUrl = Reflect.has(req, '_parsedUrl') ? req._parsedUrl : null const url = _parsedUrl !== null ? _parsedUrl : parseurl(req) const startsWithDesired = desiredContextRootRegExp.test(url.pathname) const isNotProperContextRoot = desiredContextRoot !== url.pathname if (isNotProperContextRoot && startsWithDesired === false) { const pathname = url.pathname === null ? '' : url.pathname const search = url.search === null ? '' : url.search const Location = desiredContextRoot + pathname + search res.writeHead(302, { Location }) res.end() } next() }
然后,每当开发中的同事到达开发Web开发服务/
时,发生了意外情况,Nuxt将自动重定向到/portal
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论