混合模式:在一个项目中同时支持构建时预渲染页面(SSG)和请求时渲染页面(SSR)。 增量静态生成:在构建之后以增量的方式添加并更新静态预渲染的页面。...基于文件系统的路由:每个 pages 目录下的组件都是一条路由。 API 路由:创建 API 端点(可选)以提供后端功能。 内置支持 CSS:使用 CSS 模块创建组件级的样式。...我试了一下,会自动在项目根目录创建 .github/workflows/nextjs.yml 文件,提交后就会自动开始部署。...期间遇到了两个问题: 我本地使用的是 pnpm build,构建的时候会报错找不到 pnpm 依赖,可以使用 npm 命令打包。...Next.js 配置文件中自动注入 basePath 并禁用 # server side image optimization (https://nextjs.org/docs/api-reference
及 API 路由 构建 API 功能 完全可扩展 当前,Next.js 正在被用于数以万计的的网站和 Web 应用程序,包括许多享誉世界的知名公司和头部品牌。...可以说,它肉眼可见的易用性牢牢把握了用户的心,不论是对于企业用户还是小微开发者,从基础框架到发布运维,它都提供了相对应的解决方案。...npx create-next-app nextjs-spreadjs 安装完成后执行npm run dev,如果项目能正常启动,就表示工程已经正常创建,默认创建好的工程会启动在3000端口,展示如下:...最终展示效果如图: 其中红色区域为表格主体,上方的工具栏是在线表格编辑器。在实际项目中,我们可以单独引入组件运行时,也可以将在线表格编辑区全部引入(在线表格编辑器会包含一个与之关联的运行时)。...components文件夹,并创建OnlineDesigner.js文件,在该文件中,我们引入spreadjs相关资源,并引入组件运行时。
在当前被各种‘过度’工程化蹂躏的阶段,显得难得可贵。 Nextjs 的配置地狱 我觉得,另外一个比较重要的亮点就是向 Web 标准 API 看齐。...上文我们也提到了客户端/服务端的同构应用的开发,会给开发者带来额外的心智负担,那么对齐浏览器和服务端的 API 就可以缩小这个 Gap, 降低学习成本。...不同运行时的对比,来源 Nextjs 官网 虽然现在各种 runtime 比较割裂, 不过我相信未来它们将走向统一的道路,谁能担此重任?...它也才发布一年多,在我落笔的此刻,它刚好也发布了 1.0 版本。 它的宣传点就是 —— 快 它的目的很简单,就是为了取代 Node.js,就是要提供一个更快的运行时,消灭现在复杂的开发乱象。...同时尽量不影响现有的框架和程序的运行(兼容 Node.js) 用”兼容并包”来描述它最好不过,比如它同时支持 ESM 和 CommonJS,甚至允许这两个模块在一个文件中并存,而现在主流的观点是 CommonJS
4、之前写了《使用 CSS variables 和 Tailwind css 实现主题换肤》也运用到了我的博客中。...而文章内容写完之后是通常不变的,所以可以先将页面静态存储在服务器上,这样就可以大大减小数据库压力。 getStaticProps 在构建时请求数据。...,而博客详情页是一个动态路由,就需要 getStaticPaths 这个 API getStaticPaths 构建时获取动态路由的数据 export async function async getStaticPaths...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...1、MySQL 里有只有 utf8mb4 才能显示 emoji 的坑, Pg 就没这个坑; 2、Pg 可以存储 array 和 json, 可以在 array 和 json 上建索引; 代码编辑器 从上一版是
,对我来说, TailwindCSS 不仅仅是一个原子类的超级样式库; 1、我们在写样式的时候,经常会写类名,团队成员之间会存在样式冲突的可能,虽然我们可以使用 css modules 来避免,但却会存在取类名称的疲劳的问题...而文章内容写完之后是通常不变的,所以可以先将页面静态存储在服务器上,这样就可以大大减小数据库压力。 getStaticProps 在构建时请求数据。...,而博客详情页是一个动态路由,就需要 getStaticPaths 这个API getStaticPaths 构建时获取动态路由的数据 export async function async getStaticPaths...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...1、MySQL 里有只有 utf8mb4 才能显示 emoji 的坑, Pg 就没这个坑; 2、Pg可以存储 array 和 json, 可以在 array 和 json 上建索引; 代码编辑器 从上一版是
因为这里用的是我自用的nodejs开发环境,在进入后会提示wakatime api密钥输入,可以忽略,觉得烦的话可以去侧栏插件删了它。...-> 项目根目录,并对比配置,修改output为export修改.cnb.yml的配置,在原文README.md里已经说明修改.cnb.yml中eo_deploy阶段的配置,在原文README.md里已经说明原文密钥仓库配置可参考...使用pnpm i趁你不注意瞬间安装完依赖包然后npm run dev,然后ports面板里面CNB自动将3000端口映射到了公网,可以预览当前开发代码的效果,就跟本地开发一样了,在webide中修改,对应预览页面会实时更新...如果能够正常刷新显示和开发,说明CNB的开发环境配置是没有任何问题的部署配置构建静态资源这里沿用的是nextjs的package.json,其他框架同理,在运行npm run build后,由于前面设置了静态输出...然后在里面新建一个文件(如果没有),这里以tencent.yml为例,在里面编辑输入# 这里的EO_SECRET可以自己定义EO_SECRET: "上面获取到的token"最后复制URL栏的地址,则为此密钥定义的文件地址
请求完 page2.js 之后,会回到 page1 的页面,把 page2 的 html、css、js 更新到 page1 上。也就是把 page1 更新为 page2。...比如需要用户触发的代码,只会运行在浏览器端。 我们的代码也不能随意编写,必须保证在两端都能运行。比如 window,在 Node.js 中没有这个对象,就会报错。...但实际开发中我们需要请求 /user、 /shops 等 API,它们返回的内容是 JSON 格式的字符串。在 Next.js 中怎么实现呢? 使用 Next.js 的 API 模式。...在 api 目录下的代码只运行在 Node.js 里,不会运行在浏览器中。...然后我们借助 gray-matter 从 md 文件中解析数据。 lib/posts.tsx 这个文件导出 JSON 数据。
14.GraphQL[35] 用于 api 的查询语言和用于对运行时的现有数据执行查询。提供 API 中数据的完整描述,使客户端能够准确地要求他们所需要的数据。 ?...23.JSONWebToken[44] JSON Web 令牌(JWT)是一种开放的、行业标准的 RFC 7519 方法,用于在双方之间安全地表示声明。这个包允许你解码、验证和生成 JWT。 ?...配置模块 24.Config[45] 设置存储在应用程序中的配置文件中,可以由环境变量、命令行参数或外部源覆盖和扩展。...模板语言 29.Mustache[50] Mustache 是一种无逻辑的模板语法。它可以用于 HTML,配置文件,源代码等任何东西。它的工作原理是使用 hash 或对象中提供的值在模板中展开标记。...它可以使用多个输入文件,并支持许多配置选项。 ??进程管理和运行 55.Nodemon[78] 在 Node.js 应用程序的开发过程中使用的简单的监控脚本。
; 5.2 Meta 数据 网页的 Meta 数据,也就是在 html->head 标签中的内容 Next.js 提供了 next/head[6] 用于声明式编写网页的 head 内容。...,可创建pages/_document.js 文件,并通过“自定义文档[7]”的方式继承并统一改造所有网页输出的公共内容。...当浏览器加载页面时,其 JavaScript 代码会运行并使页面完全交互。...SEO 优化的,其数据通常需要实时更新获取,因此采用 SSR 的方式,而 SSR 在服务端获取数据可以借助 getServerSideProps 方法 和构建时获取数据方法类似: export default...在初始化的目录结构中的 .
全新的 UI 设计 现在,通过 Storybook 7 简洁的用户界面,你可以比以往更轻松地构建出色的用户界面。画布尺寸已经扩展到边缘,为你的组件提供更多空间。...改进的类型安全性 我们在 CSF3 中改进了对 TypeScript 的支持。更严格的类型提供了更好的编辑器检查和自动补全,为 TypeScript 用户带来了巨大的提升。有关详细信息,请查看。...你可以在浏览器中调试事件流,并使用我们的测试运行器从命令行并行执行所有测试。...为了提高 Storybook 的稳定性,我们开始将 Storybook 视为一项服务,并希望在这个不断演化的环境中最大化其“正常运行时间”。...对于团队来说,维护已弃用的 API 并协调像 v7 这样的大版本发布也是一种痛苦。 将变更打包到更小、更频繁的发布中,应该能够使未来的升级对所有人来说更加平滑。
,react做ssr的神器,nextjs提供了next export这个命令,如果不熟悉next小伙伴可以先去官网阅读一下 nextjs.org/docs#static… nextjs的教程,推荐一下技术胖的免费视频教程...全局配置 全局的一些配置我放在了config.js中,拉取我项目的小伙伴只需要更改里面的配置,就可以一键生成你自己的静态博客了。...对象中有github api给我们提供的comments_url,可以用来请求这个issue下的所有评论,这里也把它一起请求到。.../Page.jsx中,在里面可以根据你的喜好去利用react任意发挥,并且调试支持热更新,可以说是非常友好了。...… ,我在这个课程中也学习到了非常多的东西。
通过在 pages 目录中的文件夹内创建文件,可以实现嵌套路由。...API 路由:Next.js 还提供了内置的 API 路由模式,使您可以在项目中快速创建 API 端点。通过在 pages/api 目录下创建文件,您可以定义 API 路由并进行服务器端处理。...App Router 中的文件默认都是服务端组件.Client Components 客户端组件,如果要使用客户端组件那就必须加上 use client ,并且这个命令会影响到子组件,如果父组件加上了...禁用缓存每次打包构建后,我们获取到的数据都是静态的,意味着无法获取到最新的数据async function getData() {const res = await fetch('https://api.example.com...构建速度: Turbopack 的设计目标之一是提供快速的构建和交付体验。
//... ); } pages 在pages路由下,如果我们要开启SSR,需要实现getServerSideProps这个API,在请求页面的时候,提前获取到数据,然后传入组件中。...app 在pages路由中,我们要实现SSG,需要先创建一个通用的模版文件,来表示所有的静态页面路由 []中的变量,就代表访问页面时传入的变量名称,然后我们需要实现generateStaticParams...On-demand Revalidation(按需增量生成) NextJS提供了更新静态页面的方法,我们可以在 app 目录下新建一个 app/api/revalidate/route.ts接口,用于实现触发增量更新的接口...为了区分需要更新的页面,这里可以在调接口的时候传入更新的页面路径,也可以传入在fetch请求中指定的collection变量。...最后 感谢你能看到这里,本文梳理了NextJS两种路由下的不同渲染方式,希望对你有用,如果可以的话,不妨留个赞再走呢,这对我很重要。 demo地址 github.com/AdolescentJ…
背景/引言在现代 Web 开发中,Next.js 是一个备受欢迎的 React 框架,它具有许多优点,如:服务器端渲染 (SSR):Next.js 支持服务器端渲染,可以提高页面加载速度,改善 SEO,...在本文中,我们将探讨如何在 Next.js 应用中处理上传的 Word 文档 (.docx) 文件,并将其内容保存到 Prisma ORM 中。...设置NextJs项目首先,我们需要创建一个新的NextJs项目,并安装所需的依赖包。...处理文件上传在NextJs中,使用multer中间件来处理文件上传。创建一个API路由来接收上传的文件。...同时,展示了如何使用爬虫代理进行采集,并将爬取到的数据存储到数据库中。通过这些示例代码,开发者可以更好地理解文件处理和数据存储的流程,并灵活应用代理IP技术来扩展数据获取能力。
1.2.2 代码更新 当文件发生更改时,我们一般需要将更改编译后再呈现给浏览器。编译打包做到的越快,发布的速度就越快。...下面是一个简化的示例: 首先,我们在api.ts和sdk.ts这两个文件中调用readFile,然后打包这些文件,将它们拼接在一起,最后得到 fullBundle。...当程序再次运行时,函数将不会重新运行,除非它的参数改变了。这种粒度的架构使您的程序能够在函数级别跳过大量工作。...在未来,官方还计划将这个缓存持久化到文件系统或者像 Turborepo 那样的远程缓存中,这将意味着 Turbopack 可以在不同的运行和机器上记住所做的工作。...2.2 启动项目 接下来,我们打开项目,然后执行package.json中的dev指令,即可启动项目。启动的方式针对构建工具的不同,运行的命令也会不同。
一开始的 User CRUD 例子,则可以将其归属到一个文件内下,这里我不建议将后端业务代码放在 app/api 下,因为 Next.js 会自动扫描 app 下的文件夹,这可能会导致不必要的热更新,并且也不易于服务相关代码的拆分...这里我将其更改为全局错误捕获,做法如下 复制 zod-validator 文件并粘贴至 server/api/validator.ts,并将 return 语句更改为 throw 语句。...这些服务集成的(这些都在我实际工作中实践并应用了),或许是太久未写 Blog 导致手生了不少,这篇文章也是断断续续写了好几天。...后续我将会出一版完整的我个人的 Nextjs 与 Hono 的最佳实践模版。...也说说我为什么会选用 Hono.js 作为后端服务, 其实就是 Next.js 的 API Route 实在是太难用了,加之轻量化,你完全可以将整个 Nextjs + Hono 服务部署在 Vercel
这个例子看起来简单,但包含了Docker的核心用法。在实际项目中,可能还需要考虑数据持久化、环境变量配置等问题。 数据持久化和卷(Volume) 容器默认是无状态的,容器删除后数据就没了。...Docker网络详解 Docker的网络功能很强大,也是很多人觉得复杂的地方。我刚开始学的时候也被搞得晕头转向,不过理解了原理之后就清晰多了。..."database"这个主机名访问数据库 # frontend容器可以通过"backend"访问后端API 这个功能叫做自动服务发现,非常实用。...在这个例子中: • 数据库容器不需要暴露端口到宿主机,只在内部网络中通信 • API容器可以通过"database"主机名访问数据库 • 前端容器可以通过"api"主机名访问后端 • 只有前端容器暴露端口给外部访问...docker-compose down # 重新构建并启动 docker-compose up -d --build 用了Compose之后,管理多容器应用就轻松多了。
在这里,我整理了一些我最喜欢的 NPM 包的列表。我还对它们进行了分类,因此信息更加结构化并且更易于浏览。 当然,我们不必全部安装和学习它们。在大多数情况下,从每个类别中挑选一个两个就足够了。...提供 API 中数据的完整描述,让客户能够准确地询问他们需要什么。...它可以用于 HTML、配置文件、源代码——任何东西。它通过使用散列或对象中提供的值扩展模板中的标签来工作。...它可以接受多个输入文件并支持许多配置选项。...密钥可以有一个超时 (ttl),之后它们就会过期并从缓存中删除。
构建起数据驱动型 API,并辅以可扩展且面向服务的架构。...GraphQL 在 API 中提供完整的数据描述,使客户端能够准确获取其需要的信息。 项目链接: https://www.npmjs.com/package/graphql ?...配置模块 24.Config 对存储在应用程序中的配置文件进行设置,可以通过环境变量、命令行参数或外部源进行覆盖及扩展。...两大出色工具在代码中对图像进行创建、编辑、合成与转换。...各键将拥有对应超时(ttl),超时后其将过期并被从缓存中删除。 项目链接: https://www.npmjs.com/package/node-cache ?