尚融宝19-Nuxt.js入门

这篇具有很好参考价值的文章主要介绍了尚融宝19-Nuxt.js入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、搜索引擎优化

1、什么是SEO

2、搜索引擎工作流程

二、服务端渲染和客户端渲染

1、什么是服务端渲染

2、什么是客户端渲染

3、两种方式各有什么优缺点? 

三、Nuxt.js

1、Nuxt.js介绍

2、Nuxt.js服务器端渲染

四、安装和运行

五、页面、导航和路由

1、页面

2、导航

3、自动路由

六、布局Layout

1、默认布局

2、自定义布局

七、配置文件

1、Meta Tags and SEO

2、样式

3、端口号

八、整合axios

1、配置

2、客户端渲染

3、服务器端渲染

4、axios全局选项

5、拦截器


一、搜索引擎优化

1、什么是SEO

尚融宝19-Nuxt.js入门

总结:seo是网站为了提高自已的网站排名,获得更多的流量,对网站的结构及内容进行调整和优化,以便搜索引擎 (百度,google等)更好抓取到优质网站的内容

2、搜索引擎工作流程

尚融宝19-Nuxt.js入门

常见的SEO方法比如:

  • 对url链接的规范化,多用restful风格的url,多用静态资源url;
  • 注意keywords、description、title的设置;
  • h1-h6、a标签的使用
  • 等等

注意:spider对javascript支持不好,ajax获取的JSON数据无法被spider爬取

采用什么技术有利于SEO?要解答这个问题需要理解服务端渲染和客户端渲染。

二、服务端渲染和客户端渲染

1、什么是服务端渲染

服务端渲染又称SSR (Server Side Render)是在服务端完成页面的内容渲染,而不是在客户端完成页面内容的渲染。

SSR并不是前端特有的技术,我们学习过的JSP技术和Thymeleaf技术就是典型的SSR

尚融宝19-Nuxt.js入门

服务端渲染的特点

  • 在服务端生成html网页的dom元素
  • 客户端(浏览器)只负责显示dom元素内容

2、什么是客户端渲染

客户端(浏览器) 使用AJAX向服务端发起http请求,获取到了想要的数据,开始渲染html网页,生成dom元素,并最终将网页内容展示给用户。

尚融宝19-Nuxt.js入门

客户端渲染的特点

  • 在服务端只是给客户端响应的了数据,而不是html网页
  • 客户端(浏览器)负责获取服务端的数据生成dom元素

3、两种方式各有什么优缺点? 

 服务端渲染: 

  1. 优点:有利于SEO,网站通过href的url将搜索引擎直接引到服务端,服务端提供优质的网页内容给搜索引擎。
  2. 缺点:服务端完成一部分客户端的工作,通常完成一个需求需要修改客户端和服务端的代码,开发效率低,不利于系统的稳定性。
  3. 适用场景:对SEO有要求的系统,比如:门户首页、商品详情页面等。

客户端渲染: 

  1. 优点:客户端负责渲染,用户体验性好,服务端只提供数据不用关心用户界面的内容,有利于提高服务端的开发效率。 
  2. 缺点:不利于网站进行SEO,因为网站大量使用javascript技术,不利于搜索引擎抓取网页。
  3. 适用场景:对SEO没有要求的系统,比如后台管理类的系统,如电商后台管理,用户管理等。

三、Nuxt.js

1、Nuxt.js介绍

移动互联网的兴起促进了web前后端分离开发模式的发展,服务端只专注业务,前端只专注用户体验,比如流行的vue.js实现了功能强大的前端渲染。 但是,对于有SEO需求的网页如果使用前端渲染技术去开发就不利于SEO了,有没有一种即使用vue.js 的前端技术也实现服务端渲染的技术呢?

Nuxt.js 是一个基于 Vue.js 的轻量级应用框架,可以用来创建服务端渲染 (SSR) 应用,也可充当静态站点引擎生成静态站点应用, 具有优雅的代码结构分层和热加载等特性。

官网网站:Nuxt - The Intuitive Vue Framework

总结:

  • 服务器端渲染
  • 静态站点引擎

2、Nuxt.js服务器端渲染

下图展示了从客户端请求到Nuxt.js进行服务端渲染的整体的工作流程:

尚融宝19-Nuxt.js入门

 总结:

1)用户打开浏览器,输入网址请求到Node.js中的前端View组件

2)部署在Node.js的应用Nuxt.js接收浏览器请求,并请求服务端获取数据 

3)Nuxt.js获取到数据后进行服务端渲染 

4)Nuxt.js将html网页响应给浏览器

四、安装和运行

在线安装方式:参考:Nuxt - Installation

目录结构

尚融宝19-Nuxt.js入门

五、页面、导航和路由

1、页面

默认识别pages目录下的文件,需要以.vue为扩展名。创建pages目录,在pages目录中创建index.vue

<template>
  <h1>Hello world!</h1>
</template>

通过集成终端运行项目

npm run dev

访问项目:http://localhost:3000/

再在pages目录中创建一个about.vue页面用于后面的测试

<template>
  <h1>关于我们</h1>
</template>

访问页面:http://localhost:3000/about

2、导航

使用<NuxtLink>标签可以在程序中的不同页面之间导航,相当于<a>标签的作用。一般情况下我们使用<NuxtLink>连接程序内部的不同的路由地址,使用<a>标签连接站外地址。

pages/index.vue

<template>
  <div>
    
    <NuxtLink to="/about">
      关于我们
    </NuxtLink>
    <NuxtLink to="/lend">
      我要投资
    </NuxtLink>
    <NuxtLink to="/user">
      用户中心
    </NuxtLink>
    <a href="http://atguigu.com" target="_blank">尚硅谷</a>
      
    <h1>Home page</h1>  
  </div>
</template>

3、自动路由

在vue项目中我们需要创建页面,并为每一个页面配置路由,而Nuxt会根据pages路径中的页面自动生成路由配置。

  • 基本路由1: /user 指向 pages/user.vue页面
<template>
  <div>
    <h1>用户中心</h1>
  </div>
</template>
  • 基本路由2: /lend 指向 pages/lend/index.vue页面
<template>
  <div>
    <h1>投资产品列表</h1>
    <NuxtLink to="/lend/1">
      产品1
    </NuxtLink>
    <NuxtLink to="/lend/2">
      产品2
    </NuxtLink>  
  </div>
</template>
  • 动态路由:/lend/1、lend/2 等 指向 pages/lend/_id.vue页面,并通过 this.$route.params.id 获取动态路径 

通过页面vue的插件可以查看到组件自动注入了route参数,route参数下面有params,params中包含我们需要的id

尚融宝19-Nuxt.js入门

<template>
  <h1>投资产品 {{ id }}</h1>
</template>

<script>
export default {
  data() {
    return {
      id: null,
    }
  },

  created() {
    this.id = this.$route.params.id
  },
}
</script>
  • 嵌套路由:如果 pages/user.vue 和 pages/user/index.vue 同时存在,我们可以利用嵌套路由
<template>
  <div>
    <h1>用户中心</h1>
    <NuxtLink to="/user">
      我的账户
    </NuxtLink>
    <NuxtLink to="/user/user1">
      我的投资
    </NuxtLink>
    <NuxtLink to="/user/user2">
      我的个人信息
    </NuxtLink>
    <!--Nuxt子路由,上面的链接的内容都会放在这个位置展示-->
    <NuxtChild />
  </div>
</template>

六、布局Layout

1、默认布局

如果想拥有统一的页面风格,例如:一致的页头和页尾,可以使用Layout,布局文件的默认的名字是default.vue,放在layouts目录中

注意:新创建的layout重启前端服务器后应用

layouts/default.vue

<template>
  <div>
    <Nuxt />
    <div>default footer</div>
  </div>
</template>

2、自定义布局

也可以自定义Layout:layouts/my.vue

<template>
  <div>
    <Nuxt />
    <div>my footer</div>
  </div>
</template>

在page中使用layout属性指定布局文件:pages/user.vue

<script>
export default {
  layout: 'my',
}
</script>

七、配置文件

1、Meta Tags and SEO

我们可以在nuxt.config.js中配置如下内容,Nuxt会自动生成网站的<head>标签,这也是搜索引擎优化的一个必要手段。

