AngularJS路线有什么意义?

时间:2012-12-17 05:54:31

标签: angularjs web-deployment-project

我正在创建一个网站,我选择在AJ中进行。 我有两个文件夹:
网关=>一些php文件从mysql数据库中检索数据并将数据作为json回显 Views =>部分html文件基本上是每个页面的模板。例如用户,物品等

然后我有一个index.js文件,它处理请求进程和路由:

angular.module('Index',['addon'],function($routeProvider,$locationProvider){
    $locationProvider.html5Mode(true).hashPrefix("!");
    $routeProvider.otherwise({
        templateUrl: '/views/index.html',
        controller: "index"
    }).when("/items/",{
        templateUrl: '/views/items.html',
        controller: "items"
    })
}).
controller("index",function($scope,$http){

    $scope.users = [];
    $http.get("gateways/list.php").
    success(function(d){
        console.log(d);
        if(angular.isArray(d)){
            $scope.users = d;
        }
    });

}).
controller("items",function($scope,$http,$routeParams){
    $scope.items = [];
    $http.get("gateways/single.php").
    success(function(d){
        if(angular.isArray(d)){
            $scope.items = d;
        }
    });

}).

除了优雅之外,AJ中所有这些路线提供商的重点是什么? 他们不是因为请求的数量而放慢了网站的速度? 我可以直接在模板文件中从网关文件中编写php代码吗? 我是以错误的方式做的吗?

3 个答案:

答案 0 :(得分:7)

您可能忽略了使用AngularJS等框架的重点。它们主要用于单页应用程序和ajax密集型。让我开始,请求的数量并没有真正减慢应用程序。还记得Gmail之前没有Ajax的情况吗?它比当前的实施更快吗?

现在,当您构建单个页面应用程序时,应用程序将req发送到服务器,服务器以JSON或XML响应。在像AngularJS或其他任何其他框架中,服务器发送JSON响应,我们使用客户端模板或DOM来呈现它们。这节省了服务器端的大量资源,因为服务器不必解析数组并呈现模板。因此,如果服务器必须呈现具有100行的表,则发送到浏览器的带宽可能是20KB,而只有JSON可能是5KB,而带有1KB的字符串或DOM模板可以进行渲染。所以,你实际上是让访问者的浏览器做了很多工作。这都是关于计算/计算的。考虑一个统计表,其中有列和一些计算值将在数据网格中显示。使用客户端框架,您的服务器将只响应JSON,浏览器(使用JavaScript)将解析,计算并在模板中呈现它。

至于使用routerProvider的问题,书签和使用浏览器导航按钮至关重要。就像传统网址有视图一样,客户端应用程序中的URL有一个应该是可收藏的视图,应该支持导航。

答案 1 :(得分:1)

AngularJS,作为一个JS框架,在客户端中运行它的神奇之处 - 这意味着它是您的计算机处理模板文件,应用所需的任何逻辑。 PHP无法做到这一点 - 它是一种严格的服务器端语言。当您通过AJAX调用请求PHP“文件”时,您实际上并没有获得php文件,而是获得服务器生成的已处理输出(在这种情况下,它将映射到对象的用户列表)。如果您只是在模板中包含PHP逻辑,那么在最好的情况下,angularJS读取的HTML将包含您需要显示的列表,但不会有实际的列表模型(该角度可以过滤/更改/重新排序/在角度范围内随意保存/删除。

但是你是对的,在你正在处理的水平上,它似乎只会使流程变得复杂和变慢(具有简化工作的微小优势)。但是当事情变得更密集时,模块化(以及将控制器(即用户控制器)与可以应用于(查看,列表,编辑,详细信息等)的不同视图分离是保持应用程序结构化的原因。

答案 2 :(得分:1)

我认为他们不会以任何方式放慢网站的速度。如果你担心的是检索每个页面的html和json,那就不是它的工作方式。

html模板仅由angular-js检索,编译和缓存一次。你可以使用一些调试工具来看到这一点,比如firebug。

因此,当用户切换到另一个页面时,您只向服务器发出json请求,这通常比渲染html服务器端并检索完整的html更快,更轻量级。 (无论如何,如果对你更好的话,没有什么能阻止你这样做)