MEAN堆栈:角度路由与快速路由[关闭]

Posted

技术标签:

【中文标题】MEAN堆栈:角度路由与快速路由[关闭]【英文标题】:MEAN stack: angular routing vs express routing [closed] 【发布时间】:2015-04-12 03:44:40 【问题描述】:

我已经开始在我的快速生成项目中使用 Angular,我很喜欢它。最近我在我的一个测试项目中实现了角度路由,我想知道在纯快速/节点路由上使用角度路由有什么优点和缺点(例如,这种方式是否存在技术问题,或者可能是 SEO,或者完全不必要的)。

我的设置仅供参考:我已经快速渲染主索引模板以及将所有请求(全部)路由到主索引模板,然后我使用角度从主索引模板中路由到部分模板

【问题讨论】:

如果您使用 Angular,“最好”(在我看来)方式是允许 Angular 做它最擅长的事情并自行处理路由,并且让 express 简单地为所有服务404 到 index.html @KevinB 你的意思是让快递处理路由? 不,我的意思是让 Angular 做路由。 express 只是提供 index.html 和一个 api 来访问数据。 无论哪种方式 express 都会做 一些 路由,只是通常你让 angular 完成大部分工作。 不,正如您所指出的,您总是需要使用 express 进行 一些 路由,为 index.html 和静态资产(例如 js/css/)提供服务图片。在我上面的 cmets 中,我不认为这是“路由”,这只是您为 Angular 应用程序提供服务而必须做的事情。这很可能被提供静态文件夹的 nginx 所取代。 【参考方案1】:

使用平均堆栈(mongo、express、angular),您将在两端进行路由。

Express 将为您的静态 index.html 和 css/js/images 以及您的 api 提供服务,并且 angular 将与 api 交互以从 mongo 获取数据。

使用 express 的路由主要用于 API,而 angular 的路由将用于处理应用程序的前端。 Express 不会返回除 index.html 和您为 angular 编写的任何模板部分以外的任何 html,但是即使使用 gulp/grunt 之类的构建工具将所有模板直接编译到您的 js 文件中,也可以消除这种情况.


当然可以 100% 使用一侧或另一侧,但是这是不切实际的,因为您最终会低效地使用一侧或另一侧。例如,如果您在每个单独的页面上使用 express 和使用 angular 完成所有路由,您将忽略所有单页应用程序功能和 angularjs 路由,而其唯一目的是构建可能可以做得更多的页面有效地使用 express 和 jam(或任何其他模板引擎)。实际上不可能朝另一个方向前进并使用 angular 完成所有路由,因为 angular 需要一个 api 来从中获取数据,除非您包含所有数据在 html 中预先内联,我相信你会同意这是一个坏主意。 (此时它也消除了 mongo ..)

【讨论】:

【参考方案2】:

他们正在解决两个不同的问题。 Angular 路由(ui-router)是客户端 - 加载正确的 ui-views。快速路由是服务器端的 - 您公开的 REST API。

【讨论】:

所以我要问的是,让 angular 完成大部分路由与 express 做所有的主要优势是什么? 嗯..这个答案最有意义 express 不能直接从客户端做路由,Angular 路由和点击一个链接的功能是一样的,如果你想直接从前端改变视图,它使用 js ,但如果你想从服务器提供内容,它会发送一个请求来表达。

以上是关于MEAN堆栈:角度路由与快速路由[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 MEAN 堆栈保护路由和模板?

Express.js 或 Angular 用于在 MEAN 应用程序中处理路由?

Heroku中来自外部文件的角度路由

RESTful Crud MEAN.js 路由

Nodejs之MEAN栈开发---- 路由与控制器

在快速服务器上成功调用 api 后重定向具有角度路由的页面