Vue生态及实践 - Nuxt

news2024/9/22 19:43:33

Nuxt.js

Nuxt.js - Vue.js 通用应用框架 | Nuxt.js 中文网

Nuxt.js 中文教程_w3cschool

开源社区仁人志士创建了开箱可用的:Nuxt.js框架,帮助我们更快的实现ssr的同构。

  • Nuxt.js是一个基于Vue.js的通用应用框架
  • 它是对客户端,服务端基础架构的抽象组织,nuxt.js主要关注的是UI渲染
  • 它预设了利用Vue.js来开发服务端渲染的应用所需要的各种配置
  • Nuxt.js提供对基于Vue.js的应用生成对应的静态站点的功能【Prerender】
  • Nuxt.js提供了强大的模块系统,可用便捷地使用REST或GraphQL接口,PWA以及AMP支持等都是作为模块来提供支持。

响应流程图

 

目标

  • 实现nuxt-link组件
  • 实现nuxt-link组件的服务端版本
  • prefetch组件功能

 

nuxt-link

  • 在通用代码中 不可接受特定平台的API;
  • 因此如果代码中直接使用了像window或document这种仅浏览器可用的全局变量,则会在Node.js种执行时抛出错误,反之也是如此。

 src/components/ULink.client.vue

<template>
  <!-- 组件二次封装,要写上v-bind="$attrs" v-on="$listeners",可用来触发原方法 -->
  <router-link v-bind="$attrs" v-on="$listeners">
    <!-- 默认文本部分 -->
    <slot></slot>
  </router-link>
</template>
<script>
export default {
  name: "u-link",
}

src/entry-client.js

// 全局注册一下客户端u-link
import ULink from "./components/ULink.client.vue";
Vue.component("u-link", ULink);

src/components/ULink.server.vue

<template>
  <!-- 组件二次封装,要写上v-bind="$attrs" v-on="$listeners",可用来触发原方法 -->
  <router-link v-bind="$attrs" v-on="$listeners">
    <!-- 默认文本部分 -->
    <slot></slot>
  </router-link>
</template>
<script>
export default {
  name: "u-link",
}

src/entry-server.js

// 全局注册一下服务端u-link
import ULink from "./components/ULink.server.vue";
Vue.component("u-link", ULink);

App.vue

// router-link => u-link
<u-link
class="m-link"
:style="{
  backgroundColor:
    $route.name === nav.path ? theme.highlight : theme.primary,
}"
v-for="nav in language.navs"
:key="nav.path"
:to="nav.path"
:prefetch="true" // 使用自己写的那个prefetch
>{{ nav.name }}</u-link>

prefetch

// 浏览器的实现
<link rel="prefetch" href="/images/big.jpeg">

Prefetch是一项浏览器机制;这项机制利用浏览器闲置时间,预先下载并取回在将来可能会使用的网页资源并将其存在内存当中

// 在nuxt.js里面
<n-link to="/about" prefetch>About page pre-fetched</n-link>

在浏览器空闲时候发起请求,这个函数会将传入的callback函数添加到一个队列当中,并且会在浏览器空闲时,按照队列顺序执行空闲时间片段内能够完成的任务

window.requestIdleCallback(callback[,options])

React种的时间分片也是采用这个API实现的

献上一张ai生成图~

 

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

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

相关文章

LeetCode 打卡day59--单调栈

一个人的朝圣 — LeetCode打卡第59-60天 知识总结 Leetcode 739. 每日温度题目说明代码说明 Leetcode 496. 下一个更大元素 I题目说明代码说明 Leetcode 84. 柱状图中最大的矩形题目说明代码说明 知识总结 今天做了单调栈的三道题 总结了一个模版套路: 寻找下一个更大的数 f…

Spring IOC - Bean的扫描

Component及其衍生注解&#xff1a;Configuration、Controller、Service、Repository标记的类&#xff0c;被Spring IOC扫描到后&#xff0c;即可被容器管理起来。其原理基本涵盖在AnnotationConfigApplicationContext构造函数体的三行代码里。 public AnnotationConfigApplic…

学校一键式报警器如何使用

学校一键式报警器通常是在紧急情况下使用的&#xff0c;例如火灾、恶性事件等。以下是一般的使用方法&#xff1a;1. 紧急情况发生时&#xff0c;发现危险或有人身安全受到威胁&#xff0c;迅速找到一键式报警器。2. 按下报警器上的按钮&#xff0c;通常是一个明显的红色按钮。…

查看docker运行状态,与查看防火墙运行状态

安装docker这里不细述了&#xff0c;可以通过 docker -version 查看安装的版本&#xff0c;出现成功就表示安装是ok的 查看docker状态是否启动状态&#xff0c;出现running就表示成功 systemctl status docker 如果没有则需要输入启动命令来启动 systemctl start docker 没报错…

前端学习——Web API (Day2)

Dom事件基础 事件监听 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

干货 | 联通政企数据运营体系建设

以下内容整理自大数据能力提升项目必修课《大数据系统基础》同学们的期末答辩汇报。 我们将从以下几个方面为大家介绍我们的项目&#xff0c;首先第一部分是需求分析&#xff0c;然后是数据提取及处理&#xff0c;接着样本定义与分布、特征粗筛与模型选择、特征精筛与评分卡建模…

