Настройка проекта Angular 2 и NodeJS
У меня есть несколько основных вопросов, касающихся структуры проекта MEAN-приложения, включая Angular2. Я следовал начальному руководству https://angular.io/, чтобы создать действительно базовое приложение Angular2. Теперь я пытаюсь интегрировать это приложение в проект NodeJS, следуя этому руководству. Проблема в том, что этот урок был написан во времена первого Angular.
Мои вопросы:
- где я должен положить пакеты npm моего приложения Angular2? Внутри общедоступной папки (то есть у приложения есть собственный packages.json) или внутри узла packages.json?
- как должен быть реализован компилятор tsc?
Bruno
1 ответ
У меня была очень похожая проблема, когда я впервые начал мигрировать в направлении angular2. В учебнике Angular.io для своих модулей используется System.js, который в основном несовместим с Node, который использует CommonJS. Это оставляет вам два варианта.
Настройте компилятор Typescript и модули Node для клиента и сервера по отдельности.
Используйте модули 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 для отслеживания любых изменений и перезапускаю сервер при компиляции.