zoukankan      html  css  js  c++  java
  • 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);
              }
        });
    });
  • 相关阅读:
    021.day21 反射 Class类 反射常用操作
    020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步
    019.day19 缓冲流 对象流 标准输入输出流
    018.day18 map集合如何实现排序 File类 IO流 字节流 字符流 编码
    017.day17 Map接口 克隆 treeSet集合排重缺陷
    016.day16 HashSet TreeSet 比较器Comparable Comparator
    015.day15
    014.day14
    013.day13
    线程
  • 原文地址:https://www.cnblogs.com/fe-huahai/p/5620833.html
Copyright © 2011-2022 走看看