NUXT 项目实战
nuxt 路由
路由容器<nuxt/>
组件 相当于 vue的 <router-view></router-view>
<div class="container">
<header class="header">this is header</header>
<div class="con">
<nuxt/>
</div>
<footer class="footer">this is footer</footer>
</div>
子路由<nuxt-child/>
组件 注意 : 子路由需要在pages/
文件夹下面放对应的路由容器<nuxt-child></nuxt-child>
/pages/home.vue
<div class="child">
<nuxt-child></nuxt-child>
</div>
/pages/home/index.vue
路由跳转 <nuxt-link/>
别名: <n-link>
, <NuxtLink>
, 和 <NLink>
<template>
<div class="about">
<nuxt-link to="/about">关于</nuxt-link>
</div>
</template>
客户端渲染组件<client-only/>
此组件用于仅在客户端渲染其他组件.
<template>
<div>
<sidebar />
<client-only placeholder="Loading...">
<!-- comments 组件只会在客户端被渲染 -->
<comments />
</client-only>
</div>
</template>
异步数据 asyncData
注意:由于asyncData方法是在组件 初始化 前被调用的,所以在方法内是没有办法通过 this 来引用组件的实例对象。
export default {
asyncData({ params }) {
return axios.get(`https://my-api/posts/${params.id}`).then(res => {
return { title: res.data.title }
})
}
}
使用 async 或 await
export default {
async asyncData({ params }) {
const { data } = await axios.get(`https://my-api/posts/${params.id}`)
return { title: data.title }
}
}
nuxt 插件
首先增加文件 plugins/vue-notifications.js:
import Vue from 'vue'
import VueNotifications from 'vue-notifications'
Vue.use(VueNotifications)
然后, 在 nuxt.config.js 内配置 plugins 如下:
module.exports = {
plugins: ['~/plugins/vue-notifications', ssr: true]
}
最后 插件里面要是否支持服务器端渲染,如果不支持。会报错
具体解决办法有。在试图里面添加
<client-only placeholder="Loading...">...dom</client-only>
或者在plugins/对应的插件里面 加上 ssr: false 即可解决
插件注入
- 注入 Vue 实例
import Vue from 'vue'
Vue.prototype.$myInjectedFunction = string =>{
console.log('This is an example', string)
}
- 注入 context
export default ({ app }, inject) => {
app.myInjectedFunction = string =>
console.log('Okay, another function', string)
}
同时注入 vue 和 nuxt
如果您需要同时在context,Vue实例,甚至Vuex中同时注入,您可以使用inject方法,它是 plugin 导出函数的第二个参数。将内容注入 Vue 实例的方式与在 Vue 应用程序中进行注入类似。系统会自动将$添加到方法名的前面。
export default ({ app }, inject) => {
inject('myInjectedFunction', string => console.log('That was easy!', string))
}
插件配置
module.exports = {
plugins: [{ src: '~/plugins/vue-notifications', ssr: false }]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)