2

我的 angular2 (angular-cli) 应用程序中将有 400 多个模型用于 js-data。

我的项目结构是这样的:

- src/
  - app/
    - services/
    - pipes/
    - ui/
    - data/
      - store.ts
      - models/
        - model1.ts
        - model2.ts
        - ...
        - model400.ts

在商店中,我需要导入,并将映射添加到商店。模型文件实际上只是 js-data 3 的映射器配置。

目前,它们看起来像这样:

// src/app/data/models/model1.ts
export default {
  schema: {
    name: 'model1',
    properties: { 
      id: { type: 'integer' }
    }
  },
  relations: {}
}

我的商店目前看起来像这样:

// src/app/data/store.ts
import {
  DataStore,
  Mapper,
  Record,
  Schema,
  utils
} from 'js-data'
import {HttpAdapter} from 'js-data-http'

declare var require: any

export const adapter = new HttpAdapter({
  // Our API sits behind the /api path
  basePath: '/api'
});

export const store = new DataStore({});
store.registerAdapter('http', adapter, { default: true });

import { model1Config} from './models/model1';
import { model2Config } from './models/model2';
import { model3Config } from './models/model3';
// at this point, I give up, cause this is more tedious 
// than cutting grass with a finger nail clipper
store.defineMapper('model1', model1Config);
store.defineMapper('model2', model2Config);
store.defineMapper('model3', model3Config);

如果无论如何要遍历模型文件夹中的每个文件,那就太好了。

angular-cli 应该最终将所有 ts/js 编译成一个 js 文件,所以我不需要担心任何无法在客户端运行的东西。(所以,我有西兰花,以及捆绑了其他任何构建工具,我只是不知道在这种情况下它们中的任何一个是否对我有用)

4

1 回答 1

2

您可以使用可用于导入的索引文件。例如,在您的models文件夹中,一个索引文件只为您导出每个模型,如下所示:

// ...../models/index.ts

export * from './models/model1';
export * from './models/model2';

然后在您的其他文件中,您可以像这样导入它们:

import {model1Config, model2Config, model3Config } from "path/to/models/index";
...

您必须在某处定义导出。使用充当“导出集合”的文件至少可以为您节省很多代码行(如果您使用的是良好的 IDE,还可以节省大量时间)。用你的数百个模型设置索引仍然很乏味。也许一个带有 gulp 的小脚本会有所帮助。

于 2016-05-24T17:57:46.550 回答