AngularJS和ExpressJS之间的基本区别和相似之处是什么?

43

我对Angular js与Express js的目的有点困惑。据我理解,我们使用Node.js来服务Angular js,但并不完全局限/强制使用Node.js来提供服务。另一方面,Express js似乎完成了类似于更传统的MVC框架的某些事情。

那么,Angular Js是一种非特定于服务器的MVC框架吗?这是否限制了Angular js后端服务器的能力或易用性?


7
谷歌把我带到这里,我个人认为这是一个相当不错的问题。感谢@Prussian提出它。 - Roy Lee
3
有一些类似这样的问题,并非严格意义上的编程问题,但它们提供了关于技术背景的重要信息。是否应该为这类问题设立一个分类,而不仅仅将其标记为“过于宽泛”?它并不是过于宽泛的。虽然它只是一个非编程问题,但由于有许多答案和谷歌流量,它肯定具有价值,应该在SO上出现。 - Elvn
2
谢谢大家。我认为我们经常有一些过于热心的管理员。这与特定的错误无关,但许多人可能会认为这是一个编码问题。在我的情况下,我试图在开始项目之前阐明一些基本概念。编码和开发涉及许多步骤。并非所有问题都是同样“具体”的,应该有一个可接受的范围。我们甚至可以说有些“标签”太宽泛了。无论做出什么决定,都应该承认所有这些因素。 - BluePython
3个回答

42

Express

Express是一个Web框架,灵感来自于Ruby项目“Sinatra”。它是Node中众多的Web框架之一。

AngularJS

AngularJS是一个MVC框架,定义了许多概念以正确组织您的Web应用程序。您的应用程序使用可以相互依赖的模块进行定义。它通过将指令附加到页面、使用新属性或标签和表达式来增强HTML,以直接在HTML中定义非常强大的模板。它还通过控制器封装应用程序的行为,这些控制器由依赖项注入实例化。

AngularJS可帮助您轻松地构造和测试JavaScript代码。

回答您看到的评论。

那么你会说他们是面向不同目的的客户端和服务器端实现,因此彼此互斥,还是你能想象一个场景,在同一个应用程序中使用Angular Js、Expression js和Node.js?

是的,它们是面向不同目的的,但它们都是基于MVC的框架。是的,我们可以在其中使用Angular路由器、视图和控制器作为前端,并使用Express作为您与MongoDB或任何其他数据库通信的基本模型。但是再次提醒,这取决于您的选择,因为您可以在不考虑AnagularJs的情况下实现所有功能。

添加更多内容

AngularJS是一个美丽而易于测试的客户端框架,结合了大量酷炫的东西,如MVC、依赖注入、数据绑定等等。如果要充分利用AngularJS的功能,则可以考虑使用RESTful方法编写服务器端代码。您可以利用它们的资源工厂,创建您的服务器端RESTful API的抽象,并进行诸如获取、发布、放置、删除等服务器端调用。

您可以使用AngularJS来定义客户端行为(视图和控制器),然后编写REST服务,让AngularJS客户端可以与之交互。客户端运行在Web浏览器[AngularJS]上,并对服务器进行异步通信。然后服务器[ExpressJS]检索并存储客户端的数据。

保持客户端和服务器之间的明确区分,使应用程序更易于维护和测试。此外,这完全取决于您要构建什么以及如何最好地利用它们两者。


那么您不建议将两者结合使用吗?为什么有人想要使用Angular JS进行服务器端通信,而他们可以通过Express实现相同的功能呢?此外,似乎Express更好,因为并非所有代码都像在Angular JS中一样被公开。如果使用Angular JS,是否有任何优点? - BluePython

11

AngularJS是一个运行在客户端,也就是浏览器上的JavaScript框架;它有一个路由器,但仅用于客户端(实际上,默认使用散列作为路由)。

另一方面,Node.js作为服务而非浏览器运行JavaScript,可以运行像Express这样的Web框架来处理HTTP等,使其成为一个不错的Web服务器。


你认为客户端和服务器端实现是出于不同的目的,因此是互相排斥的,还是你能想象一种情况,在同一个应用程序中使用Angular Js、Expression js和Node.js? - BluePython
2
实际上,我通常使用Angular开发客户端,使用Node和Socket.io开发服务器端。但是,我也使用Node来简化我的工作流程,包括资产管理、缩小文件大小、测试等等。看看Grunt.js、Yeoman等工具,它们基于JavaScript提供了全新的可能性。 - coma
2
NodeJs不是一个Web服务器。NodeJs只是为V8编写的库,用于执行事件驱动的I/O操作。您可以在NodeJs之上编写Web服务器。Node的设计类似于并受到Ruby的Event Machine或Python的Twisted等系统的影响。 - Thalaivar

8

相似点是两个框架都是 JavaScript 框架,这意味着如果你同时使用它们,可以用 JavaScript 编写服务器端和客户端逻辑。

区别在于 AngularJS 是客户端框架,而 Express 是服务器端框架。

Express 可以与任何客户端框架一起使用,Angular 也可以与任何服务器端框架一起使用。


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