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

标签 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 来渲染模板布局和部分 View ,但所有逻辑都在 AngularJS 中。 这是正确的使用方法吗?

最佳答案

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

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

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

  1. 您的 Angular 应用程序:所有脚本和资源都加载在主页中。路由系统由 $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创建了一些您必须遵循的基本规则,例如将所有事物视为资源并使用动词对其进行操作。例如:获取http://mywebsite.com/api/products或发帖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为您的模板创建一个安静的路由系统,或者直接从公共(public)文件夹作为html提供它们。

关于javascript - 使用客户端路由的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626252/

相关文章:

javascript - 检查身份验证的安全方法(NodeJS/Express)

javascript - 理解 jQuery 的 .eq()

php - 通过客户端和服务器的安全命令

javascript - 如何使用 Jasmine 在单元测试中调用 ngDialog.open

Javascript 类 getter setter 在单元测试下显示 Uncovered Line

node.js - Microsoft Bot Framework - 在多个对话框中使用变量 (node.js)

javascript - Jquery 找不到带有 '+' 的类

javascript - jQuery every 不适用于某些类或一般类?

javascript - AngularJS 到 pdfMake 类型错误 : Cannot read property 'ownerDocument' of null at html2canvas

angularjs - Angular 不更新绑定(bind)属性