好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

angular与require构建项目

      

1.angular模块化

angular可以把代码分成若干模块,然后一个模块可以依赖在模块,使用子模块的功能。被依赖的模块需要在本模块之前被加载。如下所示,app模块依赖Module1和Module2模块。

var app = angular.module("app",[Module1,Module2]);

2.require

能够使应用异步按需加载模块,管理模块的依赖性。子模块加载完成后,本模块再加载,并且子模块的加载是异步的。

3.angular与require构建项目

使用angular开发单页面应用时,需要预先加载应用所需的所有子模块。

使用angular与require共同构建项目,可以实现模块加载,提高网页响应速度。把子功能分别写到子angular模块中,  当某个html页需要依赖某个或某几个模块时,使用require异步加载需要的子模块,子模块加载后,与网页对应的js文件加载,并手动启动anugular。

以下面的代码为例,一个展示用户列表的html页,在文件下面指定加载user.js文件,html与user.js依赖Paging.js和name_Filter.js文件。paging.js和name_filter.js文件加载完后再加载user.js,最后启动angular。paging.js包含一个分页自定义指令,name_filter.js包含有名字过滤器。

 <  html  > 
      <  head  > 
      </  head  > 
      <  body  > 
         <  div   ng-controller  ="UserCtr"  > 
              <  ul  > 
                     <  li   ng-repeat  ="item in users"  >  
                       name:  <  span   ng-bind  ="id | nameFilter"  ></  span  >  
                       age:  <  span   ng-bind  ="item.age"  ></  span  > 
                     </  li  > 
                </  ul  > 
                <  paging   num  ="10"  > 
                </  paging  > 
         </  div  > 
      </  body  > 
      <  script   src  ="/user.js"  ></  script  > 
 </  html  > 

 /*  
*user.js
  */  
require([ '/name_filter','/paging'], function  (){
      var  app = angular.module("User",['NameFilter','ngPage' ]);
    app.controller( 'UserCtrl',[$scope, function  ($scope){
          $scope.users  = [{id:1,age:20},{id:2,age:25},{id:3,age:35 }]
          ....
    }]
});

  //  启动angular 
angular.bootstrap(document,[“User”]); 

 /*  
*paging.js
  */  
define([ "angular"],  function  (angular){
        var  page = angular.module("ngPage" ,[]);

      page.directive( "paging", function  (){
             return  {
               restrict: "AE" ,
               scope:{
                        load: "&" ,
                         num: "@" ,
                         ...
                     },
               templateUrl: /paging.html,
               link: function  (scope,element,attrs){
                   ...
               }
            }
     });
}) 

 /*  
*name_filter.js
  */  
define([ "angular"], function  (angular){
      var  app= angular.module("NameFilter" ,[]);
    app.filter( "getName", function  (){
            var  users={1:Lily,2:Lucy,3 .Rose}        
                          
            return   function  (id){
               return   users(id);
          }
    });
}); 

 

查看更多关于angular与require构建项目的详细内容...

  阅读:35次