2016-11-30 41 views
2

我有一个项目,需要各种开发人员在任何特定时间为应用程序构建组件/模块。可以将微服务应用于JS的前端吗?

然而,每个组件可以写在不同的框架或库中,例如URI/app1是用React编写的搜索组件,URI/app2是用AngularJS编写的结果组件。

我试图找到一种方法,使给定URI如果URI/subdomain送达我可以充当这是完全从其他子路径&的URI封装(技术方面)的模块。

沿着这些线做了什么?是否有一种方法或方法可以让应用程序全面地服务子模块(不是单个页面的片段,而是独特路径下的完整页面),并保持与其他前端代码隔离,但仍允许数据为传递了所使用的技术,以便开发人员可以基本上使用他们选择的技术在子路径下创建组件/页面/模块,并使用可能变化的技术编写的现有应用程序对其进行连贯接受。

+2

有一个名为[单温泉](https://github.com/CanopyTax/single-spa)工具(其中一些我的同事们建起来了),那可能有用。它允许混合使用不同类型的框架。 – KevBot

+0

iframes,我想。我明白这是Spotify桌面应用程序的工作方式:每个UI小部件都是一个单独的Chromium“窗口”,因此每个小部件都可以有自己的依赖关系 - 这意味着播放列表编辑器可以使用与帐户详细信息编辑器不同的jQuery版本 - 缺点是完全应受谴责的内存使用和开销。媒体播放器不应该需要300MB RAM才能开启。 – Dai

+0

Angular允许控制器之间的隔离。 –

回答

1

你的问题的答案是肯定的!微服务 - 复合用户界面在前端世界非常新颖。许多大公司正在放弃大型单体应用程序,他们正在开始微服务方式的开发 - 如此冷静的复合用户界面。

每个应用程序都可以根据需要由不同的团队构建在不同的框架React,Angular,Vuejs中。您可以将您的概念应用程序基于Zalando Mosaic Framework,或者仅通过MIT许可证获取Tailor.js,并使用不同的反向代理和通信总线构建您自己的应用程序。我面临这个问题,现在我可以简单地说这是可能的,但需要很多工作。

一切都取决于您的项目的规模,当然,您也可以使用Polymer framework来构建Web Components - 一套不同的技术,允许您创建可重复使用的自定义用户界面组件。

当然,您将面临应用程序/组件之间的通信问题,为此您可以使用简单的pub/sub模式或使用像Postaljs这样的库。通过浏览器全局窗口对象进行通信对于大型项目来说不是一个好主意,并且很容易导致很多麻烦。

建筑物前端与iframe组合是你最后想做的事。采用这种方法,您将面临很多应用程序之间通信的问题。

相关链接:

Project Mosaic | Microservices for the Frontend

Zalando Tailor

Micro frontends—a microservice approach to front-end web development

Designing a microservice-oriented application

工作实例

React frontend microservices architecture

实施例通信总线

Postaljs

相关问题