除了 API 之外,我应该为前端/后端使用两个单独的项目还是将它们合并为一个? [关闭]

Posted

技术标签:

【中文标题】除了 API 之外,我应该为前端/后端使用两个单独的项目还是将它们合并为一个? [关闭]【英文标题】:Should I use two seperate projects for frontend/backend in addition with API or merge them to one? [closed] 【发布时间】:2018-03-31 18:27:27 【问题描述】:

我有几个问题希望得到一些答案。

所以我创建了一个带有 express & mongo 的后端节点服务器,它在网络上运行特定的任务,并将其循环保存在数据库中。我还添加了一个带有 express & bootstrap 的管理页面。这很好用。我需要的是一个前端页面——为此我选择了 VueJS。出于多种原因,我单独启动了该项目。我觉得这会更容易上手,因为我之前没有任何前端框架的经验,而后端项目是用 typescript 编写的,我现在宁愿使用普通的 es6 JS。

现在 - 该网站已经取得了相当不错的进展,并且我需要建立与数据库的连接并使用后端项目中已经实现的一些功能。

这就产生了问题:

我应该创建新函数和/或创建和使用 API 吗?通过两个不同的进程访问和写入mongodb会有什么问题吗?如果我从现有的后端逻辑创建“公共”api,会不会出现安全问题? (还没写任何api。)

或者我应该利用时间并将前端项目导入后端(也意味着将 new 转换为 typescript 或切换到普通的 ES6 JS)?这是否会带来安全风险,因为我宁愿在我的前端站点中没有后端逻辑。

感谢您对此的任何回答!

谢谢你:)

【问题讨论】:

【参考方案1】:

首先让我说我从未使用过 Vue。但是,每当我使用 react 时,我总是为前​​端和后端制作单独的项目。我发现将两者分开会更“干净”。

我认为您没有理由从打字稿转录整个项目。只需让您的前端向您的后端发出请求。

如果您想重温网络安全,我建议您查看Open Web Application Security Project。

【讨论】:

非常感谢您的回答。我已经选择了单独的后端和前端。我已经准备好 api - 现在我只需要通过 JWT 来保护它。谢谢你:)【参考方案2】:

这是一个你能负担得起运行两台服务器的问题吗?考虑到所有微服务,将前端与后端分开实际上是一个很好的举措,因为它允许您为将来的目的单独扩展这些东西。就像您的后端需要更多资源一样,一旦您开始迎合移动用户或一旦您获得更多 api 调用,而您的前端服务器只需要提供 ui 和资产,仅此而已。虽然明显的缺点是成本增加,因为您确实需要运行两台服务器而不是一台,但刚开始时这很困难


我应该创建新函数和/或创建和使用 API 吗?

为您的后端?是的。 API 是现在在网络空间中做事的方式,因为它为您提供了未来的证明,并允许以更可控和统一的方式访问您的后端(一切都通过 api)。所以如果你的前端还没有通过 API 访问你的数据库,我建议你重构它们来这样做。

对于您对 mongo 的担忧,我很确定 mongo 已经具备避免死锁的功能。

至于 API 的安全性,我建议查看 JWT。


要不要抓紧时间把前端项目导入后端

如果出于成本考虑,您是否应该走这条路,我建议为了统一起见重写其中一个代码库以符合另一个代码库,尽管在您有空的时候这样做(我们不能让您浪费所有宝贵的时间重写已经可以正常工作的代码)。这并不是一个真正的安全问题,因为后端代码不会发送到前端供所有用户查看

【讨论】:

非常感谢您的回答。我已经选择了单独的后端和前端。我已经准备好 api - 现在我只需要通过 JWT 来保护它。谢谢你:)

以上是关于除了 API 之外,我应该为前端/后端使用两个单独的项目还是将它们合并为一个? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

除了通过其 API 端点之外,还有其他方式进入后端吗?

API 获取应该是前端还是后端? [关闭]

我应该将前端代码放在我的后端项目中的啥位置以及如何/何时运行它?

docker容器中的前端和后端[关闭]

将单独的 Dyno 用于反应前端和 Django 后端时的 Cookie

使用laravel作为后端API和AngularJS作为前端的实时通知