分享好友 最新动态首页 最新动态分类 切换频道
【服务端渲染】NuxtJs 综合案例
2024-12-25 14:40

笔记来源:拉勾教育 大前端高薪训练营

阅读建议:建议通过左侧导航栏进行阅读

  • 案例名称:RealWorld
  • 一个开源的学习项目,目的就是帮助开发者快速学习新技能
  • GitHub仓库:https://github.com/gothinkster/realworld
  • 在线示例:https://demo.realworld.io/#/
  • 接口文档:https://github.com/gothinkster/realworld/tree/master/api
  • 页面模板:https://github.com/gothinkster/realworld-starter-kit/blob/master/FRONTEND_INSTRUCTIONS.md
  • Vue.js 使用经验
  • Nuxt.js 基础
  • Node.js、webpack 相关使用经验
  • 掌握使用 Nuxt.js 开发同构渲染应用
  • 增强 Vue.js 实践能力
  • 掌握同构渲染应用中常见的功能处理
    • 用户状态管理
    • 页面访问权限处理
    • SEO 优化
  • 掌握同构渲染应用的发布与部署

创建项目

  • 准备工作

     
  • 在 中添加启动脚本

     
  • 创建

     
  • 启动服务

     

    在浏览器中访问 http://localhost:3000/ 测试。

导入样式资源

  • 配置模板文件

     
     
     
      

    文件需要依赖其他的字体等文件,因此使用 进行地址转换

    文件不需要依赖其他的文件,因此,直接下载文件即可

配置布局组件

将公共部分提取成公共组件。

  •  

导入登录注册

  •  

导入剩余页面

路径页面/首页/login登录/register注册/settings用户设置/editor发布文章/editor/:slug编辑文章/article/:slug文章详情/profile/:username用户页面/profile/:username/favorites用户页面/喜欢的文章

用户设置页面

  •  

创建 / 编辑文章

  •  

文章详情页面

  •  

导入用户页面

  •  

手动配置路由

  •  

处理顶部导航链接

  • ,将所有 改写为

     

处理导航链接高亮

  • ,配置路由链接高亮

     

封装请求模块

  • 安装 axios

     
  • 创建 文件,封装请求模块

     

封装请求方法

  • 创建 文件,封装****相关的请求方法

     

基本用户登录注册

实现基本登录功能

表单验证

错误处理

用户注册

  • ,调用接口,输入登录信息,完成基本登录注册功能

     

存储用户登录状态

存储原因


  • 需要根据登录状态判断页面的显示内容
  • 某些页面只有登录后,才可以访问

解析存储登录状态实现流程


  • 官网地址:https://zh.nuxtjs.org/faq/auth-external-jwt/#login-page

  • 官网示例,代码如下

     
      
     
      

    注意

    ​ 该函数只在每个服务器端呈现中运行。所以我们用它来改变存储中的会话浏览器cookie。我们可以使用并使用.

存储登录状态,并将其持久化


  1. 初始化容器数据

     
      

    注意

    ​ 1, 中已经集成了 ,无需手动载入

    ​ 2, 目录的名称是 固定的,不可修改的

    ​ 3,Nuxt.js 在运行过程中,查找到 目录,会自动加载 目录中的容器模块。

  2. 登录成功,将用户信息存入容器

     
  3. 将登录状态持久化到 中

    启动 命令行,安装

     

    在 中,按需加载 ,即只在 客户端 中使用

     

    在 中,将登录状态存储到 Cookie 中

     
  4. 从 中获取并初始化用户登录状态

    安装

     

    在 中,定义 函数,初始化容器数据,传递数据给客户端使用

     