module.exports = {
  head: {
    title: '尚融宝',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      {
        hid: 'meta-key-words',
        name: 'keywords',
        content:
          '尚融宝官网_纽交所上市企业,网络借贷平台,解决个人小额借款、短期借款问题。 资金银行存管,安全保障。',
      },
      {
        hid: 'description',
        name: 'description',
        content:
          '尚融宝官网_纽交所上市企业,网络借贷平台,解决个人小额借款、短期借款问题。 资金银行存管,安全保障。',
      },
    ],
    link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
  },
}

2、样式

step1:创建 assets/css/main.css

body {
  background-color: pink;
}

step2:在nuxt.config.js中配置样式(和head同级别)

css: [
    // CSS file in the project
    '~/assets/css/main.css',
],

3、端口号

在nuxt.config.js中配置

server: {
    port: 3001, // default: 3000
},

八、整合axios

我们可以引入Nuxt中封装的axios组件,功能更多,编程更简单

参考:Introduction - Axios Module

1、配置

nuxt.config.js

module.exports = {
  modules: [
    '@nuxtjs/axios', //引入axios模块
  ]
}

2、客户端渲染

在pages/index.vue中添加如下代码

<script>
export default {
  data() {
    return {
      ip: null,
    }
  },
  created() {
    this.$axios.$get('http://icanhazip.com').then((response) => {
      console.log(response)
      this.ip = response
    })
  },
}
</script>

template中显示ip

    <div>您的ip是:{{ ip }}</div>

3、服务器端渲染

// 这一个是异步请求,相当于java中的静态方法,会在方法调用之前执行
  // page是方法自带参数,page名字自定义,会自动封装
  // asyncData(page) {
  //   console.log(page)
  //   page.$axios.get('http://icanhazip.com').then((response) => {
  //     console.log(response)
  //   })
  //   return {
  //     ip1: null,
  //   }
  // },
  // 因为我们只需要使用page里面的axios对象,可以使用解构赋值
  // asyncData({ $axios }) {
  //   console.log($axios)
  //   $axios.$get('http://icanhazip.com').then((response) => {
  //     console.log('asyncData', response)
  //   })
  //   return {
  //     ip1: response, //这种写法的问题是:前面的远程调用是异步的,无法在这获取到response
  //   }
  // },
  // 改为异步方式,此时是前端服务器发送请求给后端服务器,接收数据渲染后传递给浏览器
  async asyncData({ $axios }) {
    console.log('asyncData')
    let response = await $axios.$get('/') // 等待这个异步请求执行后再执行下面的返回,此时response就有值了
    return {
      message1: response,
    }
  },
  data() {
    return {
      ip: null,
    }
  },
  // 这一个vue的created周期函数中的axios请求是由浏览器向服务器发送的,浏览器会直接获得响应数据
  created() {
    // this.$axios.get('http://icanhazip.com').then((response) => {
    //   console.log(response)
    //   this.ip = response.data
    // })
    // response就是响应中的data
    // this.$axios.$get('http://icanhazip.com').then((response) => {
    //   console.log(response)
    //   this.ip = response // 相当于上面的response.data
    // })
  },

4、axios全局选项

在nuxt.config.js中添加如下配置

axios: {
    // Axios options here
    baseURL: 'http://icanhazip.com',
},

asyncData中直接写相对路径

let response = await $axios.$get('/')

5、拦截器

创建拦截器插件 plugins/axios.js

export default function({ $axios, redirect }) {
  $axios.onRequest((config) => {
    console.log('Making request to ' + config.url)
  })

  $axios.onResponse((response) => {
    console.log('Making resposne')
    return response
  })

  $axios.onError((error) => {
    console.log(error) // for debug
  })
}

nuxt.config.js中配置插件文章来源地址https://www.toymoban.com/news/detail-415407.html

plugins: [
    '~/plugins/axios'
]

