Tôi có cần node.js để sử dụng Angularjs không?


79

Tôi muốn sử dụng angular.jsCông cụ Chỉnh sửa Hình ảnh trong trang web của mình. Tôi node.jscũng cần ?

Tôi không hiểu kịch bản. Nếu tôi không cần nó, thì khi nào chúng ta sử dụng cả nodejs và anglejs cùng nhau?


Những thứ khác. (chỉ điều phổ biến là JavaScript)
Sergiu Paraschiv

Một là máy khách và một là máy chủ. JavaScript trong máy khách không phụ thuộc vào cùng ngôn ngữ đó trên máy chủ. Sự nhầm lẫn ở đây là gì?
Neil Lunn

1
Trong thuật ngữ đơn giản trả lời là không
Raunak Kathuria

1
sau khi biết được góc và nút js câu hỏi này có vẻ ngớ ngẩn với tôi .. :-P
Manikandan Arunachalam

6
Tôi nghĩ rằng hướng dẫn trên trang web chính thức của Angular khiến mọi người nhầm lẫn. Nó sử dụng NodeJS như một máy chủ phụ trợ. Trên thực tế, trừ khi bạn đang sử dụng AJAX hoặc bất cứ thứ gì tương tự, bạn có thể chạy Angular chỉ trên máy tính của mình mà không gặp vấn đề gì.
Aaron Liu

Câu trả lời:


65

Bạn không cần NodeJS để tạo công cụ chỉnh sửa hình ảnh phía máy khách.

AngularJS là một khuôn khổ ứng dụng web, được duy trì bởi Google và cộng đồng, hỗ trợ việc tạo các ứng dụng một trang, bao gồm một trang HTML với CSS và JavaScript ở phía máy khách.

Nhưng nếu một ngày nào đó bạn muốn tải lên và lưu trữ những hình ảnh đó trên một máy chủ và làm cho chúng có thể truy cập được bởi nhiều máy khách - thì có, bạn cũng sẽ cần một máy chủ. Máy chủ này có thể được tạo bằng NodeJS.


1
Cảm ơn bạn @Catalin Munteanu. Bây giờ tôi hiểu nó có nghĩa là gì.
Manikandan Arunachalam

2
Ngoài ra, khi bạn cần một máy chủ, tôi khuyên bạn nên tạo một máy chủ từ đầu. Bạn cần hiểu cách nó hoạt động trước khi sử dụng một framework phức tạp như MEANhoặc SailsJS.
Catalin MUNTEANU

1
, tôi đang xử lý hình ảnh trên máy chủ bằng php
Manikandan Arunachalam

Điều gì sẽ xảy ra nếu tôi có một ứng dụng phụ trợ đang chạy và tất cả những gì tôi muốn xây dựng chỉ là giao diện người dùng? Chỉ có góc cạnh là đủ tốt?
Arun

@Arun, bạn không cần NodeJS nếu bạn muốn xây dựng giao diện người dùng với AngularJS.
Catalin MUNTEANU

80

Tôi cảm nhận được nỗi đau của bạn.

Đối với một người mới phát triển Angular 2, tôi có thể cảm thấy sự đau đớn khi phải học các công nghệ phía máy chủ cho một thứ về cơ bản là công nghệ phía máy khách . Từ những gì tôi hiểu:

  1. node.jschỉ được sử dụng để quản lý các phụ thuộc của một ứng dụng góc 2. Nếu bạn nào đó có thể quản lý để có được những người phụ thuộc mà không sử dụng node.js, npmhoặc jspmsau đó bạn có thể chạy và phát triển ứng dụng ẩn của bạn. Tuy nhiên, làm điều đó theo cách thủ công sẽ mất một khoảng thời gian không đáng kể vì bạn phải tải xuống các tệp theo cách thủ công có thể có các phụ thuộc khác sẽ yêu cầu các tệp khác được tải xuống lại (vâng, tôi đã ở đó). node.jshoặc npmhoặc jspmcho rằng vấn đề tự động hóa quá trình này cũng như tham gia tất cả các bước cần thiết để cấu hình file ( jspm) do đó bất cứ khi nào bạn sử dụng phụ thuộc đặc biệt trong ứng dụng của bạn, điều đó phụ thuộc khác biệt phụ thuộc cũng sẽ có mặt trong hệ thống của bạn.
  2. Một số trình duyệt, đặc biệt là Google Chrome hạn chế các tệp được tải cục bộ vì mục đích bảo mật, do đó, một số công nghệ HTML 5 được Angular 2 sử dụng sẽ tạo ra lỗi khi tải bằng giao thức tệp: Vì vậy, bạn cần một máy chủ mà từ đó bạn có thể phục vụ ứng dụng của mình để tất cả các công nghệ HTML 5 có sẵn cho Angular 2 chạy.
  3. node.jscũng cần thiết cho hot-module-reloadkhả năng phát triển ứng dụng nhanh chóng vì nó cung cấp khả năng file watcher apiphát hiện các thay đổi đối với mã nguồn.

