关于web应用程序后端和前端的共享代码/逻辑的快速问题。
我有一个web应用程序(Rails + heavy ),它解析通过用户提供的URL获取的HTML页面中的元数据(想想Pinterest或Instapaper)。目前,此处理完全在客户端进行。获取URL并解析DOM的代码位于Rails应用程序中相当大的一组JS脚本中。
偶尔也希望在应用程序的服务器端进行这种处理。例如,如果用户提供了一个URL,但是他们禁用了JS,或者有一个不符合标准的浏览器等等。理想情况下,我希望能够在后端(可能在异步后台作业中)处理这些URL,使用的逻辑与我们的JS解析器使用的逻辑相同,而无需将JS移植到Ruby。
我看过允许您在后端执行JS脚本的系统,比如执事,以及Ruby编译器(如OpalRB ),它们有望允许“写一次,执行很多”,但我不确定这两者都是正确的决定。
对于需要对类似数据进行客户端和服务器端处理的应用程序来说,避免业务逻辑重复的最佳方法是什么?
发布于 2013-06-24 15:37:28
试图将一种语言解释成另一种语言会增加太多的复杂性,而不会带来足够的好处。
如果逻辑量很小,只需使用Javascript在客户端复制它。
如果逻辑是广泛的,并且您的体系结构允许它,那么在Ruby中创建一个REST服务层,您可以使用AJAX调用该层服务。
发布于 2013-06-24 16:27:39
通常,我会说,使用Node、ExecJS或类似的方式都是实现这一点的方法--我对任何类似的交叉编译器都很谨慎。
尽管如此,我不知道为什么客户端解析在这种特殊情况下很重要。无论如何,您将需要一些API来执行跨域请求( jsonp.jit.su),那么为什么不让它也进行解析,并给您一些结构化的JSON,您可以在两端使用呢?
发布于 2014-10-15 16:18:11
对于需要对类似数据进行客户端和服务器端处理的应用程序来说,避免业务逻辑重复的最佳方法是什么?
是的,这是可能的。我在服务器上使用了node.js,这就是我告诉每个人使用它的原因。总有一天你需要客户端的东西在服务器上,反之亦然.目前,我在向应用程序的服务器端添加一些内容之前,做了两次。
我在客户端和服务器端都使用require.js模块系统。
https://softwareengineering.stackexchange.com/questions/202567
复制相似问题