玉石模板和AngularJS的实际使用

15

我正在使用Node.js和Express构建网站。如何使页面中的分区动态?Jade用于此吗?如果不是,应该如何做?AngularJS有什么用?请帮帮我,我在Google上搜索了很多,但使用它们的清晰度并不高。


1
Angular教程可能是一个更好的起点,因为您可能需要更具体的问题才能在这里得到答案。http://docs.angularjs.org/tutorial - ivarni
2个回答

37

Jade在服务器端创建用于浏览器的html。浏览器向web服务器发送请求,web服务器执行Jade,生成将发送到浏览器的html。这种服务器端内容生成在过去的20年中非常普遍,但是在构建丰富的互联网应用程序时存在一些缺点。这主要与性能和客户端状态跟踪有关。

AngularJS是一个类似于MVC/MVVM的客户端框架,用于构建所谓的单页面应用程序(SPA),它允许您在客户端完成完整的用户界面流、所有内容生成和状态跟踪。它甚至允许您构建离线应用程序。从开发者的角度来看,这更像是构建桌面应用程序,其中客户端知道用户界面的状态。从用户的角度来看,网站的响应速度更快,因为UI都是本地生成的。

注意:SPA并不意味着您的网站只能有一页。它是一个技术术语,浏览器下载一个页面(~/index.html),其中包含完整或部分Web应用程序。从技术上讲,用户从未离开此页面,但内容(页面)从此占位符页面动态交换进出。
向大多数SPA提供数据的常见方法是通过RESTful Web服务。AngularJS带有内置支持 REST。
一些开发人员将服务器端内容生成技术与AngularJS结合使用,但实际上没有真正的必要。

你为什么说“一些开发人员将服务器端内容生成技术与AngularJS相结合,但实际上并没有真正的必要”?我能想到的一个原因是SEO。我知道Google有计划爬取js页面,但我非常确定其他搜索引擎还没有实现这样的功能。另一个主要原因是速度和用户感知速度。立即在屏幕上显示出某些东西应该是最重要的。 - TYRONEMICHAEL
@TyroneMichael 这并不是非黑即白的问题;Angular在处理XML站点地图方面帮助不大,据我所知,没有爬虫可以处理SPA而不提供它们一些预渲染的HTML(http://www.yearofmoo.com/2012/11/angularjs-and-seo.html)。在某些情况下,为客户端提供预渲染视图可能更快,但总的来说,这只会给管道增加一些不必要的复杂性。如果您让Angular缓存优化的模板并从REST API中提供(JSON)数据,则其效果最佳。 - null
是的,我完全同意你的观点。这确实可能会使事情变得复杂。然而,如果你能够在Angular中使用jade,你可以使用Node提供客户端预渲染的HTML,并重用你的模板与Angular。这就是最初吸引我来到这里的原因。因此,你的服务器和客户端可以重用模板,这大大简化了事情。 - TYRONEMICHAEL
使用nodejs开发应用程序,是使用jade还是直接使用html和angular更好? - Rijo

0
Jade可用作服务器端和客户端的模板引擎。是的,它可以动态更新页面,您只需将Jade模板编译为JavaScript函数(使用“jade -c”或类似工具)即可实现。
是的,您可以与angular.js一起使用它,但我认为在项目中使用两个模板引擎并没有真正必要。建议您仅使用jade,除非您知道自己在做什么。

9
我使用玉石(Jade)创建 Angular.js 的局部视图(partials)。我之所以需要它,是因为 HTML 很丑陋而且过于冗长。 - Ilan Frumer

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