1

对于这个非常尴尬的问题标题,我深表歉意,如果有人能想到更好的方式来表达这个问题,我会立即改变它。

我正在使用 Angular 和 RequireJS 构建一个应用程序,并尝试优化性能、依赖项和延迟加载,我希望构建一个像这样的文件结构:

/app
----/regisitration
--------_registration.module.js
--------registration.ctrl.js
--------registration.svc.js
--------registration.directive.js
----/courses
--------_courses.module.js
--------courses.directive.js
--------courses.controller.js
--------courses.service.js
--------/course
------------course.controller.js
----/admin
--------_admin.module.js
--------admin.controller.js

在我设置路由的地方,我希望能够让访问任何/registration/视图的用户加载整个目录(以及任何子目录)中所有其他文件_registration.module.js的串联,这样我的团队就不会t 由于需要包含多个可能重复的依赖项以及一次性将整个站点“部分”提供给用户而陷入困境。希望上面的示例说明了为什么我不想只预先加载所有文件,因为大多数用户永远不会点击该站点的部分。我试图找出用 grunt 实现这一目标的最有效方法,但到目前为止,我正在非常手动地使用如下代码:.js/registraionadmin

grunt.initConfig({
  concat: {
    app: {
      files: [
        {
            src: ['..app/registration/*.js', '!..app/registraion/*.module.js'], 
            dest: '..app/registration/_registration.module.js'
        },
        {
            src: ['..app/courses/*.js', '!..app/courses/*.module.js'], 
            dest: '..app/courses/_courses.module.js'
        },
        {
            src: ['..app/admin/*.js', '!..app/admin/*.module.js'], 
            dest: '..app/admin/_admin.module.js'
        }
      ],
    }
  },
});

我认为必须有一种更有效、更少手动的方式来完成我想要实现的目标。有没有人有什么建议?

4

1 回答 1

0

请记住,您仍然可以在 Gruntfile 中执行 JavaScript。

grunt.initConfig({
  concat: {
    app: {
      files: grunt.file.expand({ cwd: 'app', filter: 'isDirectory' }, '*')
      .map(function(ngModule) {
        return { 
          src: ['app/' + ngModule + '/*.js', '!app/' + ngModule + '/*.module.js'],
          dest: 'app/' + ngModule + '/_' + ngModule + '.module.js'
        };
      })
    }
  },
});

有了这个,您应该能够创建新模块,而无需记住为它们更新配置条目。

于 2014-06-12T06:52:00.163 回答