首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R.js优化器排除角度库

R.js优化器排除角度库
EN

Stack Overflow用户
提问于 2014-07-31 20:10:27
回答 1查看 543关注 0票数 1

我在使用r.js优化器优化一个angular项目时遇到了问题。

我正在尝试使用grunt-requirejs进行优化,直到我尝试将angular排除在构建之外,它才能完美地工作。然后我在angular路由中得到一个错误,说angular是未定义的。我想这样做,这样我就可以从cdn加载angular,但在应用程序中包含angular-route。

为什么angular-route不等到angular被加载?

我知道angular会加载,但有谁知道为什么angular路由会在那之前运行,以及如何修复它?

应用程序

代码语言:javascript
复制
define(['angular', ...], function(angular){
...
});

public/js/requirejs config.js:

代码语言:javascript
复制
require.config({
  shim: {
    angular: {
      exports: 'angular'
    },
    'angular-route': [
      'angular'
    ]
  },
  paths: {
    angular: '../../bower_components/angular/angular',
    'angular-route': '../../bower_components/angular-route/angular-route'
  }
});

require(['app']);

Gruntfile文件:

代码语言:javascript
复制
module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        requirejs: {
            compile: {
                options: {
                    baseUrl: "public/js",
                    name: "app",
                    mainConfigFile: "public/js/requirejs-config.js",
                    out: "public/js/combined.js",
                    paths: {
                        angular: "empty:" //without this it works fine
                    },
                    optimize: "none"
                }
            }
        }
    });


    grunt.loadNpmTasks('grunt-bower-requirejs');
    grunt.registerTask('default', ['requirejs']);

};
EN

回答 1

Stack Overflow用户

发布于 2014-07-31 20:30:27

我自己解决了这个问题。

我需要使用wrapShim并使用dep而不是数组来指定依赖项。

应用程序

代码语言:javascript
复制
define(['angular', ...], function(angular){
...
});

public/js/requirejs config.js:

代码语言:javascript
复制
require.config({
  shim: {
    angular: {
      exports: 'angular'
    },
    'angular-route': {
      deps: ['angular']
    }
  },
  paths: {
    angular: '../../bower_components/angular/angular',
    'angular-route': '../../bower_components/angular-route/angular-route'
  }
});

require(['app']);

Gruntfile文件:

代码语言:javascript
复制
module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        requirejs: {
            compile: {
                options: {
                    baseUrl: "public/js",
                    name: "app",
                    mainConfigFile: "public/js/requirejs-config.js",
                    out: "public/js/combined.js",
                    paths: {
                        angular: "empty:" //without this it works fine
                    },
                    wrapShim: true,
                    optimize: "none"
                }
            }
        }
    });


    grunt.loadNpmTasks('grunt-bower-requirejs');
    grunt.registerTask('default', ['requirejs']);

};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25058534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档