Настройка проекта Angular 2 и NodeJS

У меня есть несколько основных вопросов, касающихся структуры проекта MEAN-приложения, включая Angular2. Я следовал начальному руководству https://angular.io/, чтобы создать действительно базовое приложение Angular2. Теперь я пытаюсь интегрировать это приложение в проект NodeJS, следуя этому руководству. Проблема в том, что этот урок был написан во времена первого Angular.

Мои вопросы:

  1. где я должен положить пакеты npm моего приложения Angular2? Внутри общедоступной папки (то есть у приложения есть собственный packages.json) или внутри узла packages.json?
  2. как должен быть реализован компилятор tsc?

Bruno

1 ответ

У меня была очень похожая проблема, когда я впервые начал мигрировать в направлении angular2. В учебнике Angular.io для своих модулей используется System.js, который в основном несовместим с Node, который использует CommonJS. Это оставляет вам два варианта.

  1. Настройте компилятор Typescript и модули Node для клиента и сервера по отдельности.

  2. Используйте модули CommonJS с чем-то вроде Browserify на клиенте.

Теперь для меня только второй вариант - хороший вариант. Двойная настройка сводит на нет цель использования одного и того же языка на клиенте и сервере.

Я подготовил Boilerplate для Angular 2, чтобы начать быстро с Browserify. Вы можете проверить это прямо здесь.

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

app.use(express.static(__dirname + '/public'));
app.use("/node_modules",express.static(__dirname + '/../node_modules'));

Лично я использую VS Code Task для компиляции своего Typescript, а затем использую Watchify на стороне клиента, чтобы связать все это вместе. На стороне сервера я использую nodemon для отслеживания любых изменений и перезапускаю сервер при компиляции.

Другие вопросы по тегам