jjzjj

javascript - Scala Play Framework 和 Angular JS - 在重复和混合概念方面付出了太多努力

coder 2024-05-10 原文

我尝试在 playframework + scala + Angular JS 上编写应用程序。 目的是创建一个 web 应用程序,当 JavaScript 在浏览器中关闭或打开时,它可以正常工作。这是编写公共(public)网站时的通常要求(这对人们和将其编入索引的谷歌来说应该是好的)

所以我最终用 JavaScript 编写了 ~50% 代码,有两 (2) 个名为 “controller” 的文件夹 - 一个用于Scala 代码,一个用于 JS 代码(因为 AngularJS 也使用 Controller 概念)。

此外,由于 JS 代码应该使用 Ajax 调用,我不得不创建一个 返回 的 scala-controller json,但不是 html 返回客户端的请求。而且.. 这一切我都不喜欢。这似乎太费力了。

playframework 模板方面,我应该考虑如何将 ScalaJavaScript 结合起来,将参数从一种语言传递到另一种语言。使用一些技巧,例如在处理 JS 时显示 that,在应该关闭时显示 that

这一切都让我的模板更难理解,有一天,当我拥有庞大的代码库时,我可能会想出一个解决方案来复制我的模板(js 模板 + scala 模板)-在 JS 关闭/打开时使用正确的模板。那么 JS 代码量可能会上升到 60%。

然后我似乎要复制所有内容,比如拥有两个不同的应用程序 - Google。常见的(仅)是我的数据本身在我的数据库中,我不必复制数据。但是..我们可能对该数据的格式有不同的问题(并且很可能是基于 json 的 [因为我不会浪费处理器时间来进行表对象转换],但不是基于表的 - NoSQL .. 然后我们又一次像对待 DB 一样对待 JS - 就像对待 MongoDB) 一样,JS 与 Json 配合得很好,原生

那么问题来了,为什么不将 100% 的 JS 用于简单的事情,比如:请求-响应形成一个页面布局。服务器端 JS Controller 可以形成我的模板——这样我就不需要从一种语言切换到另一种语言,从这个意义上讲甚至可以提高工作效率。

问题: 你有什么建议吗?关于这个的最佳实践?我不是那种想要最终使用 NodeJS 来使用 JavaScript 作为所有东西的一种语言的人 - 用于服务器和客户端。但让我们谈谈生产力和业务需求。

有一个AnjularJS Controller 的例子(不是我的),我要写多少JS: https://github.com/tastejs/todomvc/tree/gh-pages/architecture-examples/angularjs/js

想象一下,我必须同时保留 PlayFramework Controller - 对于 HTML 和 AJAX 调用,将 scala/playframework 模板中的内容与 JavaScript 混合。

最佳答案

我想分享最终种子中使用的收据(https://github.com/angyjoe/eventual):

  1. 编写您的 HTML。为此,请随意使用任意数量的 JavaScript 框架和库(尽管种子是 AngularJS)。

  2. 确定 Controller 遵循的 Play 模型。

  3. 为每个 Controller (listcreateshow(id) 确定操作(仅您需要的!) , 更新(id), 删除(id))。将这些操作实现为 Scala 操作。

  4. 插入 Play 路由以将每个已实现的操作提供给客户端框架。

  5. 插入一个(而且只有一个!)Play 路由以将您的样式化 HTML 提供给客户端框架。

  6. 将剩余的开发时间和精力花在客户端...

关于javascript - Scala Play Framework 和 Angular JS - 在重复和混合概念方面付出了太多努力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790544/

有关javascript - Scala Play Framework 和 Angular JS - 在重复和混合概念方面付出了太多努力的更多相关文章

  1. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  2. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  3. ruby - 正则表达式 - 保存重复捕获的组 - 2

    这就是我做的a="%span.rockets#diamonds.ribbons.forever"a=a.match(/(^\%\w+)([\.|\#]\w+)+/)putsa.inspect这是我得到的#这就是我想要的#帮助?我尝试过但失败了:( 最佳答案 通常,您不能获得任意数量的捕获组,但如果您使用扫描,您可以为您想要捕获的每个标记获得一个匹配:a="%span.rockets#diamonds.ribbons.forever"a=a.scan(/^%\w+|\G[.|#]\w+/)putsa.inspect["%span","

  4. ruby - 如何测试正在使用 RSpec 和 Mocha 调用的混合类方法? - 2

    我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案

  5. ruby-on-rails - 为什么 DataMapper 使用混合与继承? - 2

    所以我只是对此感到好奇:DataMapper为其模型使用混合classPostincludeDataMapper::Resource虽然active-record使用继承classPost有谁知道为什么DataMapper选择这样做(或者为什么AR选择不这样做)? 最佳答案 它允许您从另一个不是DM类的类继承。它还允许动态地将DM功能添加到类中。这是我正在处理的模块中的类方法:defdatamapper_classklass=self.dupklass.send(:include,DataMapper::Resource)klass

  6. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

  7. Ruby 从数组中删除重复的对象 - 2

    我无法使用传统的Ruby方法从下面的数组user_list中删除所有重复对象,从而获得预期的结果。有解决这个问题的聪明方法吗?users=[]user_list.eachdo|u|user=User.find_by_id(u.user_id)users 最佳答案 这个怎么样?users=User.find(user_list.map(&:user_id).uniq)这具有作为一个数据库调用而不是user_list.size数据库调用的额外好处。 关于Ruby从数组中删除重复的对象,我们在

  8. Ruby 删除可枚举列表中的重复项 - 2

    ruby中有没有一个很好的方法来删除可枚举列表中的重复项(即拒绝等) 最佳答案 对于数组你可以使用uniq()方法a=["a","a","b","b","c"]a.uniq#=>["a","b","c"]所以如果你只是(1..10).to_a.uniq或%w{antbatcatant}.to_a.uniq因为无论如何,几乎所有您实现的方法都将作为Array类返回。 关于Ruby删除可枚举列表中的重复项,我们在StackOverflow上找到一个类似的问题: h

  9. ruby-on-rails - 将 Ruby 代码和文字标记与 Haml 混合 - 2

    如何用HAML编写这个ERB:#OR我可以:=some_ruby_code+":"#and=some_ruby_code%br但我不想在这里连接,我想将它写成内联:(=some_ruby_code):#and(=some_ruby_code)%br 最佳答案 =some_ruby_code+":"-#and=some_ruby_code+""编辑1:我不确定您在寻找什么。你想要其中之一吗?==#{some_ruby_code}:-#and==#{some_ruby_code}或==#{some_ruby_code}:-#and=so

  10. ruby-on-rails - 获取 ActionController::RoutingError(当尝试使用 AngularJS 将数据发布到 Rails 服务器时,没有路由匹配 [OPTIONS] "/users" - 2

    尝试从我的AngularJS端将数据发布到Rails服务器时出现问题。服务器错误:ActionController::RoutingError(Noroutematches[OPTIONS]"/users"):actionpack(4.1.9)lib/action_dispatch/middleware/debug_exceptions.rb:21:in`call'actionpack(4.1.9)lib/action_dispatch/middleware/show_exceptions.rb:30:in`call'railties(4.1.9)lib/rails/rack/logg

随机推荐