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

时间:2015-06-03 16:57:04

标签: javascript angularjs node.js express

我对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中。 这是使用它的正确方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

  1. 您的角度应用程序:所有脚本和资源都加载到主页中。路由系统由$ routeProvider和hash(#)提供。例如:http://mywebsite/#/productshttp://mywebsite/#/providers。所有这些都与您的主页相关。
  2. 您的模板:这是使用ajax检索的,可以根据需要进行路由,例如:http://mywebsite/product.htmlhttp://mywebsite/templates/product.html提供静态html文件,甚至http://mywebsite/templates/products使用restful方法和服务器侧路由机制。这里没有一般规则,因为基本上取决于所选择的服务器技术和您自己的设计。
  3. 您的数据:通常是一个Resful API,为您的应用程序提供存储在数据库中的业务数据。 Rest创建了一些必须遵循的基本规则,例如将所有内容视为资源并使用动词对其进行操作。例如:GET http://mywebsite.com/api/products或POST http://mywebsite.com/api/providers
  4. 这是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文件内容中的模板以及您设置为$ http的任何配置中的数据服务。只要您以不相互冲突的方式设置路线,您就是安全的。在您的情况下,您可以使用express.js为您的模板创建一个宁静的路由系统,或者直接从公共文件夹中将它们作为html提供。