到了这里,关于尚融宝19-Nuxt.js入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 尚融宝10-Excel数据批量导入

    目录 一、数据字典 (一)、什么是数据字典 (二)、数据字典的设计 二、Excel数据批量导入 (一)后端接口 1、添加依赖 2、创建Excel实体类 3、创建监听器 4、Mapper层批量插入 5、Service层创建监听器实例 6、controller层接受客户端请求 7、添加mapper发布配置 8、Swagger接口测试

    2023年04月10日
    浏览(42)
  • 尚融宝15-集成阿里云短信服务

    目录 一、前言 二、测试短信发送 1、查找使用示例 2、测试短信发送 ​编辑 三、使用RAM子用户 1、进入子用户管理页面 2、添加用户  3、获取子用户key 4、设置用户权限 四、短信使用场景和流程 五、创建短信微服务 1、创建项目 2、自定义配置 3、发送短信 在阿里云的短信服

    2023年04月15日
    浏览(65)
  • 尚融宝25-投资列表展示以及实现充值功能

    目录 一、展示投资列表 (一)需求 (二)后端 (三)前端 二、充值功能 (一)需求 1、需求描述 2、流程 (二)充值 1、后端 2、前端 (三)回调接口 1、定义回调接口 2、增加交易流水 (四)接口调用幂等性 1、接口幂等性原则 2、解决方案 标的形成后,客户可在客户端

    2024年02月06日
    浏览(43)
  • 尚融宝20-实现用户注册和用户认证

    目录 一、需求 二、前端整合发送验证码 三、实现用户注册 1、创建VO对象 2、定义常量 3、引入MD5工具类 4、Controller 5、Service 6、前端整合 四、实现用户登录 1、后端整合JWT 2、前端整合 五、校验用户登录 1、后端 2、前端   点击获取验证码后先对手机号进行验证是否为空,其

    2023年04月21日
    浏览(54)
  • 尚融宝13-后台管理系统前端架构梳理

    目录 一、程序入口 (一)入口页面 index.html (二) 入口js脚本:src/main.js (三)顶层组件:src/App.vue (四)路由:src/router/index.js  查看源代码 这正是srb-admin/public/index.html    我们进入积分等级列表,查看源代码会发现仍然是index.html中的代码  那么它是怎么实现页面的不同

    2023年04月11日
    浏览(40)
  • 尚融宝16-集成阿里云对象存储OSS服务

    目录 一、开通“对象存储OSS”服务 1、开通“对象存储OSS”服务 二、控制台使用 1、创建Bucket 2、上传默认头像 三、使用RAM子用户 1、进入子用户管理页面 2、设置权限 四、使用SDK 五、创建测试项目 1、创建Maven项目 2、配置pom 六、测试用例 七、将OSS整合进项目 1、基本配置

    2024年02月13日
    浏览(74)
  • 搜索引擎优化(SEO)与Next.js的支持

    SEO 就是搜索引擎优化。SEO的目标是创建一个策略,以提高您在搜索引擎结果中的排名。排名越高,您网站的自然流量就越多,最终为您带来更多业务! 我们下面将探讨: 搜索系统,以及谷歌机器人等搜索引擎机器人。 拥有SEO策略可以对您的网站产生的影响。 如何整合最佳

    2024年02月08日
    浏览(339)
  • Nuxt.JS实战指南:从入门到精通的练习之旅

    官网:https://www.nuxtjs.cn/ SEO:搜索引擎优化 1.1如何进行搜索引擎优化? 多页面 Title、描述、 网站内容 1.2-预渲染 1.2.1-预渲染图解 1.2.2-如何使用? (1)vue项目中安装prerender-spa-plugin npm install prerender-spa-plugin -S (2)vue.config.js进行配置 (3)修改Title、描述、:v

    2024年02月14日
    浏览(88)
  • 全文搜索引擎 Elasticsearch 入门使用

    目录 1、安装 2、基本概念 2.1 Node 与 Cluster 2.2 Index 2.3 Document  2.4 Type 3、新建和删除 Index 4、中文分词设置  5、数据操作  5.1 新增记录  5.2 查看记录   5.3 删除记录 5.4 更新记录  6、数据查询 6.1 返回所有记录 6.2 全文搜索  6.3 逻辑运算 7、参考链接 本文从零开始,讲解如何

    2024年02月09日
    浏览(44)
  • 【搜索引擎】elasticsearch入门到进阶 - 常用接口

    Elasticsearch 是一个非常强大的搜索引擎。它目前被广泛地使用于各个 IT 公司。Elasticsearch 是由 Elastic 公司创建。它的代码位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。目前, Elasticsearch 是一个免费及开放(free and open)的项目。同时, Elastic 公司也拥有

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包