Java性能权威指南-总结28

Java性能权威指南-总结28 数据库性能的最佳实践Lambda表达式和匿名类Lambda表达式与匿名类加载 数据库性能的最佳实践 Lambda表达式和匿名类 对很多开发者而言&#xff0c;Java 8最激动人心的特性就是加入了Lambda表达式。不可否认&#xff0c;Lambda对Java开发者的开发效率有…

mac电脑 flv转mp4怎么转

mac电脑 flv转mp4怎么转&#xff1f;相信大家平时在电脑上下载视频的时候遇到过这样一个尴尬的事情&#xff0c;下载下来的视频不能被直接打开播放&#xff0c;而是需要使用专门的播放器才能打开查看&#xff0c;例如flv就是这样一种视频格式。大家都知道视频文件的格式种类非常…

CoT及ReAct解密与实战(三)

第8章 CoT及ReAct解密与实战 8.5 ReAct及计划和执行案例实战 我们来看一下LangChain的官方文档,首先它很简单的说了一下,计划和执行代理(Plan and execute agents)首先计划要做什么,然后执行子任务来实现目标,言外之意ReAct不是这样的,我们在ReAct中看见的内容是,有一步…

Debian使用Tomcat实现国密访问

环境准备&#xff1a; Debian 10 java version "1.8.0_131 Apache Tomcat/9.0.76 360国密浏览器 一.下载并安装jdk8 1.访问网站下载jdk8 https://www.oracle.com/java/technologies/downloads/#java8 2.解压到相应目录 3.配置环境变量 vim ~/.bashrc# java export JAV…

云端地球在建筑设计行业的应用

背景概述 建筑设计行业一直处于技术革新的前沿。随着数字化、信息化、智能化等技术的不断发展&#xff0c;建筑设计也将呈现出新的发展趋势。比如&#xff0c;计算机辅助设计、虚拟现实技术等将成为建筑设计的重要工具。此外&#xff0c;人工智能、大数据、物联网等新技术的应…

leetcode刷题——复制带随机指针的链表

思维导图&#xff1a; 题目描述&#xff1a; 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点…

WPS Office AI实战:AI带来的文档智能化体验

前面我们已经了解过 AI 在PPT制作、Word写作方面带来的革命性效率提供&#xff0c;今天一起来聊聊在线文档的AI应用。如果你习惯用在线文档的话&#xff0c;一样也可以享受到AI的强大优势。金山在线智能云文档已经接入WPS Office AI套件大家庭&#xff0c;用AI来改造写作的新时…

QT day3作业

有点不对&#xff0c;不能运行了&#xff0c;怪事 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//字体 void Widget::on…

认识MQTT(C语言)

MQTT基础概念 MQTT 入门介绍 | 菜鸟教程 MQTT使用 在linux下搭建MQTT服务器&#xff08;Broker&#xff09; 在linux下执行下面命令安装MQTT服务器 &#x1f4ce;mosquitto-1.6.3.tar.gzhttps://www.yuque.com/attachments/yuque/0/2023/gz/35243076/1687955850547-b594126…

003-Dubbo服务的发布和引用

目录 Dubbo3.0发布注册应用级注册-配置应用级注册-端口应用级注册-消费者-确定服务信息应用级注册-消费者-元数据中心 Dubbo3.0 发布注册 应用级注册-配置 因为接口级注册随着服务增多&#xff0c;注册中压力会越来越大 所以在3.0版本提供了应用级注册 #默认是all 接口和应…

两两交换链表中的节点——力扣24

题目描述 方法一&#xff1a;递归 class Solution{ public:ListNode* swapPairs(ListNode* head){if(!head || !head->next){return head;} ListNode* newHead head->next;head->next swapPairs(newHead->next);newHead->next head;return newHead;} }; 方法…

python以固定时间间隔取行

目录 1. 间隔取行2. 时间戳间隔取行&#xff1a;下采样参考链接 1. 间隔取行 dataframe 实现每隔 n 行取 1 行 近期在做数据分析的时候&#xff0c;用到了对csv文件每隔n行取1行的操作&#xff0c;正常情况下会立马想到for循环&#xff0c;可能大家还会有其他方法&#xff0c…

第八章——函数探幽

C内联函数 内联函数是为了提高程序运行速度所做的一项改进。常规函数与内联函数的主要区别不在于编写方式&#xff0c;而在于C编译器如何将它们组合到程序中。 对于 C内联函数&#xff0c;编译器将使用相应的函数代码替换函数调用&#xff0c;程序无需跳到另一个位置处执行代…

LEADTOOLS V22 支持.NET 5-7.0 Crack

使用 LEADTOOLS 构建更好的应用程序 LEADTOOLS 由专利人工智能和机器学习算法提供支持&#xff0c;是一系列综合工具包&#xff0c;可将识别、文档、医疗、成像和多媒体技术集成到桌面、服务器、平板电脑、网络和移动解决方案中。 光学字符识别/ICR 以无与伦比的速度和准确性提…