Rails:不是 ember,不是 JS 响应,而是介于两者之间的东西

2023-12-27

我正在开发一个标准的 Rails 应用程序,到目前为止我还没有使用任何 AJAX,只是使用了很好的 HTML。我的计划是迭代地添加“远程”链接和所有此类内容以及对 JS 响应的支持,因为我知道生成 JS 服务器端是非常非常邪恶的,但我发现它也非常方便,简单,快速并且它使应用程序足够敏捷,并且 i18n 开箱即用。

使用纯 JSON 方法会更轻,但需要大量客户端编码。

现在想象一下,在此应用程序中,用户有一个邮箱,并且由于他们无需重新加载页面就能够执行大部分甚至所有操作,因此邮箱计数器永远不会改变,除非他们手动刷新页面。

那么,问题来了:处理这个问题的最佳方法是什么?

  1. 我考虑过使用 Ember(用于数据绑定),并通过 ruby​​ 的某种把手实现与 Rails 共享视图。这将是非常棒的,但对于开发人员(我)来说不是很透明。虽然我猜我只需要编写 ember 将使用的车把视图,但其余的仍然可以按原来的格式编写,不是吗?

  2. 另一种选择可能是使用某种事件系统(可能是 EventSource?),然后使用方便的 JS 视图方法,并监听这些事件。我想这些应该是 JSON 对象,并且客户端必须进行编码才能处理它们。这看起来有点麻烦,我需要一个heroku(faye?)的解决方案,这是我的应用程序的托管位置。有什么提示吗?

我认为 ember 方法是更强大的方法,但似乎也相当复杂,而且我不想在服务器和客户端方面重复自己。

EDIT:

我见过this http://layervault.tumblr.com/post/30932219739/rails-in-realtime,这或多或少是选项#2。


使用 JavaScript 框架的优点之一是可以将整个应用程序连接并压缩为一个 JavaScript 文件。如果现代浏览器积极缓存 JavaScript,浏览器将不再需要在初始页面加载后请求这些资源。

使用 JavaScript 框架的另一个优点是它要求您成为自己的 API 的使用者。如果移动应用程序或第三方有可能访问它,那么充实应用程序的 API 供您自己使用可能会减少将来的工作量。

如果您不需要应用程序使用等效的 HTML 响应来响应每个请求,我认为使用 JavaScript 框架是一个令人信服的案例。

