nuxtjs学习笔记
新建项目
npx create-nuxt-app <project-name> # use npx
yarn create nuxt-app <project-name> # use yarn
npm init nuxt-app <project-name> # use npm
目录结构
其中components
用于存放普通组件,pages
用于存放页面组件,plugins
用于存放vue下载的插件,static
用于存放静态文件,store
用于状态管理
项目启动时nuxt会自动扫描pages文件夹并自动创建相应的router,router的path即为/ + <组件文件名>
,因此nuxt不需要手写router,components中的组件也是如此,当页面组件用到components组件时nuxt会自动配置配置页面组件的components
在页面间使用路由推荐使用nuxt自带的<nuxt-link>
标签,用法同v-link
nuxt也有用于异步跳转的函数:this.$router.push('/path')
路由参数校验
可以使用validate()
方法校验路径参数是否正确并跳转404页面
详细参考页面校验 API
异步数据
nuxtjs增加了一个叫asyncData
的方法,,这个方法仅限于页面组件之间使用,方法的返回值将会合并于组件的data
方法返回的数据
使用asyncData()方法往往会用到axios
,nuxt官方推荐使用nuxt自己封装的axios
安装:
yarn add @nuxtjs/axios # use yarn
cnpm install @nuxtjs/axios --save # use npm
然后在nuxt的配置文件nuxt.config.js
中配置
modules: [
'@nuxtjs/axios',
],
之后就可以在asyncData方法中使用axios
async asyncData({ app }) {
const ip = await app.$axios.$get('http://icanhazip.com')
return { ip }
}
资源文件
nuxt中不再使用vue的@
引用根目录而是使用~
假设项目中有一张图片资源文件
想要在组件中引用这张图片可以使用"~/static/img/010_01.jpeg"
引用路径
此外在css文件中引用资源文件不能使用/alias
来引用,必须使用~assets
(没有斜杠)或@
别名,即background:url("~assets/banner.svg")
store
nuxtjs内部集成了vuex
因此不需要安装和导入就可以直接使用
在\store
路径下新建js文件
export const state = () => ({
user: ''
})
export const mutations = {
add (state, object) {
//state.userInfo.push(object)
state.user = object
}
}
export const actions = {
getData (store) {
setTimeout(() => {
store.commit('add')
}, 3000)
}
}
然后就可以在组件中使用
this.$store.commit('user/add', this.txt)
let res = this.$store.state.user.user
本文作者:七つ一旋桜
本文链接:https://www.cnblogs.com/poifa/p/15339017.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步