开场白
开始使用
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: generate 属性配置
- 类型:
Object
配置 Nuxt.js 应用生成静态站点的具体方式。
当运行 nuxt generate
命令或在编码中调用 nuxt.generate()
时,Nuxt.js 会使用 generate
属性的配置。
dir
- 类型: 'String'
- 默认值:
'dist'
nuxt generate
生成的目录名称。
devtools
- 类型:
boolean
- 默认:
false
配置是否允许 vue-devtools 调试。
如果您已经通过 nuxt.config.js 或其他方式激活,则无论标志为 true
或者 false
,devtools都会启用。
fallback
- 类型:
String
或Boolean
- 默认:
'200.html'
在将生成的站点部署到静态主机时,可以使用此文件。它将回退到模式:mode:'spa'
。
interval
- 类型:
Number
- 默认:
0
两个渲染周期之间的间隔,以避免使用来自Web应用程序的API调用互相干扰。
minify
- 不推荐使用!
- 使用 build.html.minify 来替代。
routes
- 类型:
Array
在 Nuxt.js 执行 generate
命令时,动态路由 会被忽略。
例如:
-| pages/
---| index.vue
---| users/
-----| _id.vue
上面的目录结构,Nuxt.js 只会生成路由 /
对应的静态文件。(译者注:因为 /users/:id
是动态路由) 如果想让 Nuxt.js 为动态路由也生成静态文件,你需要指定动态路由参数的值,并配置到 routes
数组中去。
例如,我们可以在 nuxt.config.js
中为 /users/:id
路由配置如下:
module.exports = {
generate: {
routes: [
'/users/1',
'/users/2',
'/users/3'
]
}
}
当我们运行 nuxt generate
命令时:
[nuxt] Generating...
[...]
nuxt:render Rendering url / +154ms
nuxt:render Rendering url /users/1 +12ms
nuxt:render Rendering url /users/2 +33ms
nuxt:render Rendering url /users/3 +7ms
nuxt:generate Generate file: /index.html +21ms
nuxt:generate Generate file: /users/1/index.html +31ms
nuxt:generate Generate file: /users/2/index.html +15ms
nuxt:generate Generate file: /users/3/index.html +23ms
nuxt:generate HTML Files generated in 7.6s +6ms
[nuxt] Generate done
棒极了,但是如果路由动态参数的值是动态的而不是固定的,应该怎么做呢?
- 使用一个返回
Promise
对象类型 的函数
。 - 使用一个回调是
callback(err, params)
的函数
。
返回一个 Promise 对象的函数
nuxt.config.js
const axios = require('axios')
module.exports = {
generate: {
routes () {
return axios.get('https://my-api/users')
.then((res) => {
return res.data.map((user) => {
return '/users/' + user.id
})
})
}
}
}
返回回调函数
nuxt.config.js
const axios = require('axios')
module.exports = {
generate: {
routes (callback) {
axios.get('https://my-api/users')
.then((res) => {
const routes = res.data.map((user) => {
return '/users/' + user.id
})
callback(null, routes)
})
.catch(callback)
}
}
}
加速带有有效载荷(payload
)的动态路由生成
在上面的示例中,我们使用来自服务器的user.id
来生成路由,但抛弃其余的数据。通常,我们需要从/users/_id.vue
中再次获取它。虽然我们可以这样做,但我们可能需要将generate.interval
设置为100
,以免通过调用来执行。因为这会增加生成脚本的运行时间,所以最好将整个用户对象传递给_id.vue
中的context
。我们通过将上面的代码修改为:
nuxt.config.js
import axios from 'axios'
export default {
generate: {
routes () {
return axios.get('https://my-api/users')
.then((res) => {
return res.data.map((user) => {
return {
route: '/users/' + user.id,
payload: user
}
})
})
}
}
}
现在我们可以从/users/_id.vue
访问的payload
,如下所示:
async asyncData ({ params, error, payload }) {
if (payload) return { user: payload }
else return { user: await backend.fetchUser(params.id) }
}
subFolders
- 类型:
Boolean
- 默认:
true
默认情况下,运行nuxt generate
将为每个路由创建一个目录并生成index.html
文件。
例如:
-| dist/
---| index.html
---| about/
-----| index.html
---| products/
-----| item/
-------| index.html
设置为false
时,将根据路由路径生成HTML文件:
-| dist/
---| index.html
---| about.html
---| products/
-----| item.html
注意:使用Netlify或使用HTML回退的任何静态托管服务器,此选项可能很有用。
并发
- 类型:
Number
- 默认:
500
路由的生成是并发的,generate.concurrency
指定在一个线程中运行的路由数量。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论