如果您的应用程序需要使用等效的 HTML 模板来响应每个请求,那么许多好处可能会丧失。 Ember 核心相对强烈地反对支持这种渐进增强的方式。考虑到以这种方式使用 JavaScript 框架的工具相对不稳定且不成熟,我可能倾向于使用选项 2 来完成此任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:不是 ember,不是 JS 响应,而是介于两者之间的东西 的相关文章

  • 全局 JavaScript 变量作用域:为什么这不起作用?

    所以我在玩 JavaScript 时遇到了我认为奇怪的事情 有谁能解释一下以下内容吗 我已将警报值作为评论包含在内 为什么 foo 中的第一个警报 msg 返回不明确的并不是outside var msg outside function
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • 使用 JavaScript 填写 PDF 表单

    这就是我所拥有的 用户填写很长的 html 表单 用户获取下载不同 pdf 的链接 这是可填写的表格 链接是使用 javascript 生成的 用户单击链接 生成 url 使用用户之前提交的数据 在表单中处理数据并完成字段 这是在表单内使用
  • 使用 word_number 值对 javascript 数组进行排序

    如何对数组进行排序 var arr new Array word 12 word 59 word 17 这样我得到 word 12 word 17 word 59 Thanks 您需要编写一个排序方法 您可以编写任何您喜欢的方法 该方法在
  • 为什么新行上的 return 语句不返回任何值? [复制]

    这个问题在这里已经有答案了 考虑以下情况 function func1 return hello world function func2 return hello world console log func1 console log f
  • 如何在 Jest 测试中模拟 StatusBarManager.getHeight?

    我正在使用 expo 34 并且反应本机用户界面库 https www npmjs com package react native ui lib来自 wix 并且在为我的组件设置笑话测试时遇到问题 问题看起来出现在link https g
  • contenteditable 在 safari 中不起作用,但在 chrome 中起作用

    我有一个奇怪的问题 这在 chrome 中按预期工作 但在 safari 中它只会发光 但不会对按键输入做出反应 这是触发文本版本的方法 var namebloc event currentTarget find column filena
  • Rspec:测试救援

    尝试测试我的函数是否能够正确地从异常中解救 更改参数 文件名 然后重试一次 我可以让函数接收第一次尝试 但无法让它接收第二次尝试 控制器 begin video get video video id rescue matches video
  • Angular UI.Bootstrap 单选按钮在 ng-repeat 中表现得很奇怪[重复]

    这个问题在这里已经有答案了 我在 Angular 的 ui bootstrap 中动态生成无线电模型的选项时遇到问题 我想我可以简单地对数组进行 ng repeat 使用 btn radio 属性的内容 如下所示 in the contro
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • 传单 - 导入 Geojson - Angular 6

    我尝试将 GeoJson 文件导入到 Angular 的应用程序 6 中的传单中 通过这个解决方案 我的 geojson 是在 leafletmap 中绘制的 但我有这个错误 我无法构建我的应用程序 有人知道一种解决方案吗 错误 TS234
  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • 如何在 Astro 中的组件之间共享状态?

    我相信我在代码中采用了错误的方法 如何在按钮单击中设置客户端首选项 该按钮单击用作全局 astro 组件中的道具 或者我应该怎么做 我知道这是可能的 因为 astro js 本身在他们的文档网站中这样做了 下面是我的尝试的解释 我目前正在开
  • 是否可以从 webpack 中的文件名中删除特殊字符?

    长话短说 我的资产文件名中不能包含某些字符 例如连字符 我没有运气通过解析 webpack 文档来弄清楚是否可以使用正则表达式或类似的东西重命名文件 这样我就可以从我无法控制源文件名的 3rd 方包中删除任何连字符 我的超级天真的例子是这样
  • 在 HTML5 画布上创建颜色选择器

    如何在 HTML5 画布上绘制颜色选择器 一个基本的例子是使用getImageData http jsfiddle net eGjak 60 http jsfiddle net eGjak 60 var ctx cv get 0 getCo
  • 更改 CSS 样式表的选择器属性

    以下是我们传统上如何更改重复元素的样式 将样式应用到每个元素 function changeStyle selector prop val var elems document querySelectorAll selector Array
  • JavaScript 比较中应使用哪个等于运算符(== 与 ===)?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我在用着JSLint http en wikipedia org wiki JSLint
  • 为什么对于整数键,“Map”操作比 JavaScript (v8) 中的“Object”慢得多?

    我很高兴使用Map对于在我的 JavaScript 代码库中随处访问的索引 但我刚刚偶然发现了这个基准 https stackoverflow com a 54385459 365104 https stackoverflow com a
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da