处理页面访问权限


  1. 中间件简介

    1官网地址:https://zh.nuxtjs.org/docs/2.x/directory-structure/middleware#router-middleware

    2基本概述

    • 中间件允许定义可以在呈现页面或一组页面(布局)之前运行的自定义函数。
    • 共享中间件应该放在目录。文件名将是中间件的名称(将会是中间件,也可以通过直接使用函数来定义特定于页面的中间件,请参阅匿名中间件 .
    • 中间件接收 context 作为第一个参数。
     

    在通用模式下, 将在服务器端(第一次向Nuxt应用程序请求时,例如直接访问应用程序或刷新页面时)调用一次,在导航到其他路由时在客户端调用一次。与,在这两种情况下都将在客户端调用中间件。

    中间件将按以下顺序串联执行

    1. (按文件中的顺序
    2. 匹配的布局
    3. 匹配的页面
  2. 基本分类

    • 路由器中间件

      中间件可以是异步的。要执行此操作,返回 或者使用 。

       

      那么,在你的,使用钥匙

       

      现在每次路由更改都将调用中间件。

      您也可以将中间件(甚至多个)添加到特定的布局或页面。

       
    • 命名中间件

      可以通过在目录中,文件名将是中间件名称。

       

       
    • 匿名中间件

      如果只需要为特定页面使用中间件,可以直接为其使用函数(或函数数组

       
  3. 页面访问权限实现过程

     

     

    在需要判断登录权限的页面中配置使用中间件

     

展示公共文章列表

  • 接口文档:https://github.com/gothinkster/realworld/tree/master/api#list-articles

封装请求方法

  •  

获取数据

  • 在 中,请求接口,获取数据

     

模板绑定

  • 在 中,循环渲染数据,实现模板动态绑定

     

公共文章列表分页

处理分页参数

  • ,访问接口时,传入每次访问的文章数量 和 数据的偏移量

     

页码处理

  • 在 中,书写分页模板

     
      
    • 1,使用计算属性计算总页码
     
      
    • 2,遍历生成页码列表
     
      
    • 3,设置导航链接
    • 4,响应 query 参数的变化
     
      

    官网地址:https://zh.nuxtjs.org/docs/2.x/components-glossary/pages-watchquery/

展示文章标签列表

封装请求方法

  •  

模板绑定

  •  

优化并行异步任务

  •  

处理首页的导航栏

  •  
  • ,封装用户关注文章列表的请求方法

     

统一设置用户 Token

添加请求拦截器

  • 在整个应用程序中使用函数或值时,使用插件机制在 中注入

     

使用插件,注入 context

  • 官网地址:https://zh.nuxtjs.org/docs/2.x/directory-structure/plugins/

  • 在 中,注册插件

     

注意:

  • 将原来 目录中文件引入的 方法,改为如下代码:

     

文章发布时间格式化

  • GitHub 地址: https://github.com/iamkun/dayjs

  • 使用 模块,安装

     
  • , 封装 插件

     
  • , 注册插件

     
  • , 使用过滤器

     

对文章进行点赞操作

封装请求方法

  •  

绑定点击事件

  •  
     

展示基本信息

封装请求方法

  •  

获取数据

  •  

模板页面

  •  

Markdown 转为 HTML

  • GitHub 地址: https://github.com/markdown-it/markdown-it

  • 使用 模块,安装

     
  • , 把 markdown 格式的数据转换成 HTML

     

展示文章作者相关信息

  • . 提取公共组件,渲染文章作者相关信息

     
  • ,父组件引入子组件

     

设置页面 meta 优化 SEO

  • 官网地址: https://zh.nuxtjs.org/docs/2.x/components-glossary/pages-head/

  •  

展示评论列表

  • ,提取公共组件,通过客户端渲染展示评论列表

最新文章
excel 区域内按行排序_在Excel 2010中对行进行排序
Most of the time when you're sorting in Excel, you sort based on the values in one or more columns. If your workbooks are like mine, it's rare that you sort horizontally, based on the values in a row. But if you ne
c编程向计算机发送数据,一文读懂一台计算机是如何把数据发送给另一台计算机的...
这是之前一篇文章的修订版,感觉是一篇很不错的文章,重新修改排版了下。前言天各一方的两台计算机是如何通信的呢?在成千上万的计算机中,为什么一台计算机能够准确着寻找到另外一台计算机,并且把数据发送
CTF 工具 集合
From:Hello CTF:在学习CTF前希望您具备一些CS领域的基础知识,这里推荐您先阅读 JANlittle师傅写的CS入门资料 ( 点此跳转 ) 大致具备CS领域的基本技能后再开始CTF的学习。 入入入入门(fén)综述࿱
AI小助手使用指南:涵盖TV版操作与百度AI小助手应用教程
在这个科技日新月异的时代人工智能()正在逐步渗透到咱们生活的各个角落从智能手机、智能家居到智能电视等设备。小助手作为人工智能技术的产物它能帮助我们更高效地完成日常任务如播放音乐、查询天气、设置闹钟等,甚至可以成为我们的生活
08山东电视台公共频道节目推介暨广告年会直播
12月2日19:00时现场直播2008山东电视台公共频道节目推介暨广告年会  【大片头】  【新闻女生组推介板块】  1、 开场歌舞:《魅力》2’40  表演:七名新闻女生  伴舞:20男生  【主持人开场】孙亮 郭培鑫  【《新闻女生组》
Android 的开源电话/通讯/IM聊天项目全集
一、Android的XMPP客户端 BeemBeem 是一个运行于 Android 手机平台的 XMPP (jabber) 的客户端软件,兼容标准的 XMPP 服务器和服务,例如 Ejabberd, Openfire, Facebook, 和 Gmail). 支持 SASL, 代理(Socks4, Socks5, HTTP), DNS SRV, and c
ai智能机器人源码定制开发快速搭建送服务器
聊天机器人chatai*近推出了一款新产品——-Lisa,它能帮助人们更好地交流和分享想法。这款软件目前还在测试阶段,已经有很多人使用过了。1:chat在线聊天机器人的开发背景随着移动互联网的发展,智能手机已经成为人们生活中不可或缺的工具
AI智能生成文字Logo:一站式解决个性化标识设计需求
在数字化浪潮的推动下形象已成为企业竞争力的关键组成部分。一个独有、个性化的标识不仅可以吸引消费者的目光还能传递企业的核心价值。传统的标识设计往往需要耗费大量时间和精力且难以满足个性化需求。如今智能生成文字Logo的出现为解决这
BTS WORLD
【基本介绍】『一睁眼竟是2012年,而且我还成了Big Hit的职员?!在BTS还没出现的世界,我成为了BTS的经纪人。现在他们能否出道,全看我了!』难道就是追星的最高境界?我还能回到原来的世界吗?如同梦境一般在眼前展开的的神秘故事,现在
Autodesk Maya 2023 for Mac 正版激活永久使用(支持M1)
兼容M1的Autodesk Maya 2023 终于更新啦!!玛雅是专业的三维动画设计工具,这次的maya2023中文版引入Blue Pencil,它取代了现有的油性铅笔工具,提供更多用于文本和形状的绘图工具,以及用于注释的图层系统,另外还更新了布尔建模、拓扑工
相关文章
推荐文章
发表评论
0评