Чи потрібен 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
Manikandan Arunachalam

Що робити, якщо у мене запущена програма-сервер, і все, що я хочу створити, - це лише інтерфейс? Чи достатньо хороший лише кутовий?
Арун

@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 як завантажувач модулів, то ви можете використовувати його реєстр для пошуку файлів, необхідних вашій програмі, але не завантажених на сторінці, оскільки вона була перекладена або щось інше. Незважаючи на те, що все це може призвести до зниження продуктивності вашої системи, а також додаткових накладних витрат на транпіляцію або попередню обробку неродного коду, це завдання може бути передане на аутсорсинг, 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 (менеджер пакетів вузлів), щоб використовувати якісь чудові інструменти, які значно полегшать ваше життя як розробника кутів. Наприклад: yoeman, який є чудовим інструментом будівельних лісів. На npm доступно багато інших інструментів. Тут є посилання на їхній сайт. Дізнайтеся більше про angular на офіційному веб-сайті angular або на каналі angular youtube


2
Ця відповідь викликає в мене заплутаність щодо Angular та NodeJS: У КЛІЄНТА існує так багато інструментів, які потребують NodeJS - в основному все, що встановлюється за допомогою утиліти менеджера пакетів вузлів (npm). Я все ще не розумію, коли настає час ВСТАНОВИТИ сайт, який використовував на клієнті пакети NodeJS та встановлені npm - вам також потрібно мати NodeJS на сервері, щоб ці встановлені пакети працювали? Якщо відповідь "можливо", то які фактори беруть участь у знанні, чи повинен NodeJS також знаходитись на веб-сервері?
Язимов

1
Щоб відповісти на ваше запитання, так і ні. npmє менеджером пакетів. Встановлення пакету з npm- те саме, що копіювання пакету та його залежностей у ваш локальний каталог. Отже, якщо ви хочете отримати приємні функції, npmто вам слід встановити, npmі для цього вам потрібен вузол. Якщо вам не потрібні функції, npm тоді вам не доведеться його встановлювати, і ви можете копіювати пакунки самостійно. Припустимо, ваш сайт повинен використовувати цей засіб вибору дати, якщо ви запустите коментар до встановлення, який скопіює його та angularjs вниз, або ви можете зробити це вручну.
hasanain

Дякую - я можу опублікувати нове запитання для подальшого розгляду. Але я зрозумів ваш приклад. Я програміст .NET і хостів на сервері Windows, на якому працює IIS. Здається, більшість хостингових компаній не підтримують NodeJS на сервері; знову ж таки, більшість із того, що я роблю на клієнті з Node, використовую його утиліту npm (менеджер пакетів) для "встановлення" доповнень / залежностей. Після цього я сподіваюся, що я можу просто скопіювати налаштовані файли на веб-сервер, і вони будуть нормально працювати без вузла. Я не розумію, чому я хотів би вузол на сервері, якщо б я все-таки мав доступ до консолі і не міг запустити на ньому npm за необхідності
Язимов,

8

Angularвикористовується на стороні клієнта та Nodeна стороні сервера.

Вони звикли йти разом як стек ЗНАЧЕННЯ, але це не обов'язково.


3

Вам не потрібен Node.JS, щоб AngularJS працював. NodeJS - на стороні сервера, 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 взагалі не потрібен, але приємно розробляти всі на одній мові.


Тепер я просто вирішив, що можу використовувати angularjs для обробки, користувач може завантажувати зображення та використовувати такі опції, як (обертати, обрізати). Мені потрібно керувати цими зображеннями Це все в моїх інструментах редагування зображень.
Manikandan Arunachalam

1
Для маніпуляцій із зображеннями користувачів, таких як обертання та обрізання, має сенс мати таку функціональність на фронтенді. Для звичайних функцій, таких як розмір зображень, ви можете розмістити це на сервері вузла, щоб звільнити ресурси клієнта. У наш час апаратне забезпечення на стороні клієнта досить потужне, ймовірно, немає необхідності.
JayMc

0

Причина встановлення NodeJs Оскільки веб-браузер, такий як Chrome, Firefox тощо, розуміє лише JavaScript, ми маємо перевести наш Typescript у JavaScript. Отже, для генерації коду Typescript для JavaScript для перетворювача Typescript потрібен Node.js.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.