一网友写的AngularJs按需加载代码,但未验证,放着备用。
 
application.config(
               function($routeProvider) {
                 $routeProvider.
                    when('/:module/:view', {
                        templateUrl: function(params) {
                            var core = angular.element(document).injector().get('core');
                            core.openView(params.module, params.view);
                            return 'app/views/{0}/{1}.jsp'.format(params.module, params.view);
                        }
                   }).
                   otherwise({
                     redirectTo: '/home/landing'
                   });
               });
'use strict';
// declare an application core module
var coreModule = angular.module('core', ['network']);

coreModule.factory('core',
    function (http, $location) {
        return {
            openView: function (module, view) {
                if (!module) {
                    throw new Error('Please provide module.');
                }
                
                if (!view) {
                    throw new Error('Please provide view.');
                }
                
                http.getController(module, view);
                if($location.path() !== '/{0}/{1}'.format(module, view)) {
                    $location.path('/{0}/{1}'.format(module, view)).replace();
                }
            }
        };
    }
);
'use strict';
// declare a network service module
var httpModule = angular.module('network', []);

httpModule.factory('http',
    function ($http, $q) {
        return {
            get: function (url) {
                if (!url) {
                    throw new Error('Please provide request url.');
                }
                
                var defer = $q.defer();
                
                $http.get(url).then(
                    function(response) {
                        defer.resolve(response.data);
                    },
                    function(error) {
                        defer.reject(error);
                    });
                return defer.promise;
            },
            post: function (url, paramObj) {
                if (!url) {
                    throw new Error('Please provide request url.');
                }
                
                var defer = $q.defer();
                
                paramObj = paramObj || {};
                $http.post(url, paramObj).then(
                    function(response) {
                        defer.resolve(response.data);
                    },
                    function(error) {
                        defer.reject(error);
                    });
                return defer.promise;
            },
            getController: function (module, controller) {
                if (!module) {
                    throw new Error('Please provide module.');
                }
                
                if (!controller) {
                    throw new Error('Please provide controller.');
                }
                
                var webRoot = window.location.href.substr(0, window.location.href.lastIndexOf('/home.action'));
                var url = '{0}/{1}/{2}/{3}.js'.format(webRoot, 'app/controllers', module, controller);
                var existed = false;
                $.each($('head').find('script'), function(index, value) {
                 if(value.src === url) {
                 existed = true;
                 }
                });
                
                if(!existed) {
                    var script = document.createElement('script');
                    script.type = 'text/javascript';
                    script.src = url;
                    script.charset = 'utf-8';
                    document.head.appendChild(script);
                }
            }
        };
    }
);

angularJs按需加载代码(未验证)的更多相关文章

  1. React 按需加载 - 代码分隔

    代码分隔 我们现在大多数React项目都是以Webpack 或者 Browserify等将一堆的jsx文件组织一起,并且由一个类似index.js的入口文件串联起来的单页面web页面. 例如: // ...

  2. angularJS 按需加载

    之前做应用的时候都会在首页就把全站的js预先加载进来... 怎么实现按需加载? 首先在$routeProvider里面加resolve属性,angular-route提供的resolve功能,也就是路 ...

  3. .NET中的按需加载/延迟加载 Lazy<T>

    业务场景: 在项目开发中,经常会遇到特定的对象使用的加载问题,有的实例对象我们创建之后并非需要使用,只是根据业务场景来调用,所以可能会导致很多无效的实例加载 延迟初始化出现于.NET 4.0,主要用于 ...

  4. 前端性能优化之按需加载(React-router+webpack)

    一.什么是按需加载 和异步加载script的目的一样(异步加载script的方法),按需加载/代码切割也可以解决首屏加载的速度. 什么时候需要按需加载 如果是大文件,使用按需加载就十分合适.比如一个近 ...

  5. 深入浅出的webpack4构建工具---webpack+vue+router 按需加载页面(十五)

    1. 为什么需要按需加载? 对于vue单页应用来讲,我们常见的做法把页面上所有的代码都打包到一个bundle.js文件内,但是随着项目越来越大,文件越来越多的情况下,那么bundle.js文件也会越来 ...

  6. AngularJs 解决浏览器在初始化代码未加载完毕时 而出现闪烁的问题

    1. ng-cloak; 因浏览器会先加载dom元素 而针对于{{pression}} 由于angularjs 还没加载完,会在页面出现闪烁 2.ng-bind; 用ng-bind代替{{expres ...

  7. requirejs按需加载angularjs文件

    之前分享了一篇用ocLazyLoad实现按需加载angular js文件的博客.本来当时想会使用一种方法就行了.可最近刚好有时间,在网上查找了一下requirejs实现angular js文件按需加载 ...

  8. AngularJS中的按需加载ocLazyLoad

    欢迎大家讨论与指导 : ) 初学者,有不足的地方希望各位指出 一.前言 ocLoayLoad是AngularJS的模块按需加载器.一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题.但是当 ...

  9. AngularJS中的按需加载ocLazyLoad插件应用;

    一.前言 ocLoayLoad是AngularJS的模块按需加载器.一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题.但是当我们的网站渐渐庞大起来,这样子的加载策略让网速初始化速度变得越 ...

随机推荐

  1. PHP CURL HTTPS内存泄露问题

    还原场景:通过一直运行脚本,向微信用户发送模板消息,发现运行了一段时间,内存就爆了,然后立马看了一下代码,发现跟其他的消息逻辑一模一样,唯一不一样的就是请求了微信的接口:然后继续开始找问题,发现当时使 ...

  2. 谨慎使用 FileInfo.Exists 实例方法,而是使用 File.Exists 静态方法替代

    如果你在代码中使用了 FileInfo.Exists 实例方法来判断一个文件是否存在,也许会发现此方法可能错误地判断来一个文件是否真的存在.这是一个坑. 本文将介绍坑的原因,并提供填坑的办法. 本文内 ...

  3. Assert随笔

    ☆ Assert.notNull(haha, "未找到需要导入的计划1");//haha必须不能为null,if为null则抛出message的异常: Assert.hasText ...

  4. vi文字处理器

    http://blog.csdn.net/wangloveall/article/details/22649331 摘要:vi是类UNIX命令行接口的标准文字处理软件,也是进行shell脚本程序编写与 ...

  5. asp.net 导出excel的一种方法

    项目用到的一种导出excel 的方法予以记录:(具体的业务类可更具情况替换使用) protected void Export(string filename, List<ComponentCon ...

  6. silverlight 进行本地串口调用的一种可行的解决方法 之silverlight端代码

    接上边的文章. 在javascript暴露操作activex 串口接收之后,就是silverlight端进行串口数据的显示,我们的显示方式比较简单,只是为了演示,我们每隔1秒进行数据的获取并显示, 为 ...

  7. c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010512579/article/details/24011761 在封装通用 SQLSERVER ...

  8. pyotherside 试用

    pyotherside 试用 这是啥?用python写qt 步骤:安装qt: http://www.qt.io/download-open-source/#section-2安装python3:下载源 ...

  9. 利用用python构建 个性化签名

    from tkinter import * from tkinter import messagebox,ttk from PIL import ImageTk import requests imp ...

  10. JUC线程池之 线程池拒绝策略

    拒绝策略介绍 线程池的拒绝策略,是指当任务添加到线程池中被拒绝,而采取的处理措施. 当任务添加到线程池中之所以被拒绝,可能是由于:第一,线程池异常关闭.第二,任务数量超过线程池的最大限制. 线程池共包 ...