5分钟入门 next13

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

5分钟入门 next13

上半年vercel 推出了nextjs13 这个大版本,刚好最近有个c端的项目,所以就用了这个框架来写,技术体系基本也是文档提到的 tailwindcss + ts + swr + ssr ,总的来开发体验还可以,不管是打包速度、文档、错误信息提示目前都还满意,只不过目前nextjs13 中文资料有点少,不过问题也不大。

之所以只要5分钟就可以入门,是因为我觉得nextjs官网文档写的挺好的,我之前也没有用过nextjs,看文档之后,上手写东西也很快 https://nextjs.org/

文件路由系统

next13 使用文件约定路由,这样就不需要配置 path 与组件的之间的映射关系了。

每一层路由必须建一个文件夹,在该文件夹中建立 page.tsx 作为该路由主页面 如 域名是:http://baidu.com,页面路径是demo,文件结构如下

app
 demo
  page.tsx
  loyout.tsx 

比如在目前这个项目中没有授权的页面路径是 /noAuth ,对应的代码结构就是在跟目录下建一个noAuth 文件夹,文件夹中新建一个 page.tsx 即可即可。

5分钟入门 next13

通过上面,我们知道app 内文件夹会被当作路由结构来解析,如果要自己的文件夹,可以下划线开头的命名,如

5分钟入门 next13

通常我们会在这种文件夹中放一些业务组件或者公共组件。

app 路由模式

next13 默认是app 路由模式,这个模式下我们可以建立一些固定名称的组件,layouttemplatepage  [jx、jsx、ts、tsx],这些固定名称的组件有不一样的作用, page.tsx 就是我们该模块下的首页。

  • layout.tsx 该路由下的公共导航,切换路由时,不会刷新,类似模版页,page.txs 就是layout 页面中的 children
  • template.tsx 该路由下的公共部分,切换路由时,会刷新
  • page.tsx 该路由的主页面

5分钟入门 next13

layout.tsx 类似模版页,有了这个模版页面,我们可以很方便的编写统一的布局、样式,以及可以利用layout 嵌套来实现子模块个性的布局。

服务端组件

在Next13中,app目录下的组件默认都是服务端组件,在服务器中渲染好dom节点再返回到浏览器(默认没有交互)。

有了服务端组件,我们可以在React应用中用同一套React语法,混合使用服务端组件和客户端组件。

如果需要转换成客户端组件,只需要在文件的开头使用 use clinet 即可。

服务端组件几个比较特别的好处

  • 在服务端组件中发起请求,可以在请求返回HTML前,就完成数据的读取。相比原来JS应用从服务端传送JS资源到客户端,React完成渲染后再向服务端请求数据,大幅减少FCP(首次内容绘制时间)。
  • 有效减少传送到浏览器的JS包体积。
  • 传统SSR的各种优势(SEO友好,首屏渲染快)。

服务器和客户端组件可以组合在同一组件树中,并且他们可以混合使用,通常客户端组件最好在组件树中的叶子节点位置(有交互的组件)。

5分钟入门 next13

理论上在nextjs中,服务端、客户端组件应该像上面图那样来划分,外层容器、以及列表数据的获取用服务端组件交互部分小的组件用客户端组件,这样效率应该不错。

目前服务端组件、客户端组件数据同步的方式还不是太好,目前我只知道通过在服务端组件使用props 的方式。

如果可以做到在客户端组件通过什么东西直接拿,然后数据又是实时同步,类似在服务端组件、客户端组件都能拿到想要的数据状态,且数据保持一致。

服务端组件渲染策略:

  • 静态渲染
  • 动态渲染
  • 流式渲染

其他的也貌似没什么写的,还是多看看官方文档比较好 https://nextjs.org/docs 

遇到的问题

nest13 globalThis is not defined

5分钟入门 next13

解决方案:一开始我以为我安装了 globalthis 模块,然后在根 layout 中引入即可。信心满满的打包,部署,然后发现还是报错。

5分钟入门 next13

后面在github的issues 中发现要用Script 组件引入,然后我改成下面这种就可以了。

5分钟入门 next13

配置多个环境,打包不同的环境变量

我们部署的时候有测试环境,预生产、灰度、生产等多个环境,不同的环境,有些配置是不一样 如url、或者其他的配置。

一开始我看到文档说 NODE_ENV === development 环境,加载的是.env.development,同理 production 加载的是.env.production,那么我只要设置NODE_ENV 在不同环境下是不同的值即可。

但是经过测试,我发现 只要是 build 的命令,next的环境变量 NODE_ENV 一直都是production,覆盖不了,所以这种方式行不通,只能在增加一个环境变量来区分。

所以还是只能通过老办法,通过cross-env 传递变量,然后在 next 的配置文件中写入到nextjs 中,在通过 process.env.xx 使用即可。

