JavaScript один класс на файл, используя eslint - PullRequest
0 голосов
/ 07 мая 2018

Я хотел бы использовать классы JavaScript с одним классом на файл. Это часть более крупного проекта с использованием eslint. Я начал с:

/*global CSReport*/
/*global CSManager*/
class CSMain {
    constructor() {
        this.report = new CSReport();
        this.manager = new CSManager(this.report);
    }
    launchReport(...
}

Однако, eslint генерирует ошибку, говоря, что CSMain определен, но никогда не используется. Это привело к идее использовать экспорт и импорт, который казался лучше, чем сделать все глобальным (примечание: CS перед main - это старый метод, позволяющий избежать глобальных конфликтов)

Вопрос в том, как это собрать. Версия выпуска будет представлять собой один (не уточненный) файл, поэтому имена файлов классов больше не будут существовать, когда все они будут объединены в (скажем) csCompiled.js.

Вопросы:

  1. При импорте используется имя файла. Должен ли я использовать имя CSCompiled.js вместо имен файлов перед объединением?
  2. Хочу ли я отдельный модуль или модуль для каждого класса?
  3. Нужно ли экспортировать каждый класс и импортировать каждый используемый им класс?
  4. Я не до конца уверен, как angular обращается к этому коду, но думаю импортировать csMain.

Я пытался найти ответ на этот вопрос, но я нахожу только старые посты, в которых не используется ecmascript 6 и классы. Если ответ на этот вопрос существует, я не уверен, как к нему добраться.

Справочная информация:
Основной проект использует угловой 1. Этот код является отдельным по старым причинам. В настоящее время он написан на java с использованием gwt, но мы хотим перейти на javascript, чтобы убрать зависимость от gwt. Всего нужно конвертировать около 30-40 файлов (классов).

Код получает и обрабатывает данные с сервера для запросов отчетов. Предварительная обработка выполняется до того, как она будет передана остальному интерфейсу.

Я использовал javascript для установленного проекта с использованием angular, но мне не хватает опыта создания новых проектов.

Я пытаюсь использовать базовый javascript для этого, поэтому он не будет нуждаться в обновлении, если (например) мы перейдем от углового 1 к текущим версиям. Я пока не знаю, является ли это хорошим способом сделать это.

1 Ответ

0 голосов
/ 07 мая 2018

ESLint жалуется, потому что вы не экспортируете созданный вами класс, поэтому другие модули не смогут получить к нему доступ. Вы можете исправить это с помощью простой строки в конце

export default CSMain;

При импорте используется имя файла. Должен ли я использовать имя CSCompiled.js скорее чем имена файлов до объединения?

Используйте имя файла перед компиляцией / переносом / удалением / и т.д. После этого все это станет одним файлом, и об этом позаботится упаковщик.

Хочу ли я отдельный модуль или модуль для каждого класса?

Совершенно необязательно, мне нравится иметь 1 класс на файл и затем 1 файл для модуля (index.js), в котором перечислены все классы в этом модуле.

Нужно ли экспортировать каждый класс и импортировать каждый используемый им класс?

Да, вам нужно импортировать все, что будет использовать ваш модуль, и экспортировать все, что должно быть общедоступным или «импортируемым» для других модулей.

Я не до конца уверен, как angular обращается к этому коду, но думаю импортировать csMain.

Все зависит от того, как вы экспортируете свой файл. Обязательно импортируйте то же имя, которое экспортирует ваш модуль / файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...