繁体   English   中英

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

[英]What is the proper way of using client-side routing?

我对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是一个用于创建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使用宁静的方法和服务器端路由机制。 这里没有通用规则,因为基本上取决于所选的服务器技术和您自己的设计。
  3. 您的数据:通常是一个Resful API,用于为您的应用程序提供存储在数据库中的业务数据。 休息创建了一些基本规则,您必须遵循这些规则,例如将一切视为资源并使用动词对其进行操作。 例如:获取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文件的内容中获取模板,并从您的任何配置中获取数据设置为您的$ http服务。 只要您以不互相冲突的方式设置路线,便可以安全。 在您的情况下,您可以使用express.js为您的模板创建一个平稳的路由系统,或者直接从公共文件夹以html形式提供它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM