Nuxt 使用

资源

vue ssr
nuxt.js 官网
Nuxt.js 官方文档-中文
nuxt 中文
nuxt 介绍

安装

  1. npx create-nuxt-app <项目名>
  2. yarn create nuxt-app <project-name>

相关基础配置

Nuxt 使用 proxy 代理

Nuxt 使用 axios

nuxt 使用vuex

nuxt 使用中间件

nuxt 多环境配置

打包去除console

插件

Nuxt 自定义插件

svg

参考: https://blog.csdn.net/qq_26373925/article/details/108405038

nuxt 页面相关

下图展示了Nuxt.js 如何为指定的路由配置数据和视图
image.png

路由

所有生成的路由可以在 **.nuxt/router.js** 中查看

1. 路由

pages目录下创建 .vue 文件,将自动生成对应的路由配置

目录结构:

  1. pages/
  2. --| index/
  3. --| list/

对应的路由配置:

  1. {
  2. path: "/list",
  3. component: _32bf9a90,
  4. name: "list"
  5. }, {
  6. path: "/",
  7. component: _4c976ce8,
  8. name: "index"
  9. }

2. 动态路由

以下划线作为前缀 的 .vue 文件 或 目录会被定义为动态路由

目录结构:

  1. pages/
  2. --| detail/
  3. ----| _id.vue

会生成如下路由配置:

  1. {
  2. path: "/detail/:id?",
  3. component: _9c9d895e,
  4. name: "detail-id"
  5. }

如果detail/里面不存在index.vue,:id将被作为可选参数

通过 /detail/1 访问

  1. <nuxt-link :to="`/detail/${id}`"></nuxt-link>

3. 嵌套路由

创建内嵌子路由,你需要添加一个 .vue 文件,同时添加一个 与该文件同名 的目录用来存放子视图组件。

目录结构如下:

  1. pages/
  2. --| detail/
  3. ----| _id.vue
  4. --| detail.vue

生成的路由配置如下:

  1. {
  2. path: '/detail',
  3. component: 'pages/detail.vue',
  4. children: [
  5. {path: ':id?', name: "detail-id"}
  6. ]
  7. }

4. 配置路由

要扩展Nuxt.js创建的路由,可以通过 router.extendRoutes 选项配置。例如添加自定义路由:

nuxt.config.js 中配置路由

  1. export default {
  2. router: {
  3. extendRoutes (routes, resolve) {
  4. // 添加一个 文件名为 pages/custom.vue 但是路由为 /foo
  5. routes.push({
  6. name: "foo",
  7. path: "/foo",
  8. component: resolve(__dirname, "pages/custom.vue")
  9. });
  10. },
  11. // middleware: ['auth'] // 所有文件都添加中间件
  12. }
  13. }

组件

Nuxt 组件

  • 类似 vue-cli 的 <router-view />

    1. <template>
    2. <div>
    3. <div>My nav bar</div>
    4. <Nuxt />
    5. <div>My footer</div>
    6. </div>
    7. </template>

    NuxtLink 组件

  • 类似 vue-cli 的 <router-link to="/"></router-link>

  • 别名:n-link,NLink,NuxtLink

用法:

  1. <nav>
  2. <nuxt-link to="/">首⻚</nuxt-link>
  3. <NLink to="/admin" no-prefetch>管理</NLink>
  4. <n-link to="/cart" no-prefetch>购物⻋</n-link>
  5. </nav>

由于nuxt默认在浏览器不忙时,自动预先加载链接资源,如果链接处于脱机状态或只有2G,则跳过预加载

  • no-prefetch 去除链接页面预加载

NuxtChild 组件

在嵌套路由里,要显示子路由内容,必须使用 <nuxt-child />

  • 类似 vue-cli 的 <router-view />
    1. <template>
    2. <div>
    3. <h1>I am the parent view</h1>
    4. <NuxtChild :foobar="123" />
    5. </div>
    6. </template>

    layout 指定当前⻚面使用的布局

    layouts 根目录下的布局文件

layouts 下创建的 .vue 文件,为页面布局,默认是 defualt.vue 布局。也可以指定自定义布局

