【问题标题】:What is proper way to store code/functions that are used by both the frontend and backend?存储前端和后端都使用的代码/功能的正确方法是什么?
【发布时间】:2021-12-29 18:05:44
【问题描述】:

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

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

【问题讨论】:

  • 创建一个单独的包。

标签: node.js reactjs express frontend backend


【解决方案1】:

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

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

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

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"

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2021-05-25
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 2013-02-14
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多