随机推荐

  • Core Data 整数使用哪些整数类型

    Core Data 有 int16 int32 和 int64 当以 NSNumber 形式使用这些时 我应该使用 NSInteger 或 int 以及它们各自的 NSNumber 方法 numberWithInt numberWithIn
  • 在定义的时间间隔后自动刷新 ASP.NET 网页?

    在我的一个网站中 我需要实现15分钟后网页自动刷新 为此 我编写了以下代码行 但我面临一个问题 在 15 分钟的持续时间之后 页面将刷新为新页面加载 在我的页面上 我使用了包含城市列表的组合框 有时我从索引 3 处的列表中选择一个项目 之后
  • C# 中的属性

    我知道 C 以及一般的 NET 非常注重属性 然而 尽管我已经使用 C 编程多年 但我还没有发现自己曾经使用过它们 有人可以让我开始使用它们 并解释在哪里最好使用它们吗 Thanks From Pro C 2008 和 NET 3 5 平台
  • .net检测分布式事务

    在我的应用程序中 我使用以下模式来调用数据库 do a transaction using TransactionScope transaction new TransactionScope TransactionScopeOption R
  • Git-svn 克隆错误:“致命:不是有效的对象名称 'refs/remotes/tags/Tag With Spaces'”

    我在用着git svn clone git 版本 1 9 4 msysgit 0 将 Subversion 存储库迁移到 Git Subversion 存储库的标签中包含空格 这会导致fatal Not a valid object nam
  • Athena 在不同账户的表之间查询

    我可以使用两个不同的 IAM 角色单独访问两个不同的 Athena 表 因为每个角色位于不同的账户中 有没有办法运行从两者中提取的单个查询 即 INNER JOIN 在引擎盖下 Athena 表数据位于 S3 存储桶中 Athena 支持跨
  • 为什么 EF 为简单查询生成子查询?

    有一个简单的 Linq to EF var query from p in db Posts where p BlogtId blogId select p 它会生成以下形式的 SQL SELECT Extent1 PostId Exten
  • 如何同步div的两个滚动条

    我有这个文件比较代码 http jsfiddle net CrN6X http jsfiddle net CrN6X 现在它满足了我的需要 一个只垂直滚动的大 div 两个仅水平滚动的较小潜水 这样我可以很容易地比较我的文件 但我有一个问题
  • 按内部数组的字段之一对多维数组进行排序

    如何按内部数组的字段之一对多维数组进行排序 在Java中 如何创建这样的多维数组 以及如何按 X 字段对其进行排序 有什么例子吗 Array 0 gt Array name gt Sony TV price gt 600 00 1 gt A
  • 获取两个条件(在不同数组上)为真的数组的索引

    我有两个 numpy 数组 a and b 我想选择所有索引a 1 and b 0 也就是说 如果我有以下数组 a 0 1 3 5 1 1 2 b 1 0 2 5 3 0 6 我想取回以下索引 1 5 我应该如何在 numpy 中执行此操作
  • 将“rand()”与“having”一起使用

    我有一个包含记录列表的表 每次迭代 必须从特定偏移量开始随机选择一组 每一行都有机会被选取 例如 新的或不经常选取的行会被选取更多 然而 某物不起作用 导致返回不满足使用别名的条件的行rand 我正在尝试使用以下查询 select id p
  • ag 网格服务器端分页“当网格位于绘制行中间时无法让网格绘制行”

    我有一个像这样的聚合组件 private gridOptions columnDefs this columnDefs frameworkComponents buttonRenderer ButtonRenderer pagination
  • 如何使用 gsub 将包含下划线的字符串部分转换为 Logstash 中的括号

    我想转换 例如 你好 1 再见 到 你好 1 再见 注意 1 即括号内仅包含数字 我从这样的事情开始 但不起作用 filter mutate gsub gt String D D Note that String here could be
  • 如果 edittext 包含该单词,如何为 Android 文本的一部分着色

    只要用户在编辑文本中输入 house 我就会尝试为单词 house 着色 这就是我所做的 if textA getText toString equals house String name String valueOf textA get
  • C++ 中 .inl 文件的含义

    在 inl 文件中进行声明有哪些优点 我什么时候需要使用相同的 inl文件从来都不是强制性的 对编译器没有特殊意义 这只是构建代码的一种方式 为可能阅读代码的人提供提示 I use inl文件分两种情况 用于内联函数的定义 用于函数模板的定
  • Symfony 控制器无法访问容器

    因此 我重新安装了 Symfony 3 尝试设置一些 API 路由 但我无法访问控制器内的容器 我的控制器从基本 Symfony 控制器扩展而来 它具有ContainerAwareTrait 但是当我尝试做时 this gt contain
  • Chrome 打包应用程序无法与 jquery 和 jquery mobile 配合使用

    使用 jQuery 1 10 2 和 jQuery Mobile 1 3 2 我尝试使用以下简单的 html 创建一个 chrome 打包应用程序 div div 有两个问题 首先 jQuery 将拦截加载 events js 的脚本标签并
  • Elastic beanstalk 上的 psycopg2 - 无法部署应用程序

    我正在将我的第一个应用程序 Flask 部署到 EB 但遇到了障碍 使用 PostgreSQL 需要我安装 psycopg2 但我不知道如何让它运行 我在这篇文章中看到 Amazon Elastic Beanstalk 上的 Psycopg
  • django-two-factor-auth 无法访问管理站点

    我正在将 django two factor auth 用于网络应用程序 我无法访问管理页面 我知道我输入了正确的凭据 当我输入不正确的凭据时 我会收到相应的错误消息 当我输入正确的凭据时 页面会使用以下 URL 重新加载 http loc
  • Rails:不是 ember,不是 JS 响应,而是介于两者之间的东西

    我正在开发一个标准的 Rails 应用程序 到目前为止我还没有使用任何 AJAX 只是使用了很好的 HTML 我的计划是迭代地添加 远程 链接和所有此类内容以及对 JS 响应的支持 因为我知道生成 JS 服务器端是非常非常邪恶的 但我发现它