Как мне импортировать более 400 модулей и выполнять их итерацию в моем проекте angular-cli?
Я собираюсь иметь более 400 моделей для использования с js-данными в моем приложении angular2 (angular-cli).
структура моего проекта такова:
- src/
- app/
- services/
- pipes/
- ui/
- data/
- store.ts
- models/
- model1.ts
- model2.ts
- ...
- model400.ts
В магазине мне нужно импортировать и добавить сопоставление в магазин. Файлы модели на самом деле являются просто конфигами mapper для 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, поэтому мне не нужно беспокоиться о том, что не может работать на стороне клиента. (так что у меня есть брокколи, и какие бы другие инструменты сборки не были с этим связаны, я просто не знаю, пригодится ли мне какой-либо из них для этой ситуации)
1 ответ
Вы можете использовать индексный файл, который вы можете использовать для импорта. например в вашем models
Папка индексный файл, который просто экспортирует каждую модель для вас, как это:
// ...../models/index.ts
export * from './models/model1';
export * from './models/model2';
затем в другие ваши файлы вы можете импортировать их так:
import {model1Config, model2Config, model3Config } from "path/to/models/index";
...
Вы должны определить экспорт где-то. Использование файла, который функционирует как "экспортная коллекция", экономит вам как минимум много строк кода (и много времени, если вы используете хорошую IDE). Настройка индекса с вашими сотнями моделей все еще утомительна. Может быть, небольшой сценарий с глотком может помочь.