SSR渲染--02--nuxt demo(vue)

news2025/3/16 15:29:44

cmd 打开命令提示符,创建nuxt

npm i create-nuxt-app -g
create-nuxt-app vue-honor-of-kings(这个是我的项目名,输入自己的项目名)
npm run dev

创建的具体配置

【写demo为了方便,我直接下载了Element的包,可以看自己的需求自己衡量】
在这里插入图片描述

✨  Generating Nuxt.js project in nuxt_pro
【项目名称】? Project name: nuxt_pro
【编程语言】? Programming language: JavaScript
【打包方式】? Package manager: Npm 
【UI框架】? UI framework: None 
【模板引擎】? Template engine: HTML 
【格式化空间】? Nuxt.js modules: (Press <space> to select, <a> to toggle all, <i> to invert selection)
【格式化空间】? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
【测试框架】? Testing framework: None
【渲染技术:SSR(服务端渲染)】? Rendering mode: Universal (SSR / SSG)
【开发目标】? Deployment target: Server (Node.js hosting)
【开发工具】? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
【github 账号】? What is your GitHub username? aliyanyi
【版本控制】? Version control system: Git

页面结构

-─项目
  ├─.nuxt               // Nuxt自动生成,临时的用于编辑的文件,build
  ├─assets【主动创建】    // 用于组织未编译的静态资源如LESS、SASS或JavaScript,对于不需要通过Webpack 处理的静态资源文件,可以放置在 static 目录中
  ├─components          // 用于自己编写的Vue组件
  ├─layouts【主动创建】   // 布局目录,用于组织应用的布局组件,不可更改
  ├─node_modules
  ├─pages               // 用于组织应用的路由及视图,Nuxt.js根据该目录结构自动生成对应的路由配置,文件名不可更改
  ├─plugins             // 用于组织那些需要在根vue.js应用 实例化之前需要运行的Javascript 插件。
  ├─static              // 用于存放应用的静态文件,此类文件不会被 Nuxt.js调用 Webpack 进行构建编译处理。 服务器启动的时候,该目录下的文件会映射至应用的根路径 / 下。文件夹名不可更改。
  └─store               // 用于组织应用的Vuex 状态管理。文件夹名不可更改。
  ├─.editorconfig       // 开发工具格式配置
  ├─.eslintrc.js        // ESLint的配置文件,用于检查代码格式
  ├─.gitignore          // 配置git忽略文件
  ├─nuxt.config.js      // 用于组织Nuxt.js 应用的个性化配置,以便覆盖默认配置。文件名不可更改。
  ├─package-lock.json   // npm自动生成,用于帮助package的统一设置的,yarn也有相同的操作
  ├─package.json        // npm 包管理配置文件
  ├─README.md

layouts文件下创建自定义路由 myheader.vue

【因为之前创建的时候,配置了elementU,所以我们直接使用就行】

<template>
  <div>
    <el-container>
      <el-header height="150px">
        <el-menu
          :default-active="activeIndex"
          class="el-menu-demo"
          mode="horizontal"
          @select="handleSelect"
        >
          <el-menu-item index="1">主页</el-menu-item>
          <el-menu-item index="2">menu</el-menu-item>
        </el-menu>
      </el-header>
      <el-container>
        <el-main> <nuxt /></el-main>
      </el-container>
    </el-container>
  </div>
</template>
<script>
export default {
  data() {
    return {
      activeIndex: "1",
    };
  },
  methods: {
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
      if (key == "1") {
        this.$router.push({ path: "/" });
      } else if (key == "2") {
        this.$router.push({ name: "menu" });
      }
    },
  },
};
</script>
<style scoped>
.el-header,
.el-footer {
  background-color: #b3c0d1;
  color: #333;
  text-align: center;
}


.el-main {
  background-color: #e9eef3;
  color: #333;
  text-align: center;
  line-height: 160px;
}

body > .el-container {
  margin-bottom: 40px;
}

.el-container:nth-child(5) .el-aside,
.el-container:nth-child(6) .el-aside {
  line-height: 260px;
}

.el-container:nth-child(7) .el-aside {
  line-height: 320px;
}
</style>

创建一个menu页面

页面引用的elementUI中的无线滚动,调用请求,需要用axios,先安装axios

 npm i @nuxtjs/axios   

在配置文件 nuxt.config.js 注册axios,并设置基础路径,我用的这个路径是nuxt官网给的案例路径,可以根据项目自行调整

 modules:  ['@nuxtjs/axios'],
 publicRuntimeConfig: {
    axios: {
      baseURL: 'https://api.nuxtjs.dev/'
    }
  }

然后创建menu 文件夹,文件夹内创建menu.vue文件,layout引入之前创建的 myheader