Nhưng có một cách để phát triển ứng dụng Angular 2 ngoại tuyến mà không cần đến node.js.

  1. Hãy nhớ khi tôi nói rằng nếu bạn có thể quản lý để có được tất cả các phụ thuộc bắt buộc, bạn có thể chạy và phát triển ứng dụng của mình ngoại tuyến? Nếu bằng cách nào đó bạn có thể tìm hoặc tạo một gói có tất cả các phụ thuộc bắt buộc mà ứng dụng của bạn sẽ cần, thì bạn không cần npm hoặc jspm để quản lý các phụ thuộc cho mình.
  2. Đối với sự file-access-restrictioncố, bạn có thể tải dự án của mình dưới dạng phần mở rộng. Các tiện ích mở rộng có khả năng sử dụng tất cả các công nghệ HTML 5 có sẵn cũng như một số api mạnh mẽ (thậm chí không có sẵn cho các ứng dụng được cung cấp trên máy chủ), đồng thời là cục bộ cho môi trường phát triển của bạn. Vì vậy, bạn không cần phải kích hoạt máy chủ web để truy cập công nghệ HTML 5 nếu bạn phục vụ ứng dụng của mình dưới dạng tiện ích mở rộng.
  3. Đối với hot-module-reloadkhả năng, bạn có thể tiếp cận nó theo cách khác. Thay vì có trình theo dõi tệp trong máy chủ web để theo dõi các thay đổi đối với tệp trong hệ thống cục bộ, bạn có thể thực hiện việc đó từ chính ứng dụng. Vì ứng dụng có thể fetchhoặc xmlhttprequesttài nguyên mà ứng dụng cần, bạn có thể định kỳ fetchhoặc xmlhttprequesttài nguyên mà ứng dụng của bạn cần và so sánh nó với một số bộ đệm. Nhưng làm thế nào để bạn biết những tệp nào để kiểm tra? Bạn có thể tìm kiếm linkstrong trang, script, củaimg.Nếu bạn sử dụng SystemJS làm trình tải mô-đun, thì bạn có thể sử dụng sổ đăng ký của nó để tìm kiếm các tệp mà ứng dụng của bạn cần nhưng không được tải trong trang, vì nó đã được chuyển hoặc một cái gì đó. Mặc dù làm tất cả những điều này có thể làm giảm hiệu suất cho hệ thống của bạn cùng với chi phí bổ sung của việc chuyển hoặc xử lý trước mã không phải gốc, công việc này có thể được thuê ngoài để web workergiải phóng chuỗi thực thi chính trong hệ thống cho mã ứng dụng của bạn.

Không tin tôi? Đây là bằng chứng.

  1. Dự án Angular trong Chrome trên github chứa một gói nén chứa các phụ thuộc bắt buộc cần thiết để phát triển một ứng dụng Angular 2 tối thiểu (tối thiểu, tôi đang tham khảo hướng dẫn Tour of Heroes được giới thiệu trên trang bắt đầu nhanh). Vì vậy, nếu bạn đang sử dụng một hệ thống không được node.js hỗ trợ (vâng, ChromeOS chẳng hạn) hoặc chỉ trên một hệ thống bị hạn chế mà node.js chỉ không khả dụng, tất cả các phụ thuộc bắt buộc đều có sẵn và bạn thì không cần npm hoặc jspm để quản lý các phụ thuộc cần thiết cho bạn.
  2. Có một phần mở rộng bằng chứng về khái niệm phục vụ chuyến tham quan hướng dẫn các anh hùng (các tệp phát triển, bảng chữ và tất cả) cục bộ dưới dạng một phần mở rộng chrome.
  3. Phần mở rộng cũng thực hiện một hot-module-reloadchức năng bằng cách kết nối với các nguyên thủy hmr do alexis vincent phát triển cho SystemJS. Các hot-module-reloadchức năng được kích hoạt bởi một tập tin javascript đơn để nếu chức năng này là không cần thiết hoặc là chiếm quá nhiều tài nguyên, sau đó bạn có thể chỉ cần loại bỏ các dòng xúc phạm mã.

