我正在构建一个(相当简单的)Web应用程序,最终将在桌面和移动设备上使用得非常相似.我在后端使用Rails,但实际的应用程序将构建为单页应用程序,因此Rails将简单地提供初始前端资产并充当REST后端.
我想将jQuery Mobile用于移动优化的用户体验,包括列表视图,触摸输入(例如,滑动以编辑项目)等.(请注意,我考虑过只使用UI框架,如Twitter Bootstrap或Foundation,但我会从jQuery Mobile支持的更深入的移动优化UX中受益.)
我还想使用Javascript MVC框架来更好地构建我的Javascript代码.我玩了一些框架,但没有深入使用它们,我仍然在争论最终的选择.
我的主要问题是哪些MVC(或MVVM)框架已被证明与jQuery Mobile结合使用.
除了移动之外,我强烈倾向于基于数据绑定的框架,如Knockout,Ember,Angular或Batman(实际上,基于我最初的实验,我非常喜欢Batman),当模型层发生变化时会自动更新UI .但是,我可以看到这与jQuery Mobile冲突,jQuery Mobile也对DOM进行了重大更改,也想拥有位置哈希等.
另一种方法是使用一种较低级别的框架,例如Backpack或Spine.我认为路由层仍然会导致冲突,但我至少可以使用模型,控制器和视图层(尤其是REST持久性).
或者也许有一种混合方法,其中基于数据绑定的MVC框架用于桌面版本中的所有内容,并且视图层在移动版本中以某种方式换成jQuery Mobile,仍然利用模型和控制器层?
运行基于数据绑定的MVC框架有什么好运吗?背包或脊椎运气好吗?你推荐使用jQuery Mobile的其中任何一个都能运行得好吗?还有其他建议吗?
我意识到这个问题有点开放,没有一个正确的答案,但我觉得这仍然是Stackoverflow的一个合适的问题.
javascript model-view-controller mobile frameworks jquery-mobile
(可能以下问题不是iPhone特有的,除了我们可能会使用框架或动态库的事实.)
我正在为客户构建一个专有的iPhone SDK,以便与他们的网络后端集成.由于我们不希望将源代码分发给客户,因此我们需要将SDK作为静态库进行分发.这一切都运行正常,我已经验证我可以将新iPhone应用程序链接到库并将其安装在设备上.
我担心的是SDK所依赖的第三方库.例如,我们目前正在使用HTTPRiot和Three20(确切的库可能会改变,但这不是重点).我担心如果客户也在他们的应用程序中使用任何这些库(甚至可能是不同的版本),这可能会导致冲突.
这有什么最好的做法?有没有办法从我们自己的静态库中排除依赖库的符号(在这种情况下,客户必须手动链接到我们的SDK以及HTTPRiot和Three20)?还是有其他一些既定的机制?
我试图在易用性和灵活性/兼容性之间取得平衡.理想情况下,客户只需将自己的SDK放入他们的项目并进行最少数量的构建设置更改,但如果它使事情更加健壮,那么让客户单独链接多个库可能更有意义.或者我想我们可以分发多个版本的SDK,包括和不包含第三方依赖,以涵盖这两种情况.
我希望我的问题有意义......主要来自Ruby和Java背景,我不需要长时间处理编译库(传统意义上的)......;)
一点背景:我正在构建一个带有补充服务器后端的iPhone应用程序(用Rails或可能的Sinatra编写,但可能与此讨论无关).部分功能涉及将图片从iPhone上传到服务器.这些最终存储在S3上,因此为了简化应用程序并节省带宽,我想将图片直接从iPhone上传到S3,跳过我的后端服务器.
使用S3 REST API(在这种情况下我可能会使用ASIHTTPRequest)意味着将AWS密钥和密钥存储在iPhone应用程序中,出于安全原因我不想这样做.
出于类似的原因,我不想让我的S3桶公开写入.
现在看起来S3也支持使用POST进行基于浏览器的上传.如果我理解正确,这可以通过在服务器上生成签名的策略文档来工作,然后允许客户端应用程序直接将文件POST到S3.看起来原则上这不仅适用于浏览器,也适用于iPhone应用程序.
但是,我很难搞清楚这个工作的确切方式(不是iPhone特定的部分,一般只有S3 POST上传).需要将哪些信息发送到服务器才能计算签名(例如,是否需要文件大小或任何其他文件信息)?我将更多地阅读官方文档,并开始尝试这个,但如果有人可以指向我一些教程或示例代码,那将非常感激.
我正在使用REST和OAuth与Rails应用程序交谈(来自iPhone应用程序,但这不应该是相关的).但是,我遇到了Rails的CSRF保护(via protects_from_forgery)的一些问题.
据我所知,CSRF保护仅适用于常规表单提交(即Content-Type = application/x-www-form-urlencoded),所以如果我提交JSON或XML数据,我会没事的.不幸的是,OAuth目前仅限于application/x-www-form-urlencoded请求.有一个规范草案将OAuth扩展到非形式urlencoded数据,但这对我现在没有帮助.
我看到它的方式,我有以下选择:
将数据作为JSON发送,知道它不会成为OAuth签名的一部分,因此会受到中间人攻击.显然不是一个有吸引力的解决方案.
创建UsersController#update_oauth内部委托给常规操作的特殊Rails操作(例如)(例如UsersController#update).然后从伪造保护(protects_from_forgery :only => [:update])中排除这些.这应该是可行的,并且对于一个或两个动作可能是可接受的,但显然这将是一个非常混乱的解决方案.
覆盖Rails CSRF保护以忽略OAuth请求.我没有试过这个,但似乎应该可以更改其中一个钩子(可能是verify_authenticity_token过滤器)来考虑OAuth请求是否成功.
有没有人遇到这个?有什么建议?或者我可能遗漏了一些基本的东西?
我正在使用Facebook Connect for iPhone并遵循官方说明.我使用以下代码显示登录对话框:
FBLoginDialog* dialog = [[[FBLoginDialog alloc] initWithSession:session] autorelease];
[dialog show];
Run Code Online (Sandbox Code Playgroud)
(请注意,当我使用FBLoginButton方法而不是直接显示对话框时,结果是相同的.)
该对话框按预期弹出,但正如您在下面的屏幕截图中看到的那样,它太大了,看起来像完整的Facebook主页.我可以平移对话框以显示登录按钮,但是一旦我登录它继续显示对话框内的常规Facebook页面.它永远不会调用我的session:didLogin回调.
有什么我做错了吗?
替代文字http://img.skitch.com/20091115-t24w7p5gpa6iqgehjdc4f1awfs.jpg
iphone ×3
amazon ×1
amazon-s3 ×1
csrf ×1
dependencies ×1
facebook ×1
frameworks ×1
javascript ×1
json ×1
linker ×1
mobile ×1
oauth ×1
post ×1
rest ×1
static ×1