Angularjs 如何巧妙地包含所有必要的文件?

Angularjs 如何巧妙地包含所有必要的文件?,angularjs,karma-runner,Angularjs,Karma Runner,现在,我的Karma配置包含以下文件: files: [ 'vendor/vendor.js', 'vendor/angular-mocks/angular-mocks.js', 'src/components/security/index.js', 'src/components/security/authentication.js', 'src/components/security/login-cont

现在,我的Karma配置包含以下文件:

    files: [
        'vendor/vendor.js',
        'vendor/angular-mocks/angular-mocks.js',
        'src/components/security/index.js',
        'src/components/security/authentication.js',
        'src/components/security/login-controller.js',
        'src/components/filters/index.js',
        'src/components/filters/toDate.js',
        'src/components/services/index.js',
        'src/components/services/alert.js',
        'src/menu/index.js',
        'src/menu/menu-controller.js',
        'src/user/index.js',
        'src/manage/index.js',
        'src/manage/user/manage-user-controller.js',
        'src/manage/channel/manage-channel-controller.js',
        'src/stream/index.js',
        'src/stream/stream-controller.js',
        'src/messages/index.js',
        'src/messages/messages-controller.js',
        'src/app.js',
        'src/**/*.spec.js'
    ],
文件
vendor/vendor.js
是通过使用my bower配置连接所有供应商文件的Gulp任务自动创建的。因为顺序非常重要,所以很难包含我自己的Javascript代码。文件夹中的
index.js
文件定义了模块(及其路由),因此必须在加载单个文件之前加载。而且
app.js
总是最后一个


所以我的问题是,我如何更聪明地做到这一点,例如,使用一个glob,它首先包含所有
index.js
文件,然后包含所有其他文件?

这正是RequireJS的用途。您可以在部署的代码中使用它,但也可以在测试中使用它


如果您这样做,您的“karma.conf.js”就会变得更短,波动性更小。您的RequireJS配置文件指定了一些依赖关系映射。每个测试规范最终都会指定它需要的依赖项,要么在“定义”调用中以“声明性”方式,要么有时通过“要求”函数手动指定(有时需要后者来处理循环引用问题)。

Hm我想问这个问题给了我需要的想法:)这是有效的:

    files: [
        'vendor/vendor.js',
        'vendor/angular-mocks/angular-mocks.js',
        'src/*/**/index.js',
        'src/*/**/*.js',
        'src/app.js',
        'src/**/*.spec.js'
    ],
在index.js之后添加*.js会产生如下调试消息:

src/manage/index.js ignored. Already in the list.

好极了

你不应该在标题中加上技术名称。标签可以做到这一点。是的,我想这是真的,但老实说,我认为采用RequireJS是相当痛苦的。也许我会因为这些测试内容而重新访问它,但我不想。