字节跳动青训营--前端day8

文章目录

  • 前言
  • 一、CSR,SSR,SSG
    • 1. CSR
    • 2. SSR
    • 3. SSG
    • 4. SSR,SSG的优势
      • 利于SEO
      • 更短的首屏时间
  • 二、什么是Next.js
  • 三、Next.js客户端开发
    • 1. Api
    • 2. CSS Modules
    • 3. Layout
    • 4. 文件式路由
  • 四、Next.js服务端开发


前言

仅以此文章记录学习历程。


一、CSR,SSR,SSG

1. CSR

客户端渲染(Client-Side Rendering)。常见B端WEB应用开发模式,前后端分离,服务器压力相对更轻,渲染工作在客户端进行,服务器直接返回不加工的HTML用户在后去访问操作

(不会嵌套后端代码,会直接渲染前端ui)

SPA:单页面应用,他所需要的资源(HTML,CSS,JS),在一次请求中就加载完成,不需要刷新地动态加载,首屏时间更长

2. SSR

服务端渲染(Server-sie Rendering)。不是什么新鲜的概念,从原先的JSP/PHP就已经体现了服务器端渲染。
(会在前端页面当中嵌套后端代码)

同构SSR:
前后端一体化,一套 React 代码在服务器上运行一遍,到达浏览器又运行一遍。前端后端都要参与渲染,而目首次渲染出的 HTML 要一样。

(会嵌套后端代码,但是并不是在一个html文件当中嵌套,而是单独分出来一个文件夹保存后端代码文件)