特意说明:

  • layout–>引入自定义布局,不声明的情况下,会优先查看layouts是否有默认布局(default.vue) ,如果有,则会引入默认布局,如果没有默认布局,则正常渲染整个页面
  • asyncData–>是个异步加载的钩子,服务端渲染的时候执行,没有this,所以发送请求的时候, 将$axios默认从全局引入
  • axios–>axios正常的调用,需要this.$axios调用(特殊封装或者设置别名另算)
<template>
  <div>
  <h1>menu</h1>
  <ul class="infinite-list" v-infinite-scroll="load" style="overflow:auto">
    <li v-for="(item,index) in detail" :key="index" class="infinite-list-item">{{index}}=={{ item.title }}</li>
  </ul>
  </div>
</template>

<script>

export default {
  name: '',
  layout:"myheader",
  data () {
    return {
    }
  },
  async asyncData({ $axios }) {
    const arrList =await $axios.get('/mountains')
    return  {detail: arrList.data}
  },
  created () {},
  methods: {
    load () {
       this.$axios.get('/mountains').then((res) => {
        this.detail = this.detail.concat(res.data)
        console.log(res.data);
        });
      }
  },
  mounted() {},
  computed: {}
}

</script>
<style scoped>
.infinite-list-item{
  height:30px;
  line-height:30px;
  border-bottom:1px solid;
}
</style>

pages下的index

<template>
  <div>主页</div>
</template>

<script>
export default {
  name: "IndexPage",
  layout: "myheader"
}
</script>

这样一个简单的小demo就完成了,效果图
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏画面延迟的原因及解决方法

游戏画面延迟&#xff0c;是玩家在游戏中操作后&#xff0c;画面反应出现滞后或卡顿的现象。这会严重影响玩家的游戏体验和竞技水平&#xff0c;尤其是在一些需要高速反应和精确操作的3A大作中&#xff0c;画面延迟可能导致玩家错失良机或者被敌人击败。 那么&#xff0c;游戏…

电能质量监测装置在某半导体公司的应用

摘 要&#xff1a;半导体生产制造业在国民经济中起着举足轻重的作用&#xff0c;相关企业的规模也越来越大。其供配电系统稳定、可靠的运维不仅是其安全生产的基本保证&#xff0c;还关系到产品质量和生产的顺利进行。而半导体行业中大部分工艺设备对电能质量比较敏感&#xff…

《CDP企业数据云平台从入门到实践》——如何迁移CDH/HDP到CDP(2)

原文&#xff1a;《CDP企业数据云平台从入门到实践》——如何迁移CDH/HDP到CDP&#xff08;2&#xff09;-阿里云开发者社区 简介&#xff1a; 《CDP企业数据云平台从入门到实践》——如何迁移CDH/HDP到CDP&#xff08;2&#xff09; 《CDP企业数据云平台从入门到实践》——如…

Windows安装和配置VCenter

Vcenter的环境搭建和配置 Vcenter简介 Vcenter一般指 VMware vCenter™ Server&#xff0c;VMware vCenterServer 提供了一个可伸缩、可扩展的平台&#xff0c;为 虚拟化管理奠定了基础。 VMware vCenter Server&#xff08;以前称为 VMware VirtualCenter&#xff09;&#…

Qt6.5.1+WebRTC学习笔记(十一)开发环境搭建(ubuntu22.04)

前言 win10开发测试已经一段时间了&#xff0c;最近将程序移植到ubuntu测试了下&#xff0c;改动不是很大&#xff0c;本教程记录下环境搭建过程 一、准备 1.操作系统ubuntu22.04 64位 x86架构&#xff08;建议更新到最新&#xff09; 2.合理的上网方式&#xff0c;需要正常…

模板匹配笔记

模板匹配是一种最基本、最原始的模式识别的方法。通过对比某一特定物体的图案位于图像的什么地方&#xff0c;进而识别出物体。它是图像处理中最基本、最常用的匹配方法。它的局限性主要是它只能进行平行移动&#xff0c;若原图像中的匹配目标发生旋转或大小变化&#xff0c;该…

运维(SRE)成长之路-第2天 文本编辑工具之神VIM

vi和vim简介 在Linux中我们经常编辑修改文本文件&#xff0c;即由ASCII, Unicode 或其它编码的纯文字的文件。之前介绍过nano&#xff0c;实际工作中我们会使用更为专业&#xff0c;功能强大的工具 文本编辑种类&#xff1a; 全屏编辑器&#xff1a;nano&#xff08;字符工具…

Spark SQL数据源:Parquet文件

