bootstrapping - Next.js 客户端和服务器端引导代码
问题描述
我在哪里可以放置将在服务器端和客户端引导的代码?我在两端都需要一些逻辑,并且不想在多个地方维护它。我尝试/考虑过:
- 将其添加到
src/components/_app.js
中,constructor
但这似乎只能在客户端执行(或者在服务器端还不够早getInitialsProps
)。 - 将它添加到
_app.js
constructor
andserver.js
中,尽管这意味着我的逻辑不能使用模块系统import
,因为server.js
不是这样编译的。
解决方案
这将有助于为其提供一些背景信息。当您说将被引导的代码时,您是指将要执行的函数,还是您正在寻找一个通用的代码库,例如在客户端和服务器端都使用的实用程序函数。
我假设您的意思是有一个将在客户端和服务器端执行的文件(实用程序函数的情况)。这样,您可以考虑将文件放在项目的根目录中,例如./util.js
这意味着如果您在客户端(例如./pages/index.js
)需要它,您可以像这样引用它:
import { testUtil } from '../util.js';
如果您在服务器文件夹中需要它(我更喜欢将服务器代码放在./server
目录中),您可以像这样引用它:
const { testUtil } = require('../util.js');
唯一的缺点是您必须编写不使用 ES6 结构的代码来确保客户端和服务器之间的互操作性。
推荐阅读
- delphi - 为什么这个接口硬转换似乎有效?
- c# - WPF:如何测试应用程序是否在 Appium 中最小化
- r - 从 2 个不同数据帧的 2 列中比较或提取唯一行
- rust - rust iterator::any 只接受 FnMut 签名的函数?
- sql - Postgres CUBE 搜索 - 可选/任何值
- node.js - 在 overmind graphql 中导入 Phoenix npm 包失败
- python - 使用旋转矩阵和相机矩阵的像素投影,有人可以回顾一下我做错了什么吗?
- angular - 如何从角度的另一个组件中的函数重建另一个组件?
- telegram - 在 Telegram 中使用 Telethon 提升用户
- java - 为什么Java代码编译有区别:mvn verify vs mvn compile