"scripts": {
    "dev": " cross-env BUILD_ENV=test next dev -p 3001",
    "build:test": "cross-env BUILD_ENV=test next build",
    "build:pre": "cross-env BUILD_ENV=pre next build",
    "start": "next start -p 3001",
    "lint": "next lint"
  },
      
 // 配置文件中在写入
  env: {
    BUILD_ENV: process.env.BUILD_ENV || "test",
    buildTime: new Date().toLocaleString()
  },
      
 // 使用
  console.log("当前环境", process.env.NODE_ENV);
  console.log("环境变量:", process.env.BUILD_ENV);
  console.log("打包时间:", process.env.buildTime);

小结

  1. nextjs13 是一个全栈的开发框架、也提供了一些常用的组件
  2. 服务端组件、客户端组件混合使用、以及服务端组件渲染策略
  3. app 路由的 page、layout、loading 等固定的组件名称
  4. tailwindcss 、swr 还挺好用的

 文章来源地址https://www.toymoban.com/news/detail-709995.html

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

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

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

相关文章

  • 13分钟聊聊并发包中常用同步组件并手写一个自定义同步组件

    上篇文章10分钟从源码级别搞懂AQS(AbstractQueuedSynchronizer)说到JUC并发包中的同步组件大多使用AQS来实现 本篇文章通过AQS自己来实现一个同步组件,并从源码级别聊聊JUC并发包中的常用同步组件 本篇文章需要的前置知识就是AQS,如果不了解AQS的同学可以看上一篇文章哈~ 阅读

    2024年02月09日
    浏览(30)
  • c++入门必学库函数 next_permutation

    next_permutation的意思是下一个排列,与其相对的是prev_permutation,即上一个排列。我们需要使用全排列的时候就可以直接使用这两个函数,方便又快捷 由于prev_permutation和next_permutation的用法是一样的,下面就值讲解next_permutation的基本用法 next_permutation只能获得上一个排列,如果要

    2024年02月02日
    浏览(24)
  • 【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(一)

    课程地址: 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 1 - 2节) 开场白,HarmonyOS 的一个简介,话不多说,直接看图吧! 工欲善其事必先利其器,开发准备需要两件事:1、开发文档;2、开发工具 打开鸿蒙官方网站,

    2024年04月24日
    浏览(34)
  • VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月12日
    浏览(40)
  • 【AI实战】开源中文 llama2 来了,30 分钟搭建 130 亿参数大模型 Llama2-Chinese-13b-Chat

    Llama2 2023年7月19日:Meta 发布开源可商用模型 Llama2。 Llama2 是一个预训练和微调的生成文本模型的集合,其规模从70亿到700亿个参数不等。 LLaMA2 的详细介绍可以参考这篇文章:【大模型】更强的 LLaMA2 来了,开源可商用、与 ChatGPT 齐平 Llama2-Chinese Llama2中文社区 Llama2-Chinese Git

    2024年02月12日
    浏览(34)
  • 一分钟带你入门Selenium入门!【建议收藏】

    欢迎阅读Selenium入门讲义,本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识。 在Selenium的课程以前,我们先回顾一下软件测试的基本原理,为我们进一步完成Selenium自动化测试做好准备。 G.J.Myers在其经典的著作《软件测试艺术》(The Art of Software Testing)一书中,给

    2024年04月23日
    浏览(20)
  • 十分钟入门Zigbee

    大部分教程通常都是已Zigbee原理开始讲解和学习,各种概念让初学者难以理解。本教程从一个小白的角度出发,入门无需任何Zigbee底层原理知识,只需要基本的MCU研发经验就可以掌握,让您快速实现zigbee组网和节点之间通信。 本教程采用泰凌微TLSR8258芯片,芯片资料链接TLS

    2023年04月09日
    浏览(54)
  • 3分钟入门:Flex 布局

    全称 flexible box,弹性布局。 如何开启:为元素添加 display: flex 。 开启 flex 布局的元素,称为 flex 容器(flex container),其子元素成为容器成员,称为 flex 项目。 flex 布局原理:通过给父盒子添加 display: flex ,来控制盒子的位置和排列方式。 flex-direction 设置主轴方向 属性值

    2023年04月26日
    浏览(32)
  • 管理软件开发三分钟入门

    利用蓝点通用管理系统,可自定义各种管理功能,三分钟入门,快速搭建各种数据管理/流程审批/信息发布等功能,部署到云服务器,可随时随地用电脑或手机操作。支持自定义表单、流程、版式及图表/报表,可接入微信和公众号,轻松定制自己专属的CRM系统、OA系统、HR系统

    2024年02月09日
    浏览(32)
  • C++引用10分钟入门教程

    我们知道,参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。 对于像 char、bool、int、float 等基本类型的数据,它们占用的内存往往只有几个字节,对它们进行内存拷贝非常快速。而数组、结构体、

    2024年01月19日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包