Нужен ли мне node.js для использования Angularjs?

79

Я хотел бы использовать angular.jsдля своего инструмента редактирования изображений на своем веб-сайте. Мне node.jsтоже нужно ?

Я не понимаю сценарий. Если мне это не нужно, тогда когда мы будем использовать вместе nodejs и angularjs?

Маникандан Аруначалам
источник
Разные вещи. (обычное дело - JavaScript)
Серджиу Паращев
Один клиент, а другой сервер. JavaScript в клиенте не зависит от того же языка на сервере. В чем тут путаница?
Нил Ланн
1
Проще говоря, ответ отрицательный
Раунак Катурия
1
после того, как я узнал, что такое angular и node js, этот вопрос кажется мне глупым .. :-P
Manikandan Arunachalam
6
Я думаю, что руководство на официальном сайте Angular сбивает всех с толку. Он использует NodeJS в качестве внутреннего сервера. Фактически, если вы не используете AJAX или что-то в этом роде, вы можете без проблем запускать Angular только на своем компьютере.
Аарон Лю,

Ответы:

65

Вам не нужен NodeJS для создания инструмента редактирования изображений на стороне клиента.

AngularJS - это структура веб-приложений, поддерживаемая Google и сообществом, которая помогает создавать одностраничные приложения, которые состоят из одной HTML-страницы с CSS и JavaScript на стороне клиента.

Но если когда-нибудь вы захотите загрузить и сохранить эти изображения на сервере и сделать их доступными для нескольких клиентов - тогда да, вам также понадобится сервер. Этот сервер можно сделать с помощью NodeJS.

Каталин МУНТЯНУ
источник
1
Спасибо, @Catalin Munteanu. Теперь я понимаю, что это значит.
Маникандан Аруначалам
2
Также, когда вам понадобится сервер, я рекомендую вам создать его с нуля. Вам необходимо понять, как это работает, прежде чем использовать сложный фреймворк, такой как MEANили SailsJS.
Каталин МУНТЯНУ
1
, я обрабатываю изображение на сервере по php
Маникандан Аруначалам
Что, если у меня запущено и запущено серверное приложение, и все, что я хочу создать, - это только интерфейс? Достаточно ли хороша только угловая?
Arun
@Arun, вам не нужен NodeJS, если вы хотите создать интерфейс с помощью AngularJS.
Каталин МУНТЯНУ
80

Я чувствую твою боль.

Для кого-то, кто новичок в разработке Angular 2, я чувствую боль от необходимости изучать серверные технологии для чего-то, что по сути является технологией на стороне клиента . Насколько я понимаю:

  1. node.jsиспользуется только для управления зависимостями приложения angular 2. Если вам каким-то образом удастся получить эти зависимости без использования node.js, npmили jspmтогда вы можете запустить и разработать свое приложение в автономном режиме. Однако выполнение этого вручную займет неумолимое количество времени, поскольку вам придется загружать файлы вручную, которые могут иметь другие зависимости, которые потребуют повторной загрузки других файлов (да, я был там). node.jsили npmили jspmпо этому вопросу позволяет автоматизировать этот процесс, а также принимать все необходимые шаги настройки файлов ( jspm) , так что всякий раз , когда вы используете определенную зависимость в вашем приложении, что другая зависимость конкретной DEPENDENCY также будет присутствовать в вашей системе.
  2. Некоторые браузеры, в частности Google Chrome, ограничивают файлы, загружаемые локально в целях безопасности, так что некоторые технологии HTML 5, используемые Angular 2, будут вызывать ошибку при загрузке с использованием протокола file :. Итак, вам нужен сервер, с которого вы можете обслуживать свое приложение, чтобы все доступные технологии HTML 5 были доступны для запуска Angular 2.
  3. node.jsтакже необходим для hot-module-reloadвозможности быстрой разработки приложений, поскольку он обеспечивает file watcher apiобнаружение изменений в исходном коде.

