zoukankan      html  css  js  c++  java
  • 基于requirejs和oclazyloadjs的实际按需加载的angular项目

    项目github地址:https://github.com/xingkongwuyu/angular-require-oclazyload

    index.html
    <!DOCTYPE html >
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div ui-view ></div>
    <script src="js/lib/require.js" data-main="./js/main"></script>
    </body>
    </html>

    首先angular项目中加载必须模块;通过requirejs来进行设置进口:data-main="main"

    加载了main.js

    main.js 对js的地址进行了配置简化 主要代码

    // 初始化myModule模块
    require(['app'], function () {
        angular.bootstrap(document, ['qiyepeixun'])
    
    })

    注意这里的app指的是require.config中配置的app其指向的是app.js文件
    require.config({
        //baseUrl: 'js',
        paths: {
            'app': 'app',
            'angular': 'lib/angular.min',
            'router': 'lib/angular-ui-router',
            'oclazyload':'lib/oclazyload',
            'cookies': 'lib/angular-cookies',
            'jquery':'lib/jquery-3.1.0.min',
    
        },
        shim: {
            'angular': {
                exports: 'angular'
            },
            'jquery':{
                exports:'jquery'
            },
            'router': {
                deps: ['angular']
            },
            'app': {
                deps: ['router']
            }
        }
    })
    // 初始化myModule模块
    require(['app'], function () {
        angular.bootstrap(document, ['qiyepeixun'])
    
    })

    module.controller的controller定义方式无法满足App启动之后的controller动态定义

    $controllerProviderregister方法来动态定义controller

    相对应的这段代码,    动态加载控制器,指令,服务,过滤

            app.register = {
                //得到$controllerProvider的引用
                controller : $controllerProvider.register,
                //同样的,这里也可以保存directive/filter/service的引用
                directive: $compileProvider.directive,
                filter: $filterProvider.register,
                service: $provide.service
            };

    接下来就是route的设置了,

    根据resolve中的

    app.js中设置了路由

    $ocLazyLoadProvider.config({
                loadedModules: ['qiyepeixun'],
                jsLoader: require
    })
    这个表示设置oclazyload的参数,模块,依赖于require加载,模块的名称
    然后就是路由的设置了,这里有设置controller:为相应resolve中文件中的controller

    $urlRouterProvider.otherwise("/index");
    $stateProvider
    .state('index', {
    url: "/index",
    templateUrl: "view/login/login.html",
    controller:"appCtrl",
    resolve: {
    deps:["$ocLazyLoad",function($ocLazyLoad){
    return $ocLazyLoad.load('js/controller/login/appCtrl.js');
    }]
    }
    });
    define(['angular','router', 'oclazyload'],function() {
        var app = angular.module("qiyepeixun", ['ui.router', 'oc.lazyLoad']);
        //定义全局变量
        app.config(function($controllerProvider,$compileProvider,$filterProvider,$provide){
            app.register = {
                //得到$controllerProvider的引用
                controller : $controllerProvider.register,
                //同样的,这里也可以保存directive/filter/service的引用
                directive: $compileProvider.directive,
                filter: $filterProvider.register,
                service: $provide.service
            };
        })
        app.config(['$ocLazyLoadProvider','$stateProvider','$urlRouterProvider',function($ocLazyLoadProvider,$stateProvider, $urlRouterProvider){
            $ocLazyLoadProvider.config({
                loadedModules: ['qiyepeixun'],
                jsLoader: require
            })
    
            $urlRouterProvider.otherwise("/index");
            $stateProvider
                .state('index', {
                    url: "/index",
                    templateUrl: "view/login/login.html",
                    controller:"appCtrl",
                    resolve: {
                        deps:["$ocLazyLoad",function($ocLazyLoad){
                            return $ocLazyLoad.load('js/controller/login/appCtrl.js');
                        }]
                    }
                });
        }]);
        return app
    })
  • 相关阅读:
    Java中继承的详细用法
    Java中继承的详细用法
    树莓派中安装QT
    qt在windows下的udp通信(最简单)
    qt+opencv对两幅图片进行融合
    浅谈QT打印功能实现
    qt中采用宽带speex进行网络语音通话实验程序
    实时预览的在线 Markdown 编辑器
    LigerUI一个前台框架增、删、改asp.net代码
    .NET MVC通过反射获取数据修
  • 原文地址:https://www.cnblogs.com/heyinwangchuan/p/6591423.html
Copyright © 2011-2022 走看看