如何在Rails应用程序中设计/组织/构建移动Web的开发?

时间:2013-07-29 20:04:54

标签: ruby-on-rails web-services mobile-website web-architecture

我会尽力将此作为一个可回答的问题,而不是讨论的开始。

我的问题的实质是,根据您的经验,最好将您的网站的移动网络版本作为单独的应用程序开发,该应用程序将您的网站用作API或在同一个Rails应用程序中开发提供您的网站

我目前正在计划我们将如何实施它,而且正如我所看到的那样,每个人都有上行/下行。

移动网络的单独申请

  • 上升空间
    • 效果:现有网站的开销减少=性能更佳
    • 占地面积更小:更易于整理,更清洁的应用程序可以在
    • 上工作/开发
    • 解耦:会迫使我们为桌面/移动设备构建服务
  • 缺点
    • 子域名:必须使用m.thredup.com才能将移动流量路由到单独的应用
    • 会话管理:必须处理多个应用/域上的身份验证
    • 本地开发更难:维持本地开发的另一项服务
    • 分支机构管理:新代码需要针对网络应用+移动应用的单独分支

移动网络的相同应用

  • 上升空间
    • 网址架构:能够为桌面+移动设备使用相同的网址(更易于共享)
    • 会话管理:能够使用现有的用户会话
    • 更快的实施:更短的项目时间表,因为所有后端逻辑已经到位
  • 下行
    • 代码膨胀:我们已经很大的Rails Web应用程序的更多代码

如果我们要在现有应用中开发移动网络,我们将采用这种方法来呈现移动视图 - http://scottwb.com/blog/2012/02/23/a-better-way-to-add-mobile-pages-to-a-rails-site/

非常感谢任何见解。

2 个答案:

答案 0 :(得分:2)

如果您设计网站以便为任何设备使用相同的代码库,那么您将有9次中有9次会变得更好,以便它能够智能地适应您的设备,从而呈现最重要/最有用的内容/基于样式表或渲染/非渲染的运行时选择的每个设备的功能。请记住,与6年前不同,您今天对移动设备的主要关注点不是缺乏处理能力,而是不同的屏幕尺寸和不同的输入。

通常,移动用户不希望看到您网站的残缺或剥离版本。他们希望看到您网站的 可用 版本。可用的含义各不相同,但它通常意味着最常用的功能非常容易访问,而更隐蔽的选项被隐藏得更低或者可能没有那么优化。 可用可能意味着您为它们提供与桌面上完全相同的功能,但可以在移动设备上更好地呈现。或者你删除了在移动设备上没有意义的东西。但是,如果你设置它,你将不得不为自己做更多的事情,以便你必须维护两个代码流,或者一个早期分支的代码流,或者一个根本不同的应用程序。这是一个更多的测试,更多的编码,更多的破损可能性。

我们遵循这种方法,它适用于我们非常小的开发团队 - 我们已成功使用它,以便我们可以使用相同的代码库为不同的客户运行两种不同的实现 - 一种非常复杂的桌面 - 第一个用户界面以及一个非常精简的移动优先应用程序:

  • 假设所有设备都将访问相同的网址
  • 假设90%的设备优化将使用CSS媒体查询完成,7%将使用jQuery黑客完成,3%将在早期使用浏览器检测完成
  • 构建您的应用程序,以便通过代码(ApplicationController中的逻辑?Rack Midleware?)轻松启用/禁用各个UI组件或模块。我们通过将我们各自的“小部件”放在部分中来实现这一点,这些部分包含用于启用小部件的检查(在Rails.config中或作为ApplicationController中的实例变量),以便我们可以关闭是否返回相应的HTML到浏览器
  • 使用CSS媒体查询不仅可以设置字体和宽度的样式,还可以重新排列菜单/功能和其他UI项目,以便它们能够处理您需要的不同外形。

通常,如果您要为移动设备构建已编译的应用程序并且将使用设备的UI在UI上进行繁重的工作,那么API-for-mobile方法将对您最有用。库而不是服务器上生成的HTML。再说一次,如果您选择使用Backbone.js或Angular.js等方法来处理前端显示,那么使用仅限API的方法可能也是一个很好的架构供您遵循。但是接下来你还要走出Rails了。

答案 1 :(得分:0)

在我看来,一条基本信息是"为什么?"你需要考虑你的预算和时间表以及工作的截止日期。

提供类似于Matthew James Taylor的精美布局的液体布局,它将根据可用的屏幕大小调整大小我能看到需要移动特定模板的唯一原因是为了提供特定的css样式来制作你认为看起来更像是一个移动应用程序。

我不认为表现是一个问题。如果您从现有网站获得性能开销,并且您正在为移动设备设计这些性能问题,那么为什么不为非移动设备设计这些问题。即设计一个具有液体布局的移动站点,并使其适用于桌面/平板电脑查看。这可能是重新设计整个网站以提高性能的好机会。

根据预算和时间尺度,我发现你确实有两种选择

1)设计一套全新的模板,同时使用液体布局设计性能问题,以便随着时间的推移将现有布局切换到新布局

2)重新设计现有的模板和功能,以建立一个适合移动设备的网站。

无论哪种方式,您的台式机和平板电脑用户都会获得好处,但是您可以在多大程度上实现这一目标,这取决于您的截止日期和预算,选项1是短期内更便宜,更快捷的方式,选项2是更便宜,更快捷的方式在长期。我的方式是,通过不为移动用户和桌面/平板电脑用户提供相同的模板,您会对某些人产生不利影响,从而为所有用户提供最佳的体验。

这确实是您项目经理的决定。

更新 - 基于评论

在这种情况下,我会去开发一个单独的移动应用程序。我甚至会考虑使用替代技术来实时流式传输更新的数据。 Rails Live Streaming and Node.js之间有一个很好的比较。

无论您选择是否引入新技术,通过为移动用户提供单独的应用程序,您将提供终极的移动体验,并能够完全专注于此。

我没有看到不同的域名在SEO方面是一个太大的问题。您应该能够利用主站点的现有可见性,并使用单独的移动域名,您可以提高您的搜索引擎优化排名,而无需进行额外的促销。

我猜你有点已经得出了自己的最佳前进方式的结论,我能给你的最好的建议就是告诉你给自己多一点思考时间并让你选择的解决方案坚定起来而且我确定它是否是正确的它只会感觉到#34;对你而言。

没有人比你更了解自己的业务,如果没有参与项目和业务,说出最终最佳选择是不可能的。