文章目录 一、Parquet简介二、读取和写入Parquet的方法&#xff08;一&#xff09;利用parquet()方法读取parquet文件1、数据准备2、读取parquet文件3、显示数据帧内容 &#xff08;二&#xff09;利用parquet()方法写入parquet文件1、写入parquet文件2、查看生成的parquet文件…

Spring Security--多个过滤器链和多个用户表

请求从客户端出发&#xff0c;到达客户端&#xff0c;也就是servlet&#xff0c;中间有很多过滤器的&#xff0c;其中就有一个过滤器链代理&#xff0c;里面包含了过滤器的一个集合。而且Spring Security Filter并不是直接嵌入到Web Filter中的&#xff0c;而是通过FilterChain…

海纳“千川”:得物多场景统一推荐平台|精选

1 千川由来 得物的推荐场景&#xff0c;除了首页瀑布流等几个比较大的场景之外&#xff0c;还有很多长尾的小场景&#xff0c;包括&#xff1a;频道、会场、购中购后场景、品牌墙等。这类场景存在单个场景体量小&#xff08;UV和GMV均偏小&#xff09;、场景零散、类型多元的情…

炫龙笔记本怎么用U盘重装Win10系统?

炫龙笔记本怎么用U盘重装Win10系统&#xff1f;很多使用炫龙笔记本电脑的用户在问&#xff0c;怎么使用U盘来重装一下电脑的Win10系统&#xff0c;这时候用户先要准备一个U盘&#xff0c;还有一个能够正常联网的炫龙笔记本电脑&#xff0c;最后按照以下炫龙笔记本用U盘重装Win1…

可算是熬出头了,测试3年,费时6个月,入职阿里,涨薪14K

本科毕业后就一直从事测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事点点点的工作&#xff0c;看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;说实话这不是自己想要的状态。 一年半后开始沪漂生活&#xff0c;又摸爬滚打了一年半&#…

FL Studio21.0.3最新版本下载 可切换中文语言

FL Studio是最好的! 在我12/13岁的时候&#xff0c;一个DJ向我介绍了FL Studio。它让我大吃一惊&#xff0c;怎么能在几秒钟内做出一个鼓的模式。后来我又玩了好几年&#xff0c;到了15岁时&#xff0c;我确定我想成为一名制作人。FL Studio帮助我把脑海中的想法快速地变成一个…

开发者必备:动态贴纸和美颜SDK的集成教程

动态贴纸和美颜技术不仅能带来多样的拍摄方案&#xff0c;还可以增加应用的吸引力。本篇文章将为开发者提供动态贴纸和美颜SDK的集成教程、技术方案&#xff0c;帮助开发者快速实现这些功能。 一、动态贴纸美颜SDK集成教程 导入SDK 在Android Studio中&#xff0c;开发者需要…

柴油发电机供电技巧,太有用了!

随着现代工业和商业的发展&#xff0c;对可靠的电力供应的需求变得越来越重要。在许多场景中&#xff0c;柴油发电机作为备用电源成为了关键设备&#xff0c;用于应对停电或电力故障时的紧急情况。 然而&#xff0c;对于企业和组织来说&#xff0c;有效监控和管理柴油发电机的运…

自学黑客!告诉你如何规划

博主本人 18年就读于一所普通的本科学校&#xff0c;21年 6 月在三年经验的时候顺利通过校招实习面试进入大厂&#xff0c;现就职于某大厂安全联合实验室。 我为啥说自学黑客 &#xff08;网络安全&#xff09;&#xff0c;一般人我还是劝你算了吧。因为我就是那个不一般的人。…

Jwt过期时间

最近在复习Spring Security&#xff0c;发现测试jwt解密的时候会报错&#xff0c;之前没有问题&#xff0c;但是最近几次都出现了问题&#xff0c;我决定究其原因。 debug看一下&#xff0c; 进入真正的解析 看一下这里的源码 Override public Jwt parse(String jwt) throws …

Ansible 部署

ansible 自动化运维工具&#xff0c;可以实现批量管理多台&#xff08;成百上千&#xff09;主机&#xff0c;应用级别的跨主机编排工具 特性&#xff1a; 无agent的存在&#xff0c;不要在被控制节点上安装客户端应用 通过ssh协议与被控制节点通信 基于模块工作的&#xff0c…

面试华为,足足花了2个月才上岸,真的难呀····

花2个月时间面试一家公司&#xff0c;你们觉得值吗&#xff1f; 背景介绍 二本计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比…

chatgpt赋能python:Python如何打包APK

Python如何打包APK Python是现代编程语言中最流行的之一&#xff0c;它是一种易于学习和使用的语言&#xff0c;因为它拥有直观的语法并且具有许多强大的工具和库。其互动性和可移植性使得Python适合用于开发各种类型的应用程序&#xff0c;包括移动应用程序。 在本文中&…