Но есть способ разработать приложение Angular 2 в автономном режиме без node.js.

  1. Помните, я сказал, что если вам удастся получить все необходимые зависимости, вы сможете запускать и разрабатывать свое приложение в автономном режиме? Если вы каким-то образом можете найти или создать пакет, который имеет все необходимые зависимости, которые потребуются вашему приложению, тогда вам не нужны npm или jspm для управления зависимостями за вас.
  2. Для file-access-restrictionпроблемы вы можете загрузить свой проект как расширение. Расширения могут использовать все доступные технологии HTML 5, а также некоторые мощные API (недоступные даже для приложений, обслуживаемых на сервере), и в то же время быть локальными для вашей среды разработки. Таким образом, вам не нужно запускать веб-сервер для доступа к технологиям HTML 5, если вы используете свое приложение в качестве расширения.
  3. Что касается hot-module-reloadвозможности, вы можете подойти к ней с другой стороны. Вместо того, чтобы иметь средство отслеживания файлов на веб-сервере для отслеживания изменений файлов в локальной системе, вы можете делать это из самого приложения. Поскольку приложение может fetchили xmlhttprequestресурсы, которые необходимы приложению, вы можете периодически fetchили xmlhttprequestресурсы, необходимые вашему приложению, и сравнивать их с некоторым кешем. Но как узнать, какие файлы проверять? Вы можете искать на linksстранице script, изimg.Если вы используете SystemJS в качестве загрузчика модулей, вы можете использовать его реестр для поиска файлов, необходимых вашему приложению, но не загруженных на страницу, поскольку они были перенесены или что-то в этом роде. Хотя выполнение всего этого может привести к снижению производительности вашей системы вместе с дополнительными накладными расходами на транспилирование или предварительную обработку неродного кода, эту работу можно передать на аутсорсинг a, web workerкоторый освободит основной поток выполнения в системе для кода вашего приложения.

Не верите мне? Вот доказательство.

  1. Проект Angular в Chrome на github содержит заархивированный пакет, который содержит необходимые зависимости, необходимые для разработки минимального приложения Angular 2 (по минимуму, я имею в виду учебник Tour of Heroes, указанный на странице быстрого запуска). Таким образом, если вы находитесь в системе, не поддерживаемой node.js (да, есть, например, ChromeOS) или просто в системе с ограничениями, в которой node.js просто недоступен, все необходимые зависимости доступны, а у вас нет нужен npm или jspm для управления необходимыми зависимостями.
  2. Существует расширение для проверки концепции, которое служит для ознакомления с учебником по героям (файлы разработки, машинописный текст и все остальное) локально как расширение для Chrome.
  3. Расширение также реализует hot-module-reloadфункциональность, подключаясь к примитивам hmr, разработанным alexis vincent для SystemJS. hot-module-reloadВключена функция одним файлом яваскрипта , так что , если эта функция не требуется , или занимают слишком много ресурсов, то вы можете просто удалить ошибочную строку кода.

Но будьте осторожны.

  1. Если вы используете эту систему, то вам нужен способ обновления вашего пакета разработки по мере развития технологий, и он развивается быстрыми темпами (что с разговорами об Angular 3, когда Angular 2 только что был выпущен) или технологиями, которые вы используете. для разработки вашего приложения может стать устаревшим или что где-то по ходу изменение api может помешать вашему приложению работать в будущем. У вас также не гарантируется наличие обновленных репозиториев для зависимостей, поскольку эти типы пакетов поддерживаются вручную.
  2. Объединение вашего приложения как расширения Chrome, например Angular в Chrome, приведет к возникновению узких мест в производительности. Поскольку код переносится, а модули загружаются лениво, вы теряете преимущества JIT-компиляции и других улучшений производительности, которые современные движки javascript используют для оптимизации кода, выполняемого в браузере. Однако, несмотря на то, что вы теряете в производительности, вы получаете гибкость в использовании технологии, которую предпочитаете для разработки. Всегда есть компромисс. Более того, снижение производительности наблюдается только в начале, когда код загружается. Как только он будет загружен приложением, система будет знать, как реализовать улучшения производительности. Когда вы распространяете свое приложение, вам действительно нужно скомпилировать необходимые ресурсы, чтобы воспользоваться преимуществами повышения производительности современных движков javascript.
  3. В hot-module-reloadнастоящее время эта возможность представляет собой хакерский способ реализации наблюдателя за файлами, который использует общие соглашения для проекта (temp1.ts, temp1.css, temp1.htm), поскольку нет способа (я могу ошибаться в этом) получить окончательный список всех ресурсов, необходимых приложению, но не загруженных на главной странице (перенесенные или предварительно обработанные ресурсы).
певец
источник
7
Это должен быть принятый ответ. У меня только что был этот вопрос, и вы устранили недоразумения, которых у меня даже не было. Браво ...
Гаурав Чаухан
Я не согласен, nodejs - не единственная технология на стороне сервера. Я думаю, что вопрос гораздо больше об использовании grunt, yeoman и т. Д., Которые необходимо установить nodejs.
Jérôme B
9

node.js используется для написания Javascript на стороне сервера. angular.js - это фреймворк на стороне клиента.

Вам не нужен node.js для использования angular.js, но вы можете установить npm (диспетчер пакетов узлов), чтобы использовать некоторые замечательные инструменты, которые сделают вашу жизнь как разработчика angular намного проще. Например: yoeman - отличный инструмент для строительных лесов. На npm есть много других инструментов, вот ссылка на их сайт. Узнайте больше об angular на официальном сайте angular или на канале angular на YouTube.

