存储前端和后端都使用的 code/functions 的正确方法是什么?

What is proper way to store code/functions that are used by both the frontend and backend?

我的前端 Reactjs 应用程序存储在一个存储库中。 我的后端 Node.js 应用存储在另一个存储库中。

两者都有一些功能。应该在哪里存储这些函数,以便两个存储库都可以访问它们?

您可以创建一个库来导出您需要的所有功能,然后将其发布到 NPM 并将其添加到两个项目的依赖项中 package.json。使用 NPM,您也可以将您的包设置为私有,以防您不希望您的 code/package 公开可用。

起点是创建一个包含您需要的所有功能的目录,将它们全部导出到 index.js,然后 运行 npm init 创建一个 package.json 为您的新项目。系统将指导您命名和分配版本号,然后使用 npm publish 发布(您可能需要先创建一个帐户并 运行 npm login)。然后在您的前端和后端项目中,您只需 npm install <your-package> 就像任何其他 npm 包一样。

您的项目目录可能很简单...

myFunctions.js
index.js
package.json

myFunctions.js:

export const functionA = () => {
  return "a"
}

export const functionB = () => {
  return "b"
}

index.js:

export * from './myFunctions.js'

package.json(可以用npm init:

创建
{
  "name": "my-functions",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

然后在目录 运行 npm publish 中,在你的其他项目中你可以 运行 npm install my-functions.

最后,在您的其他项目中:

import { functionA } from 'my-functions';

// ...

functionA() // returns "a"

为你的辅助函数创建一个单独的 NPM 包当然是一个很好的解决方案,但我发现它们在不同的存储库中维护有点烦人。我倾向于尝试避免它们。

您的应用程序中肯定有一些功能在前端和后端都有用途,但我鼓励您仔细查看这些功能,看看该逻辑是否可以由其中一个或另一个负责(后端或前端)。

例如;如果您有一个函数来解析日期并以非常特定的方式为您的应用程序格式化,那么您可以让该函数仅存在于后端并利用它将已经转换的值传回前端 - 避免维护负担它在 2 个地方或一个单独的包中,然后需要在 2 个存储库中更新。

虽然有时无法解决,但我发现在大多数情况下我可以相应地拆分它们。