zoukankan      html  css  js  c++  java
  • angular中按需加载js

      按需加载估计是大家在使用angular之后最想解决的问题吧,因为angular的依赖机制,导致了必须在第一次加载的时候就加载所有js文件,小项目还好,稍大一点的项目如果有上百个js文件,不管是从效率还是写法都相当不好。所以这次我使用了$ocLazyLoad来实现懒加载。文档看这里

    1.引入js文件,并注入$ocLazyLoad服务

    <script src="lib/ocLazyLoad.min.js"></script>

    2.对$ocLazyLoad进行基础配置

    angular.module('starter')
    .config(["$provide", "$compileProvider", "$controllerProvider", "$filterProvider",
        function ($provide, $compileProvider, $controllerProvider, $filterProvider) {
            app.controller = $controllerProvider.register;
            app.directive = $compileProvider.directive;
            app.filter = $filterProvider.register;
            app.factory = $provide.factory;
            app.service = $provide.service;
            app.constant = $provide.constant;
        }
    ])

    3.根据模块配置路由

    $stateProvider
        .state('login', {
            url: '/login',    
            templateUrl: 'template/login/login.html',
            controller:'loginCtrl',
            resolve:{
                deps:["$ocLazyLoad",function($ocLazyLoad){
                    return $ocLazyLoad.load("template/login/login.js");
                }]
            }
        })

       关于第三方js文件ocLazyLoad就无能为力了,它是用来懒加载angular module的,而不是第三方的js库。所以如果考虑到这些可以使用requireJS来加载,之所以在这个项目中没有用过是因为ocLazyLoad比起来更小一些,压缩过后只有15k大小,而且requireJS移植性不好且侵入性高(其实我也不知道什么意思,哈哈哈)。还有一点主要的是这个一次配置不用处处引用,挺契合angular模块化的特点的。至于requireJS的使用,只有下次用过了再来补充吧。

    -----------------------------2016-12-15--------------------------------------

      上一次使用ocLazyLoad是在ionic项目中,这次在angularWEB项目中使用,搭建的时候出了angular is not defined的问题,怎么找也解决不掉问题,结果最后改变了一下ui-router和oclazyload的引入位置,问题解决~记住一定要先引入ui-router再引入oclazyload啊

  • 相关阅读:
    985的方格难题
    POJ 3264 区间最大最小值Sparse_Table算法
    oracle中to_date详细用法示例(oracle日期格式转换)
    PLSQL基础知识-图片
    oracle-查询-时间条件查询
    oracle基础函数--decode
    PLSQL基础学习-文字
    python3 MD5
    CentOS7关闭防火墙方法
    CentOS 7下源码安装MySQL 5.6
  • 原文地址:https://www.cnblogs.com/zmc-change/p/6072847.html
Copyright © 2011-2022 走看看