我正在研究一个包含大约4种页面类型的简单Cordova应用程序,我正在尝试思考哪种方法可以更好地处理内部HTML模板。
我觉得当我可以更新更改的部分时,将所有内容附加到DOM的页面效率很低。但也许一个附加物是轻量级的,我不应该担心它。
答案 0 :(得分:2)
有很多方法可以做到。在浏览器的负载方面。这很难说。根据你的问题,很难知道这些页面中有什么,你在显示什么,是实时数据,静态HTML等。
当您第一次绘制应用程序时,如果您来自构建多个页面网站的旧类,那么关于您的应用程序/页面如何与所有那些被塞入其中的页面一起运行可能会有点关注,以及所有这些数据加上代码。
答案非常好。如果在现代浏览器中正确完成,例如Ipads,应用程序将运行接近本机性能。
您拥有的选项是
将所有页面映射到一个HTML文档中。使用css display:none隐藏每个页面内容,使用css动画将其翻转到视图中,淡入淡出或仅显示:block。
使用javascript路由库将网址映射到处理每个网页的代码块,这样可以更轻松地映射您的应用,并且意味着按钮只能链接到您的网页,就像真正的网站一样。见http://projects.jga.me/routie/
将所有页面模板构建到一个页面可能会使代码变得困难,因为页面变得庞大,考虑将每个页面的内部内容分解为单独的文件,然后您可以为每个页面持有者提供一个URL并使用一个小的xhr请求即时加载页面,一旦加载,你可以将它缓存到内存甚至本地存储中,具体取决于你关闭它时是将它删除还是隐藏它。
根据我的经验,你可以将大量的节点或节点放在一个页面中并且速度下降非常小,请记住,如果你使用像jquery这样的东西并且做了很多$(“。page> .page1&gt ;.项目li“)你的应用程序会很慢。
<强>提示强>
答案 1 :(得分:1)
我知道这已经发布了一段时间,但为了用户的缘故,我将添加我的答案。
我完全赞同MartinWebb,但我的回答将会对他的选择结果有所了解。我目前正在开展一个类似的项目。请注意,这个答案特别适用于cordova(以前称为phonegap)。我的应用程序有大约5页,有+ -20个不同的组件(输入&#39; s,div&#39; s,h1&#39; s,p&#39; s等)。这是我尝试的和每个的结果:
display:none
和visible:hidden
是我的下一个选择。我使用javascript的dom来显示某些div。 结果:如果您没有计划在不久之后切换许多div,这是有效的,例如。一个简单的菜单。很快就发现这不起作用。这也不能消除我对dom的需求。请记住,document.getElementById('menu').style.display = "none";
仍然是dom的一部分。对我来说,这个解决方案很差。 var menu= document.createElement('div');
是语言的一部分是有原因的。这让我想到了我的最后一个选择。.innerHTML
或.style.display = "block";
,但确实如此。 结果:这是迄今为止所有解决方案中响应最快的。我并不是说所有的网页都应该用dom附加编码,但正如我之前所说的,对于几页(<6)的cordova应用程序,只有几个组件,javascript dom附加方法会最好的。编码需要更长的时间,但您将获得控制和效率。我建议用html编写应用程序的主干,然后使用javascript的dom进行填充和控制。
祝你好运。
答案 2 :(得分:0)
使用<div>
的第一个选项display:none;
可以稍微提高效率,但是通过使用某些东西将JavaScript和模板一起编译为单个文件,您可以充分利用这两个方面比如browserify或require.js。