хасанаин
источник
2
Этот ответ меня сбивает с толку в Angular и NodeJS: на КЛИЕНТЕ так много инструментов, для которых требуется NodeJS - в основном все, что устанавливается с помощью утилиты диспетчера пакетов узлов (npm). Чего я до сих пор не понимаю, так это того, когда приходит время размещать сайт, который использовал пакеты, установленные NodeJS и npm, на клиенте - вам также нужно иметь NodeJS на сервере, чтобы эти установленные пакеты работали? Если ответ - «возможно», то какие факторы влияют на то, чтобы узнать, должен ли NodeJS быть на веб-сервере?
Jazimov
1
Чтобы ответить на ваш вопрос, да и нет. npmэто менеджер пакетов. Установка пакета с npmпомощью аналогична копированию пакета и его зависимостей в локальный каталог. Итак, если вам нужны хорошие функции, которые идут в npmкомплекте, вам следует установить, npmи для этого вам понадобится node. Если вам не нужны функции, npm вам не нужно его устанавливать, и вы можете скопировать пакеты самостоятельно. Допустим, ваш сайт должен использовать это средство выбора даты, если вы запустите комментарий установки, который скопирует его и angularjs вниз, или вы можете сделать это вручную.
hasanain
Спасибо - я могу опубликовать новый вопрос, чтобы ответить на него. Но я понял ваш пример. Я программист .NET и буду размещать на сервере Windows, на котором работает IIS. Большинство хостинговых компаний, похоже, не поддерживают NodeJS на сервере; опять же, большая часть того, что я делаю на клиенте с Node, - это использование утилиты npm (диспетчера пакетов) для «установки» надстроек / зависимостей. После этого я ожидаю, что смогу просто скопировать настроенные файлы на веб-сервер, и они будут нормально работать без node. Я не понимаю, почему мне нужен узел на сервере, если у меня в любом случае не будет доступа к консоли и я могу запустить на нем npm по мере необходимости
Джазимов
8

Нет. Angular используется на стороне клиента и Nodeна стороне сервера.

Они используются вместе как СРЕДНИЙ стек, но в этом нет необходимости.

жид
источник
3

Для работы AngularJS вам не нужен Node.JS. NodeJS - это серверная сторона, AngularJS - клиентская.

Если вы новичок в AngularJS, я бы предложил этот учебник по AngularJS . В этом руководстве вы будете использовать NodeJS, вы поймете, почему они работают вместе, но это не обязательно.

Билли
источник
3

Трудно ответить, не зная, как работает ваш инструмент редактирования изображений. Но чтобы ответить на ваш вопрос, нет, вам не нужен Node.js для использования AngularJS.

Angular - это интерфейсная структура JavaScript, работающая в клиентском веб-браузере.

Node - это служба, которая может выполнять javascript и часто используется на сервере, возможно, вместо PHP ( например, в стеке MEAN ). Кроме того, поскольку Node - это служба, которая может выполнять javascript, ее можно использовать на вашем локальном компьютере при разработке приложений Angular для выполнения фоновых задач, таких как минимизация css и javascript и выполнение тестов.

Поэтому, если ваш инструмент редактирования изображений разработан на javascript и ваше приложение использует Angular и Node (в качестве веб-сервера), код может быть выполнен как на стороне клиента, так и на стороне сервера.

Прочтите стек MEAN, чтобы увидеть, где подходят Node и Angular. Вам даже не нужен Node, но приятно разрабатывать все на одном языке.

JayMc
источник
Теперь я просто решил, что могу использовать angularjs для обработки, пользователь может загружать изображение и использовать такие параметры, как (поворот, обрезка). Мне нужно управлять этими изображениями. Это все, что есть в моих функциях инструмента редактирования изображений.
Маникандан Аруначалам
1
Для манипуляций с изображениями пользователя, таких как поворот и обрезка, имеет смысл иметь эту функцию во внешнем интерфейсе. Для обычных функций, таких как изменение размера изображения, вы можете поместить это на сервер узла, чтобы освободить ресурсы клиента. В наши дни оборудование на стороне клиента довольно мощное, в этом, вероятно, нет необходимости.
JayMc
0

Причина установки NodeJs Поскольку веб-браузер, такой как Chrome, Firefox и т. Д., Понимает только JavaScript, мы должны преобразовать наш TypeScript в JavaScript. Следовательно, транспилятору Typescript требуется Node.js для генерации кода Typescript в JavaScript.

Дипика Ядав
источник