默认布局

layouts/default.vue

  1. <template>
  2. <nuxt/>
  3. </template>

自定义布局

layouts/custom.vue

  1. <template>
  2. <div>
  3. <header></header>
  4. <nuxt />
  5. <footer></footer>
  6. </div>
  7. </template>

pages/login.vue 使用自定义布局:

  1. export default {
  2. layout: 'custom' // custom 自定义布局的文件名
  3. }

公共错误⻚面

创建layouts/error.vue

  1. <template>
  2. <div class="container">
  3. <h1 v-if="error.statusCode === 404">⻚面不存在</h1>
  4. <h1 v-else>应用发生错误异常</h1>
  5. <p>{{error}}</p>
  6. <nuxt-link to="/">首 ⻚</nuxt-link>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. props: ['error'], //
  12. }
  13. </script>

head 配置当前⻚面的 Meta 标签

⻚面组件就是 Vue 组件,只不过 Nuxt.js 为这些组件添加了一些特殊的配置项,如向页面添加标题和meta等。

index.vue

  1. export default {
  2. head () {
  3. return {
  4. title: "首页",
  5. // vue-meta利用hid确定要更新meta
  6. meta: [
  7. { name: "keywords", content: "关键字" },
  8. { name: "description", hid: "description", content: "描述内容" }
  9. ],
  10. link: [{ rel: "favicon", href: "favicon.ico" }],
  11. };
  12. },
  13. };

更多⻚面配置项:

属性名 描述
asyncData 最重要选项, 支持 异步数据处理,该方法的第一个参数为当前⻚面组件的 上下文对象。
fetch asyncData 方法类似,用于在渲染⻚面之前获取数据填充应用的状态树(store)。不同的是 fetch 方法不会设置组件的数据。详情请参考 关于fetch方法的文档
loading 如果设置为false,则阻止⻚面自动调用this.$nuxt.$loading.finish()this.$nuxt.$loading.start(),您可以手动控制它,请看 例子,仅适用于在nuxt.config.js中设置loading的情况下。请参考 API配置 文档loading
transition 指定⻚面切换的过渡动效, 详情请参考 ⻚面过渡动效。
scrollToTop 布尔值,默认: false。 用于判定渲染⻚面前是否需要将当前⻚面滚动至顶部。这个配置用于 嵌套路由的应用场景。
validate 校验方法用于校验 动态路由的参数。

异步数据获取

asyncData 方法使得我们可以在 设置组件数据之前异步获取或处理数据 。

范例:获取商品数据

接口准备

  • 安装依赖:npm i koa-router koa-bodyparser -S
  • 接口文件,server/api.js

若有收获,就点个赞吧

