什么是使用客户端路由的正确方法?

我有一个关于AngularJS和Node.js的问题。
我有一个Web应用程序,并使用routeProvider的客户端路由来浏览我的Web应用程序的页面。
我通过RESTful API服务器端获取数据。 但所有的逻辑都是在AngularJS中完成的,因为在客户端路由中,我在Node.js中所做的全部是:

exports.partials = function(req, res, err) { var name = req.params.name; res.render(name); }; 

所以,我只使用Node.js来渲染模板布局和局部视图,但是所有的逻辑都在AngularJS中。 这是使用它的正确方法吗?

Angular.js是一个用于创buildSPA或单页应用程序的JavaScript框架。

它使用url中的哈希(#)或hashbang(#!)创build自己的导航系统来表示应用程序的不同状态或页面,但所有这些都发生在您的主页中。 浏览器不会更改为另一个页面,因为所有应用程序状态都将在页面刷新中丢失(HTTP是无状态协议)。

通常你需要3个部分来创build一个Angular应用程序,每个应用程序都有自己的路由系统。

  1. 您的angular度应用程序:所有的脚本和资源都加载在主页上。 路由系统由$ routeProvider和散列(#)提供。 例如: http:// mywebsite /#/ products或http:// mywebsite /#/ providers 。 这一切都是相对于你的主页。
  2. 你的模板:这是检索使用AJAX,可以路由,但是你想,例如: http://mywebsite/product.html或http://mywebsite/templates/product.html服务静态HTML文件,甚至http:// mywebsite / templates / products使用restful方法和服务器端路由机制。 这里没有一个通用的规则,因为基本上取决于所select的服务器技术和您自己的devise。
  3. 您的数据:通常是Resful API,为您的应用程序提供存储在数据库中的业务数据。 rest创造了一些基本的规则,你必须把所有的东西当作资源来对待,并用动词来操纵它。 例如:GET http://mywebsite.com/api/products或POST http://mywebsite.com/api/providers

这是Angular路由提供者的一个例子

 .config(function($routeProvider, $locationProvider) { $routeProvider .when('/Book/:bookId/ch/:chapterId', { templateUrl: 'chapter.html', controller: 'ChapterController' }); 

在这种情况下,angular将首先从http://mywebsite.com获取您的主页,并从http://mywebsite.com/chapter.html中的chapter.html文件的内容获取模板,并从您的任何configuration设置为你的$ http服务。 只要你以不冲突的方式设置你的路线,你就是安全的。 在你的情况下,你可以使用express.js为你的模板创build一个宁静的路由系统,或者直接从公共文件夹中以html的forms提供它们。