美文网首页WEB全栈技术我爱编程
AngularJS 调试技巧——版本差异到底有多大?

AngularJS 调试技巧——版本差异到底有多大?

作者: 全栈开发之道 | 来源:发表于2018-03-15 22:15 被阅读55次

    背景

    有读者反馈,按照书《 全栈开发之道:MongoDB+Express+AngularJS+Node.js 》第9章调试程序,出现诡异的报错,如下:

    image.png

    看到这种错误,晕倒,直接在AngularJS模块内部报错,很抽象,一时无从下手。
    先这段代码,如下:

    <!DOCTYPE html>
    <html ng-app='app'>
    <head>
        <title> Hello World in AngularJS </title>
        <script src="http://apps.bdimg.com/libs/angular.js/1.2.6/angular.min.js"></script>
        <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-route.min.js"></script>
    </head>
    <body>
    <div ng-view></div>
    <script type="text/ng-template" id="/todos.html">
        <ul>
            <li ng-repeat="todo in todos">
                <input type="checkbox" ng-model="todo.completed">
                <a href="#/{{$index}}">{{  todo.name  }}</a>
            </li>
        </ul>
    </script>
    <script type="text/javascript">
            var app = angular.module('app',['ngRoute']);
            app.factory('Todos',function(){
                return [
                 { name:'Master HTML/CSS/Javascript', completed:true},
                 { name:'Learn AngularJS', completed:false},
                 { name:'Build NodeJS backend', completed:false},
                 { name:'Get started with ExpressJS', completed:false},
                 { name:'Setup MongoDB database', completed:false},
                 { name:'Be awesome', completed:false},
                ];
            });
    
            app.config(['$routeProvider',function($routeProvider){
                $routeProvider
                   .when('/',{
                    templateUrl: '/todos.html',
                    controller: 'TodoController'
                   });
            }]);
    
            app.controller('TodoController' , ['$scope', 'Todos',function($scope,Todos)
            {
                $scope.todos = Todos;
                }]);
        </script>
    </body>
    </body>
    </html>
    

    单看代码,似乎看不出什么问题。 这种诡异的报错,有可能是版本的差异引起的。

     <script src="http://apps.bdimg.com/libs/angular.js/1.2.6/angular.min.js"></script>
        <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular-route.min.js"></script>
    

    仔细查看,Angular 和 Angular-route的载入,两个版本为啥不一致呢? 这一点会引起怀疑。

    书中,也讲到了 1.2.6 与 1.4.6 的差异。

    归根结底,是以下代码引起的:

     var app = angular.module('app',['ngRoute']);
    

    Angular 1.2.6 版本不支持以上module的声明方法。

    引发的思考

    在产品开发时,一定要用Angular稳定的版本,应该说,AngularJS最近发布的 1.8 版本是最稳定的。

    那些追求 Angular 5.X 版本的开发者,是不是该刹刹车了呢!

    相关文章

      网友评论

        本文标题:AngularJS 调试技巧——版本差异到底有多大?

        本文链接:https://www.haomeiwen.com/subject/ksekqftx.html