- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们使用 jQuery Mobile 构建了一个网络应用程序。它现在有九页,变得非常笨重。 jQuery Mobile 将所有“页面”捆绑到同一个页面中以模拟 native 应用程序的响应能力。
我们考虑将每个页面实现为一个单独的 iFrame。第一页包含每个 iFrame/页面并预加载每个。通过在视口(viewport)中显示适当的页面,页面转换就像 JQM 一样发生。数据通过 iFrame 消息传递在母版页和子页之间传递。我们认为这可能是有利的,因为:
(1) 它不需要额外的框架;
(2) 网络应用程序不会超过 15 个页面/iFrame;和
(3) Web 应用程序将通过 native 应用程序容器(即 PhoneGap)而非移动浏览器访问。
我们也在探索框架。来 self 们对 SO 的研究在其他地方,似乎 Backbone 和 Spine 是构建大型 JavaScript 项目的两个很好的选择。
不太清楚他们管理 JQM 项目的能力如何。
我们正在寻找三样东西:
1) 构建大型 JQM 项目(MVC 理想情况或最坏情况,对整体文件的任何改进)存在哪些选项和框架?
2) 如果您将 Backbone、Spine 或任何其他 JS 框架与 JQM 一起使用,请分享您喜欢/不喜欢的内容。
3) 除了意味着构建专有功能之外,您是否发现我们的 iFrame 架构有任何明显的问题?
最佳答案
使用 iFrame 似乎不是最佳选择,尤其是当存在许多不同的轻量级和简单框架时。
JqueryMobile 有它自己的路由器。我不喜欢它 - 使用散列标签需要具有所需散列的页面在 DOM 中。当然,动态加载页面是可能的,但无论如何你都需要创建新页面,将它们添加到页面容器等。这种处理页面的方式不适合我,而且还会使 DOM 过载。
还可以使用 JQM 使用 Jquery 模板 - 它们允许存储页面或不同的 HTML 代码,稍后可以使用传递的数据对其进行解析。这些模板和解析机制在我看来非常简单易用。但是如果需要解析复杂数量的数据,它们就不适合了。也不支持部分(如在 ASP.NET MVC 中)。这意味着,您不能将页眉和页脚仅存储在一个文件中并将它们作为每个页面的部分加载。您必须为每个页面复制它。
这个框架的其余功能很棒。许多控件、主题等。毫无疑问,它似乎是 UI 创建的领导者。我唯一不喜欢的是 - JQM 页面转换。
现在介绍 Backbone。这是一个使用 MVC 模式创建应用程序的强大而简单的框架。实际上,没有允许创建真正的 MVC 的 JS 框架。但基本情况是正确的。模型、 View 和 Controller (路由器)。 GitHub 上新路由的简单创建、良好的文档和大量示例。使用 View 和模型的强大机制 - 他们的站点将显示所有功能。
我提议使用 Backbone + JQM。但在这种情况下,您必须禁用其中一个路由器以避免这些框架之间发生冲突。只有一个应该留下。
关于分页。无需将所有可用页面存储在 DOM 中。您只能创建一个包含内容元素的 JQM 页面并动态更新它。将 html 存储在模板中,从服务中获取数据,解析模板并更新内容元素。Backbone 有一个依赖 - 下划线。乍一看,我不想用 Backbone 因为这个。但是 underscore 是一个强大的框架,有很多有用的特性。其中之一是 - 模板化。强大的解析机制——支持循环、js函数、在模板中创建变量等。也不支持partials——但你不需要它,因为不需要一直创建新页面。
当我的应用程序只有几页时 - 我加载了我所有的 js 文件(框架、助手、服务调用者、 View 、模型等)并将下划线模板存储在我的 html 页面上。但是支持这样的代码是一种恐怖。 HTML 页面变得巨大。RequireJS 框架可以解决这个问题。它不仅可以加载 JS 文件,还可以加载文本模板(使用文本插件)。本例中的所有代码都是模块化的。它有很多示例,因此可以毫无问题地查看它是如何工作的。顺便说一句,Backbone 的最新版本正式不支持 AMD。但是仍然可以使用 RequireJS 加载它。
还要考虑滚动内容。我不会写太多。看看 iScroll 框架就知道了。
所以,PhoneGap + Backbone + JQM + RequireJS = 成功:)
关于javascript - 构建大型 jQuery Mobile Web 应用程序 : use iFrames as pages? Backbone、Spine、Underscore 和其他框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094905/
所以我知道,如果我将 iFrame 包含到不在同一域中的页面,我将无法通过浏览器策略访问该 iframe 的 DOM,但是 iframe 中的页面可以执行任何类型的父文档访问吗? 具体来说,我必须考虑
我有 3 个嵌套的 iframe,我想访问第三个 iframe 中的元素(链接)。 var iframe = document.getElementById('aswift_2'); var inne
Chrome 有最简单的方法,只需从下拉列表中选择一个框架即可。 Firefox 提供了 cd(frame)功能不太好用,但只要您愿意发现哪个框架是哪个框架就可以完成工作。 但是我们如何在 Inter
我们公司正在考虑允许第三方网站使用我们的在线结账系统。 一位客户表示,他们希望能够使用灯箱样式的弹出窗口来显示结帐。他们希望在网站的每个页面上都可以使用它,因此大多是不安全的页面。我们的结帐系统和客户
当 iframe 中加载的页面来自另一个域时,我们如何从 iframe 中加载的文档访问父文档? 我收到权限被拒绝错误。 最佳答案 如果您可以控制这两个文档,那么您可以轻松地使用 easyXDM (
使用 SOAP 调用我得到一个 URL 并在 iframe 中显示。那个 URL 内容是一个表单,用户需要填写所有数据并提交它。当我调用 SOAP 函数时,也给出了一个返回链接,其中一个重定向到我的站
我正在尝试开发一个小型 Web 应用程序,其中包含一个使用来自另一个域的 iframe 的 Web 应用程序。我正在尝试在本地计算机上对此进行测试,为此我需要模仿 iframe 来自另一个域(虽然它实
我有一个网页 指向另一个网站。我不希望这阻止页面其余部分的加载。有没有办法异步加载它? 最佳答案 使用 jQuery,可以实现以下效果: $(window).load(function() {
我搜索过高低,无法找到解决方案。在我看来,iframe API仅适用于较旧样式的网址,而不适用于较新的海关网址。 我的意思是,如果某人的YouTube网址为www.youtube.com/user/T
我想在我的网站上显示youtube视频。 iframe是可能的,我只需要像这样将其放在我的网页上。 一切都很好,除了我超过99%的客户来自伊朗,而且YouTube在伊朗被政府封锁。因此,直接从you
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
所以我有一个简单的页面,当用户单击链接时,iframe 将打开。我正在尝试使用 http://www.google.com/support/analytics/bin/answer.py?hl=en&
假设情况:我有一个名为“miniatureBoltsInCarburetors.com”的不起眼的小网站,该网站提供有关将化油器固定在一起的微型 bolt 的内容以及一些一般相关的汽车信息。我的网站还
IE 6.0 向我显示消息“此页面包含安全和非安全项目”,因为我的页面上有 iframe(针对组合框错误)。我尝试指向 src 中的一些不同的内容,但如果不放入空白的 html 页面,我似乎无法摆脱此
我有一个带有一个 iframe 和一个按钮的网页。 在页面加载事件中, if (!Page.IsPostBack) { string sDocUrl = //some doucmen url Ifra
我有一个带有一些 IFrame 的页面。这些 IFrame 位于同一域中。我想在打开模态窗口时从页面中删除 iframe 内容,以减少模态窗口中的延迟。 然后,当我关闭模态窗口时,我希望将 IFram
我正在尝试访问一个框架内的控件,该框架位于另一个框架内的框架内。 最后(最深的)框架仅用于登录 - 我设法做到了。 问题是登录后我基本上需要回到上框点击一个按钮。出于某种原因,我不断收到错误消息: N
我有下一个元素结构: .. actual markup with scripts here 使用纯 javascript,我已经摆脱
我们使用 Worldpay 作为我们的支付提供商,我们将 PayPal 作为 worldpay 的一部分实现,这意味着我们只与 Worldpay 集成,他们处理 PayPal 集成。 虽然这会带来很多
我有一个客户,由于特定原因,需要在 HTTP 页面上放置一个指向 HTTPS 页面的 IFRAME。 HTTP 页面托管在与 HTTPS 页面不同的域和服务器上,但都属于同一客户端。 撇开为什么不应该
我是一名优秀的程序员,十分优秀!