0 人点赞

  • 书签
  • 添加书签 移除书签
  • 前端参考网址
  • 部署
    • 阿里域名配置https
    • nginx部署和配置
    • 安装redis
    • 安装mongodb
    • 安装node
  • 数据视图
    • Echarts可视化
      • Vue使用Echarts 按需加载
      • 效果展示的相关参数位置定位
      • 地图
    • Echarts的问题
  • 项目工程化
    • 虚拟列表
    • http请求强制转换为https的问题
    • 浏览器请求并发问题
    • 页面SEO
      • 服务端渲染(SSR)和预渲染(Prerendering)
        • Vue预渲染和SSR
    • 镜像源
    • clone项目
    • 基于Vue项目的框架以及Vue
      • Nuxt2项目
        • Nuxt 区分不同的环境
        • Nuxt 使用
        • Nuxt 使用vuex
        • Nuxt 介绍
        • 页面在跳转之前拿到当前页面的路由地址
        • 更改框架的主题色
        • Nuxt添加svg
        • Nuxt封装API---axios
        • Nuxt分环境打包
        • Nuxt报错
      • Vue问题解决
        • 自定义组件@click事件无效
      • Vue实用
        • html标签转换成canvas,再进行下载
        • Vue获取自定义属性
        • Vue使用md5加密
        • Vue动态加载ttf字体
        • vue自定义指令
        • vue循环时动态设置ref,获取ref报错
        • vue刷新当前页面
        • vue使用clipboard复制插件
        • vue框架页面颜色个性化配置的实现
        • vue加入百度统计代码
        • vue获取上一个页面的路由
        • vue单页面应用刷新网页后vuex的state数据丢失
    • 动画
      • 单个元素动画
        • wowJS---单个元素动画
      • 轮播动画
        • vue-marquee-text-component插件 --- 轮播公告(水平滚动)
        • Swiper---轮播(任意方向滚动)
    • 项目运行环境
      • 运行JS和项目
    • 版本控制工具
      • Git
        • Git项目中使用
        • Git的基本操作
      • git和svn
    • 打包
      • webpack
        • 性能优化---Nuxt
        • vue的分环境打包
        • ESlint
        • css
      • gulp
  • 后端
    • Node
      • npm文件下载没有权限问题
      • Egg.js
        • egg连接数据库
      • Egg Koa Redis JWT
  • 跨平台
    • uni-app
  • 微信小程序
  • 实用工具
    • 远程连接工具
    • 实用网址
    • 谷歌插件
  • HTML和CSS和JS
    • ES6转ES5
    • ES5
      • 常用运算符
    • 兼容IE9及以上
      • IE图片
    • JS
      • 随机生成某个字段内的数值
      • JS进行编码与解码
      • 请求相关
        • 异步
      • JS元素位置
      • JS修改CSS
      • js数字格式转换为千分位
      • js设置文本框焦点光标位置
      • js将元素滚动到指定的位置
      • js计算丢失精度问题
      • js直接改变value的值不触发change事件
      • H5唤起APP
    • CSS
      • table表格
      • rem的使用
      • table超出父级元素的宽度
      • 防爬虫的文本
      • CSS基础
      • flex布局中子元素超出父元素宽度
      • 移动端
        • IOS
          • ios中input设置只读
    • HTML基础
  • 简历总结:
  • 学习笔记
    • Nuxt3项目
      • Nuxt插件
      • Nuxt3组件
      • Nuxt3路由
      • Nuxt3安装和使用
    • 官方文档
      • Vue
        • Vue2.0
          • Vue.js官方文档
          • 插槽slot
          • 父子组件传值
    • Vue
      • Vue
        • 01 vue全家桶&原理
        • 02 手写vue
        • 03 vue源码解析01
        • 04 vue源码解析02
        • 13 测试题讲解
        • 12 vue nuxt.js
        • 12 vue ssr
        • 11 vue ts开发实践-点播
        • 10 项目最佳实践
        • 09 组件化开发实践
        • 08 vue3源码剖析03
        • 07 vue3源码剖析02
        • 06 vue3源码01
        • 05 vue2源码剖析03
      • Vue-预习
        • 01 开发环境准备
        • 02 hello vue
        • 03 模板语法实践购物车
        • 04 计算属性和侦听器
        • 05 生命周期
        • 06 组件化实践
        • 07 vue必会API盘点
        • 08 动画
        • 09 可复用性
        • 10 工程化
        • 11 路由
        • 12 状态管理
  • hexo移出的笔记
    • node
    • hexo
  • VSCode
    • 插件
  • 学习计划
  • 读书笔记
暂无相关搜索结果!
    展开/收起文章目录

    深圳SEO优化公司漳州营销型网站建设价格湘西阿里店铺运营多少钱许昌网站设计价格金昌关键词排名推荐丹竹头百度爱采购哪家好丹东企业网站制作价格南阳网站优化和县网站改版报价钦州外贸网站设计清远外贸网站建设多少钱东营关键词排名驻马店至尊标王铜川百度seo哪家好滨州优化多少钱曲靖seo优化哪家好忻州推广网站多少钱武汉SEO按天收费报价蚌埠模板网站建设济南网站优化推荐观澜企业网站设计推荐宜宾网络广告推广价格济源seo网站优化公司本溪百度网站优化排名报价吕梁网站开发多少钱大庆阿里店铺托管推荐池州网站设计永湖百度标王哪家好枣庄网站设计哪家好雅安网站排名优化推荐长葛设计网站推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化