Nhưng được cảnh báo mặc dù.

  1. Nếu bạn đang sử dụng hệ thống này, thì bạn cần một cách để cập nhật gói phát triển của mình khi công nghệ tiến lên và nó di chuyển với tốc độ nhanh (nói gì về Angular 3 khi Angular 2 vừa được phát hành) hoặc các công nghệ mà bạn đang sử dụng để phát triển ứng dụng của bạn có thể trở nên lỗi thời hoặc việc thay đổi api ở đâu đó có thể ngăn ứng dụng của bạn hoạt động trong tương lai. Bạn cũng không được đảm bảo có kho lưu trữ cập nhật cho các phần phụ thuộc vì các loại gói này được duy trì theo cách thủ công.
  2. Việc gộp ứng dụng của bạn dưới dạng tiện ích mở rộng của Chrome như trong Angular trong Chrome sẽ gây tắc nghẽn hiệu suất. Vì mã được chuyển và các mô-đun được tải chậm, bạn sẽ mất những tiến bộ của biên dịch JIT và các cải tiến hiệu suất khác mà các công cụ javascript hiện đại sử dụng để tối ưu hóa mã chạy trên trình duyệt. Tuy nhiên, những gì bạn mất về hiệu suất, bạn có được sự linh hoạt để sử dụng công nghệ mà bạn muốn phát triển. Luôn có sự đánh đổi. Hơn nữa, lần truy cập hiệu suất chỉ ở giai đoạn đầu khi mã được tải. Khi nó đã được ứng dụng tải, hệ thống sẽ biết cách thực hiện các cải tiến về hiệu suất. Khi bạn phân phối ứng dụng của mình, bạn thực sự cần phải biên dịch các tài nguyên cần thiết để tận dụng các cải tiến hiệu suất của các công cụ javascript hiện đại.
  3. Các hot-module-reloadkhả năng hiện là một cách hackish thực hiện một watcher tập tin trong đó sử dụng công ước chung cho một dự án (temp1.ts, temp1.css, temp1.htm) vì không có cách nào (Tôi có thể sai về vấn đề này) để có được một danh sách dứt khoát của tất cả các tài nguyên mà ứng dụng cần nhưng không được tải trên trang chính (các tài nguyên đã được chuyển hoặc xử lý trước).

7
Đây phải là câu trả lời được chấp nhận. Tôi vừa có câu hỏi này và bạn đã giải tỏa được những nhầm lẫn mà tôi thậm chí không có. Bravo ...
Gaurav Chauhan

Tôi không đồng ý, nodejs không phải là công nghệ máy chủ duy nhất. Tôi nghĩ câu hỏi nhiều hơn về việc sử dụng grunt, yeoman, v.v. cần cài đặt nodejs.
Jérôme B

9

node.js được sử dụng để viết Javascript ở phía máy chủ. angle.js là một khuôn khổ phía máy khách.

Bạn không cần node.js để sử dụng angle.js nhưng bạn có thể cài đặt npm (trình quản lý gói nút) để sử dụng một số công cụ tuyệt vời sẽ giúp cuộc sống của bạn như một nhà phát triển góc cạnh dễ dàng hơn nhiều. Ví dụ: yoeman là một công cụ giàn giáo tuyệt vời. Có rất nhiều công cụ khác có sẵn trên npm đây là liên kết đến trang web của họ Tìm hiểu thêm về angle tại trang web chính thức của angle hoặc tại kênh youtube angle


2
Câu trả lời này là điều tôi cảm thấy khó hiểu về Angular và NodeJS: Trên CLIENT, có rất nhiều công cụ yêu cầu NodeJS - về cơ bản là bất cứ thứ gì được cài đặt bằng tiện ích quản lý gói nút (npm). Điều tôi vẫn không hiểu là khi đến HOST trang web đã sử dụng các gói NodeJS và npm được cài đặt trên máy khách - bạn có cần phải có NodeJS trên máy chủ để các gói đã cài đặt đó hoạt động không? Nếu câu trả lời là "có thể" thì những yếu tố nào liên quan đến việc biết liệu NodeJS có cần ở trên máy chủ web hay không?
Jazimov