BFF:Backend For Frontend,服务于前端应用的后端。
(通常来说BFF不会直接操作数据库,而是对后端返回的几个数据进行拼接汇总然后交给前端页面进行模板页面的数据展示前后端的中介

在这里插入图片描述

3. SSG

静态站点生成 (Static Site Generation)在构建的时候直接把结果页面输出html到磁盘,每次访问直接把html返回给客户端,相当于一个静态资源

CDN:建立并覆盖在internet 之上,由分布在不同区域的边缘节点服务器群组成的分布式网络,

相比 SSR,因为不需要每次请求都由服务器端处理,所以可以大幅减轻服务器端的压力

缺陷在于只能用于偏静态的页面,无法生成与用户相关的内容,也就是所有的用户访问的页面都是相同的

4. SSR,SSG的优势

利于SEO

浏览器的推广程度,取决于搜索引擎对站点检索的排名,搜索引擎可以理解是一种爬虫,它会爬取指定页面的 HTML,并根据用户输入的关键词对页面内容进行排序检索,最后形成我们看到的结果

更短的首屏时间

SSR / SSG 只需要请求一个 HTML 文件就能展现出页面,虽然在服务器上会调取接口但服务器之间的通信要远比客户端快,甚至是同一台服务器上的本地接口调取。因为不再需要请求大量 js 文件,这就使得SSR / SSG可以拥有更短的首屏时间在这里插入图片描述

二、什么是Next.js

Next.js是一个用于生产环境的 React 应用框架,使用它可以快速上手开发 React 应用。无需配置就可以如服务端渲染 SSR、编译时渲染 SSG,Typescript 语言支持,自动打包,路由愈加载等功能。

三、Next.js客户端开发

demo仓库地址:https://github.com/czm1290433700/ssr-server
CMS 仓库地址: https://github.com/czm1290433700/nextjs-cms
Demo 仓库地址: https://github.com/czm1290433700/nextjs-demo

1. Api

getInitialProps: 在服务器端执行,只能在页面层面进行绑定,采用同构,首次渲染服务器端渲染,路由跳转使用客户端路由(会在客户端执行router跳转逻辑)

getServerSideProps: SSR,与getInitialProps不同的是即使使用roter跳转也只会在服务端执行这部分逻辑

getStaticProps: SSG,在服务器端构建时执行。(如果涉及动态路由(带参数),需要使用getStaticPath配置所有可能的参数情况)

2. CSS Modules

Next.js支持用文件名约定的CSS模块。[name].module.css

3. Layout

通过在入口文件导入Layout,可以实现每个页面公共的页眉页尾

4. 文件式路由

Next.js 有一个基于页面概念的基于文件系统的路由器。当一个文件被添加到 pages目录中时,它会自动作为一个路径可用(说白了就是不需要自己配置路由了)

BFF层的文件式路由:
BFF,作为服务器构建包,不影响客户端构建bundle体积
相同的router生成方式,不过是作为Api层访问而不是page页面

路由跳转:

  • next/link
  • useRouter
  • 原生方法跳转(不支持,不会进行Diff比对渲染,性能上不如上面两个)

四、Next.js服务端开发

和Express等开发类似,区别是没有参数可以直接区别请求的类型

仓库: https://github.com/strapi/strapi
初始化: npx create-strapi-app my-project --quickstart

一个接口的生成有以下几个过程:

  • content-type builder 编辑结构体
  • content manager 配置数据源,并且发布
  • settings roles 里选择对应角色并勾选要发布的接口类型
  • 如果涉及嵌套,在接口后加上 populate=deep 参数(npm install strapi-plugin-populate-deep–save),没安装加参数 populate=* ,但只能嵌套一层

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

孙叫兽CSDN社区云----WebIT已创建,欢迎大家前端全栈小伙伴踊跃加入

目录 社区云是什么? 创建CSDN社区云WebIT的目的 推荐分享的技术点(如下图所示) 社区成员权益 版主权益 管理员权益 WebIT社区云积分规则 WebIT优质版主及管理员可以申请直播分享前端技术 WebIT社区云将为社区运营者提供: …

字节跳动在Rust高性能编程探索和实践

本文整理自字节跳动火山引擎基础架构服务框架工程师吴迪于Qcon大会上的分享内容。 嘉宾及内容介绍 本次分享内容主要分为以下三个部分: 我们为什么选择了 Rust 语言;我们做了什么;展望未来:机遇与挑战。 我们为什么选择了 Rust 语…

字节跳动自研 OpenBMC 方案成功上线,STE 团队工程师都做了哪些事?

OpenBMC 是 Linux Foundation 组织里的一个项目,也是目前开源 BMC 里方案最成熟、社区最活跃的项目。日前,我们得知字节跳动系统部 STE 团队自研的 OpenBMC,已在内部成功上线,并稳定运行了两个多月。这也是字节跳动首次正式上线并…

月薪11K!95后房产经纪人转行当程序员:工资过万不难,精神压力也不大

时代在不断的发展,人们对“衣食住行”的要求越来越高,而这其中人们对于“住”是格外的关注。 买房的人希望自己能买到合适的房子,而卖房的人也担心自己的房子卖便宜了,所以越来越多的人在买房卖房这一块儿很难抉择,因…

chatgpt赋能python:Python怎么装Pip

Python怎么装Pip Python是一种非常流行的编程语言,可以用于各种用途,包括网页开发、数据分析、科学计算等。如果你是一个Python编程新手,你可能不知道如何安装和使用Python包。Pip是Python包管理系统,可以帮助你安装和管理Python…

赛事报名启动丨百度Apollo星火自动驾驶大赛开始报名啦!

作为汽车智能化、网联化的关键环节,自动驾驶成为全球科技界、产业界竞争的新赛道。随着人工智能、5G通信、激光雷达、高精地图等多项技术不断完善,自动驾驶的判断力和理解力得到了显著提升。为了推动自动驾驶技术的发展、加快人工智能技术的迭代&#xf…

RocketMQ 在同程旅行的落地实践

本文作者:刘树东 - 同程艺龙技术专家 01/使用概况 同程旅行选择RocketMQ主要基于以下几个方面的考虑: 技术栈:公司主要以 Java 开发为主,因此我们倾向于选择一款用 Java 实现的MQ,且没有任何第三方依赖为最佳&#…

火爆全网的个人行程卡纪念版!3秒教你快速生成!

大家好 咱们直接开门见山! 3 秒生成你的专属行程卡纪念版 用下面这款小工具,只需要 3 秒,就能帮大家生成【行程卡纪念版】。 用一张图片记录你三年去过的地方。 回顾过去三年,我们发现许多美好的回忆已经深深地留在了我们的心中。…

CAN网络管理唤醒功能

采用1043的can 芯片:工作模式 – 正常模式 – 具有 INH 输出以及本地和远程唤醒请求功能的待机模式 – 具有 INH 输出以及本地和远程唤醒请求的低功耗睡眠模式 状态切换流程图: CAN唤醒的需求: 唤醒请求(Wake Up Request) 唤醒请求可分为两种: ● 主动唤醒请求:来自模…

(智能车比赛)基于 ADS 逐飞库 英飞凌 TC264 377系列 的多核使用经验

多核并行主要有两个方面 一,程序,变量储存地址设置 二,运行核选择 一、内存分配 概念及过程描述 尽量将不同的功能划分为各个模块,然后交给不同的cpu运行。 或者说不同的cpu负责运行不同的功能,cpu之间以少量的参…

CK-UR05-US桌面式超高频RFID发卡器开发手册之USB控制命令格式

CK-UR05-US桌面式超高频RFID发卡器支持USB控制命令格式,本文重点就此格式展开说明! CK-UR05-US桌面式超高频RFID发卡器 1、取版本号(GetReaderVersion) 功能:取读写器的硬件、软件版本 命令码: 02H 命令参数:无 命令包: 『40H 02H 02H BCH』 举例: 如…

RFID课程设计-图书管理系统用户端设计

RFID课程设计-图书管理系统用户端设计课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 Android 清单中请求 NFC 访问权限过滤 NFC IntentACTION_NDEF_DISCOVEREDACTION_TAG_DISCOVERED…

Linux炫酷终端仪表盘

最近发现了一个适合装逼的终端命令,会在终端显示一个炫酷的仪表盘(提示:终端全屏显示效果才好) 先上图 首先安装三个软件 sudo apt-get install node nodejs-bin sudo apt install nodejs-legacy sudo apt install git 待会会下…

【袋鼠云】标签系统

文章目录 客户画像标签建设的演进1. 业务单元独立作战2. 离线数仓统一建设3. 实时数据多维补充4. 标签产品化管理5. 数据智能化管理 标签体系设计与加工一、标签体系设计1. 数据梳理2. 基于OLP模型体系化梳理标签3. 定义标签与加工口径 二、标签模型设计三、标签配置1. 根据业务…

AI最新开源:LMSYS Org开源LongChat、法律大语言模型ChatLaw、中文医疗对话模型扁鹊

一周SOTA:LMSYS Org开源LongChat、法律大语言模型ChatLaw、中文医疗对话模型扁鹊 文章目录 1. LMSYS Org发布LongChat,上下文碾压64K开源模型2. 北大团队发布法律大模型 ChatLaw3. 扁鹊:指令与多轮问询对话联合微调的医疗对话大模型 1. LMSY…

pta中级题库

目录 7-1 三个整数排序 7-3 求数列前n项之和 7-4 求一组数据的平均值 7-5 输出图形 7-6 一行字符变换 7-7 sdut- C语言实验——删除指定字符 7-35 二维数组中每行最大值和每行和 7-36 矩阵转置 7-38 二维数组元素变化 7-39 沙漏图形 7-40 连接两个字符串 7-41 统计…

基于等照度线和窗口匹配的图像修补算法

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、关于图像修补 图像修补的目的是基于已有的图像信息或数据库内信息,对缺失区域进行合理地修复。在诸多领域如电影、…

pyecharts-Timeline讲解时间线

Pyecharts----Timeline (*^▽^*) 作者:发现美的眼睛(本人) 首先简单介绍一下pyecharts这个神奇的东东,如果你是从事web,那么Echarts就会熟悉知晓。 ——如果不是,那么这篇文章也会推荐一个非常好的&#x…

计算机网络英语作文150字,微信投票的英语,写一篇关于网络投票看法的英语作文150字左右...

你好微信投票的 Should students make friends online? Some people say yes Internet helps people make many friends Chatting on line, students can express their feelings and opinions more freely, and even get help for their foreign language studies Others, ho…

关于计算机500字英语作文,小学英语作文500字(共8篇)

小学英语作文500字由好范文网的会员“迈和”投稿精心推荐,小编希望以下多篇范文对你的学习工作能带来参考借鉴作用。 第1篇:小学英语作文500字 猜你正在找小学英语作文500字的怎么写?那么就给你这篇范文参考。 Im a happy girl.my english na…