单页面应用程序是指整个Web应用程序只使用一个页面吗?

3

我正在学习单页应用程序,阅读完文档本身之后。

我想知道单页应用程序模式是否只是在使用knockout和外部模板的Web应用程序中的一个页面(例如:HTML页面)?

我的意思是(我正在使用MVC):

-mywebsite
 + some js files
 + some css files
 + index.html
 + controllers
 + models

我希望有人能够更详细地解释一下这个模式。谢谢。


请参考以下链接:https://dev59.com/aXA75IYBdhLWcg3w49UR?lq=1 - Sridhar R
Project Silk - 这可能会有所帮助 - http://msdn.microsoft.com/zh-cn/library/hh396380.aspx - aked
3个回答

5
是的,通常您有一个作为“外壳”的单个HTML页面,其中包含加载到该“外壳”中的信息视图。 JavaScript文件充当中介来调用获取此数据,解析数据并将模板应用于数据。模型、控制器等允许采用模块化方法来构建JavaScript结构,而不是像意大利面条一样的JavaScript代码。 CSS的作用与往常一样。

在我看来,这正是大约10年前纯AJAX应用程序的目的,其中单个页面将加载,然后仅对服务器或服务进行请求以加载数据,而不是返回服务器以呈现(或重新呈现)页面(像WebForms一样)。

更新:

Single Page Application: KnockoutJS template 包含KnockoutJS,但还有其他选项,如 Know a library other than Knockout? 所述,它枚举了每个模板的功能,以便轻松查看。


浏览器JS性能在10年前还不够支持Angular或KO ;) - Anders
@Anders - 是的,10年前JavaScript在结构上的性能并不好,但我更多地是在谈概念上。我想我们将来10或20年回顾过去时,由于浏览器中的技术XYZ,我们也会感到疑惑;这就是它的本质。 - Karl Anderson
谢谢大家!你们都是对的!我想在这个问题上问一个小事。有谁能给我展示一下所有能帮助我们创建像Knockout和AngularJS这样的SPA的JavaScript库吗(我正在学习它们两个)?我想学习更多的库!谢谢大家。 - vietvoquoc
@vietvoquoc - 请查看答案中的UPDATE:,以获取您可以使用的其他库和模板列表。 - Karl Anderson

3
实际上,您可以将应用程序分成一组HTML文件和JavaScript文件。单页应用程序应该在不刷新浏览器的情况下完成所有应用程序工作。您可以在需要时惰性加载视图(HTML)和JavaScript。我认为您可以从模板或示例开始以了解其思路。 您可以从John Papa的这里获取更多详细信息。
以下是支持SPA的一些框架: http://durandaljs.com/ http://www.asp.net/single-page-application/overview/introduction/knockoutjs-template

这是否意味着SPA就是使用AJAX而已? - karlihnos

2

单页应用程序通常提供一个外壳,形式为单个页面,调用ajax调用以提供功能。关键的想法是,外壳不会作为完整页面刷新,而是通过针对外壳子部分的ajax调用来刷新内容。

这种模型的一个好处是用户不必处理刷新整个页面和丢失客户端状态的破坏性用户体验。

Knockout可以作为设计的一部分使用,但它并不直接是该模式的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接