1
Để trả lời câu hỏi của bạn, có và không. npmlà một người quản lý gói. Cài đặt một gói với npmcũng giống như sao chép gói và các phần phụ thuộc của nó vào thư mục cục bộ của bạn. Vì vậy, nếu bạn muốn các tính năng tốt đi kèm npmthì bạn nên cài đặt npmvà bạn cần nút để làm điều đó. Nếu bạn không cần các tính năng của npm nó thì bạn không cần phải cài đặt nó và bạn có thể tự sao chép các gói. Giả sử trang web của bạn cần sử dụng bộ chọn ngày này nếu bạn chạy nhận xét cài đặt sẽ sao chép nó và anglejs xuống hoặc bạn có thể làm điều đó theo cách thủ công.
hasanain

Cảm ơn - Tôi có thể đăng một câu hỏi mới để theo dõi thêm. Nhưng tôi đã hiểu ví dụ của bạn. Tôi là một lập trình viên .NET và sẽ lưu trữ trên máy chủ Windows chạy IIS. Hầu hết các công ty lưu trữ dường như không hỗ trợ NodeJS trên máy chủ; sau đó, một lần nữa, hầu hết những gì tôi đang làm trên máy khách với Node là sử dụng npm (trình quản lý gói) của nó để "cài đặt" các phần bổ trợ / phụ thuộc. Sau đó, tôi hy vọng rằng tôi có thể sao chép các tệp đã định cấu hình vào máy chủ web và chúng sẽ chạy tốt mà không cần nút. Tôi không thấy lý do tại sao tôi muốn nút trên máy chủ, trừ khi tôi có quyền truy cập giao diện điều khiển anyway và có thể chạy NPM vào nó khi cần thiết
Jazimov

8

Số Angularđược sử dụng ở phía máy khách và Nodephía máy chủ.

Chúng sử dụng để đi cùng nhau dưới dạng MEAN Stack nhưng không cần thiết.


3

Bạn không cần Node.JS để AngularJS hoạt động. NodeJS là phía máy chủ, AngularJS là phía máy khách.

Nếu bạn chưa quen với AngularJS, tôi đề xuất hướng dẫn AngularJS hướng dẫn này . Trong phần hướng dẫn sử dụng NodeJS, bạn sẽ hiểu tại sao cả hai lại hoạt động cùng nhau, nhưng lại không cần thiết.


3

Thật khó trả lời nếu không biết công cụ chỉnh sửa Hình ảnh của bạn hoạt động như thế nào. Nhưng để trả lời câu hỏi của bạn, không, bạn không cần Node.js để sử dụng AngularJS.

Angular là một khung javascript front-end hoạt động trong trình duyệt web của khách hàng.

Node là một dịch vụ có thể thực thi javascript và thường được sử dụng trên máy chủ có thể thay thế PHP ( như trong ngăn xếp MEAN ). Ngoài ra, vì Node là một dịch vụ có thể thực thi javascript nên nó có thể được sử dụng trong máy tính cục bộ của bạn khi phát triển các ứng dụng Angular để thực hiện các tác vụ nền như rút gọn css và javascript và thực hiện các bài kiểm tra.

Vì vậy, nếu công cụ chỉnh sửa Hình ảnh của bạn được phát triển bằng javascript và ứng dụng của bạn sử dụng Angular và Node (làm máy chủ web), thì mã có thể được thực thi ở cả phía máy khách hoặc phía máy chủ.

Hãy đọc trên MEAN stack để xem Node và Angular phù hợp ở đâu. Bạn thậm chí không cần Node gì cả nhưng thật tuyệt khi phát triển tất cả bằng cùng một ngôn ngữ.


Bây giờ tôi chỉ quyết định rằng tôi có thể sử dụng anglejs để xử lý, người dùng có thể tải lên hình ảnh và sử dụng các tùy chọn như (xoay, cắt). Tôi cần quản lý những hình ảnh này.
Manikandan Arunachalam

1
Đối với thao tác hình ảnh của người dùng như xoay và cắt, việc có chức năng đó trên giao diện người dùng là rất hợp lý. Ngày nay, phần cứng phía máy khách khá mạnh nên có lẽ không cần.
JayMc

0

Lý do cài đặt NodeJs Vì một trình duyệt web như Chrome, Firefox, v.v. chỉ hiểu JavaScript, chúng ta phải chuyển bản ghi các loại sang JavaScript. Do đó, trình chuyển đổi Typecript yêu cầu Node.js để tạo mã Typecript sang JavaScript.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.