Tại sao Magento 2 sử dụng Knockout thay vì Angular hay React


14

Câu hỏi của tôi đơn giản như nó nói trong tiêu đề. Đó là lý do Magento chọn loại trực tiếp thay vì các khung khác như góc cạnh hay phản ứng?

Có một lý do cụ thể?

Đây có phải là nền tảng phù hợp để đặt câu hỏi này?

Câu trả lời:


6

Tôi tin rằng đó cũng chính là lý do họ chọn LESS over Sass - React không có một cộng đồng ổn định lớn đằng sau nó khi Magento 2 mới bắt đầu, tôi không chắc liệu Angular có làm hay không nhưng dù sao tôi cũng nghe thấy Angular khá phức tạp và Theo tôi thì có vẻ quá mức cần thiết cho Magento.

Knockout rất nhẹ, không quá mức cần thiết và đáp ứng các yêu cầu mà Magento có vào thời điểm đó.

Có một phiên bản ứng dụng web tiến bộ dựa trên React (PWA) của Magento mà chúng ta sẽ có thể kiểm tra vào một thời điểm nào đó trong năm nay nhưng không có ngày phát hành vì nó ở giai đoạn đầu tiên từ những gì tôi có thể thấy. Để biết thông tin về điều đó xem ở đây .


1
Có đã theo dõi họ. Tôi đã có cơ hội gặp Ben trong cuộc gặp gỡ Magento nơi anh ấy cũng đang nói về PWA. Vì vậy, vâng, đó là điều mà Magento nghiêm túc.
Gagan

8

Nếu Magento 2 được xây dựng bằng phản ứng, câu hỏi của bạn sẽ là "Tại sao nó không sử dụng Angular hay KnockoutJs?".
Nếu nó được xây dựng bằng Angular .... bạn biết nơi này sẽ đi.

Tôi không phải là người có thẩm quyền về vấn đề này, nhưng tôi suy đoán đó là vũ khí được lựa chọn vì nhóm thoải mái hơn với KOjs và nó phù hợp với nhu cầu của họ dựa trên lộ trình của họ.

Có một cuộc tranh luận tương tự về lý do tại sao chọn ít hơn sass (đọc thêm về nó ở đây: https://alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/ )

Tôi cũng đã nghe các cuộc thảo luận về lý do tại sao ZF chứ không phải Symfony. Điều tương tự ... đó là vấn đề chọn đúng công cụ phù hợp với công việc, công cụ mà bạn cảm thấy thoải mái.

Dù sao ... bạn không bị giới hạn quá nhiều về sự lựa chọn này. Bạn có thể chọn ngăn xếp công nghệ, đặc biệt cho frontend, phù hợp với bạn nhất.
Bạn có thể cần nỗ lực thêm, nhưng bạn sẽ chỉ làm một lần và có thể sử dụng lại kết quả trong các dự án trong tương lai.
Đã có những dự án trên magento với phản ứng chẳng hạn.
Đây là một đoạn video tuyệt vời từ Riccardo Tempesta: https://www.youtube.com/watch?v=ElZ5UtTXpzQ
Ngoài ra, bạn có thể tìm thấy ở đây một proxy giữa Reac và magento: https://github.com/McFizh/magento2-react
You có thể tìm thấy nhiều hơn với một tìm kiếm trực tuyến đơn giản.


Trên thực tế tại sao tôi hỏi điều này là do giao diện bước cài đặt đang sử dụng Angular, vì vậy đó là lý do chính để tôi hỏi nó ở đây. Nếu họ đang sử dụng Angular trong bước cài đặt, họ có thể đã sử dụng nó thay cho yêu cầu. Có phải đó là lý do duy nhất mà loại trực tiếp sử dụng Jquery Ajax để liên kết dữ liệu là lý do tại sao họ đã chọn. Tôi hi vọng bạn hiểu những gì tôi nói. Nó không chỉ là nhu cầu đặt câu hỏi, mà là cần magento để thay đổi js fw khác nhau để cài đặt và khác nhau cho phần còn lại của khu vực.
Gagan

Trình cài đặt là một ứng dụng nhỏ riêng biệt. Có lẽ nó được xây dựng bởi một đội khác.
Marius

7

Không biết lý do chính thức, nhưng đã sử dụng nó, Knockout có vẻ nhẹ hơn rất nhiều, tải tối thiểu cần thiết và phù hợp để tích hợp với các mẫu frontend Magento2 so với Angular hoặc React nặng hơn.

Ngoài ra, cách dễ dàng RequireJS và gulp tự động kết hợp với loại trực tiếp để giảm thời gian tải và kích thước tệp có thể rất quan trọng, đoán, nhưng tốc độ mặt trước khá chắc chắn là một cân nhắc chính khi lập kế hoạch Magento2.


Có tốc độ có thể là một lý do. Infact Magento nổi tiếng với "TỐC ĐỘ" :) và nếu loại trực tiếp nhanh đến mức có thể thay thế Angular thì điều đó có ý nghĩa. Nhưng tôi khá tự tin rằng Angular nhanh hơn, tuy nhiên, tôi không tự tin 100%.
Gagan

3

Tôi nghĩ một câu hỏi tốt hơn là, tại sao m2 lại được kết hợp chặt chẽ với frontend?

Rất nhiều khung công tác JS đã xuất hiện khi M2 phát hành.

M2 sẽ trở nên phổ biến hơn rất nhiều nếu mọi người:

  • có sự lựa chọn của bộ tiền xử lý, bộ đóng gói, trình biên dịch, ít hơn, sass, et al
  • có quyền tự do lựa chọn sử dụng khung nào như angular1-5-n, Reac, vue, et al
  • có quyền tự do sử dụng các khung css, bootstrap 1-4, nền tảng, lưới, et al

Về cơ bản rất nhiều ET ALS. Nhưng không, họ buộc bạn phải sử dụng lối vào quái gở, xml điều khiển của họ.

Điều tốt là, họ có API REST, vì vậy bạn có thể không đầu và xây dựng một ứng dụng web tiến bộ.


Tôi đã tìm thấy cuộc gặp gỡ magento mới nhất mà tôi nghĩ ở NL tập trung vào PWA và React, vì vậy tôi nghĩ đó là nơi @ ben-crook đang chỉ
Gagan

1
@Gagandeep cũng có github.com/Divanteutil/vue-storefront này . Cá nhân tôi thích các khung không được thiết kế quá mức và giúp bạn tự do hơn trong cách thực hiện. Chủ yếu chỉ cung cấp dịch vụ, mô hình và người giúp đỡ. TLDR; khuôn khổ bất khả tri. Lựa chọn cá nhân của tôi về stack sẽ là: Angular5 (n), bootstrap 4, cùng với sass, typcript và webpack.
Miguel Felipe Guillen Calo

0

Xin đừng lo lắng về điều đó. Như Anton Kril đã công bố tại phiên bản MageConf2017 -since 2.4 phiên bản Magento2 sẽ có React. Ngoài ra, Redux tất nhiên, và GraphQL. Nhưng ... Knockout.js sẽ vẫn còn.


Điều này là không chính xác. Magento 2.4 sẽ không được sử dụng React, Magento 2 vẫn sẽ sử dụng cùng một ngăn xếp (bao gồm cả Knockout). Những gì bạn đang đề cập đến là PWA Studio , nơi Magento chưa công bố ngày.
Ben Crook

Họ vẫn buộc bạn phải sử dụng một ngăn xếp cụ thể. Thật là một người lập dị.
Miguel Felipe Guillen Calo

@MiguelFelipeGuillenCalo Không, không thực sự. Ý tưởng của PWA Studio là nó kết nối với API GraphQL mới, cho phép bạn sử dụng bất kỳ công nghệ lối vào nào bạn muốn sử dụng và chỉ cần tìm nạp từ máy chủ những gì bạn cần. API REST hiện tại làm cho điều này trở nên khó khăn (vì nó sử dụng một webapikhu vực khác ), API mới phù hợp với điều đó. PWA Studio chỉ là cách họ cung cấp cơ sở cho những người cần nó.
Jisse Reitsma

@JisseReitsma community.magento.com/t5/Magento-DevBlog/... này nêu rõ những gì chồng nó sẽ sử dụng. Khi họ mở rộng các tính năng, nó có thể sẽ vẫn còn trong ngăn xếp đó. Do đó, họ buộc bạn phải sử dụng một ngăn xếp cụ thể.
Miguel Felipe Guillen Calo

@MiguelFelipeGuillenCalo Tôi biết. Nhưng điều đó KHÔNG có nghĩa là ngăn xếp duy nhất bạn có thể tự tạo là ngăn xếp mà Magento đang xây dựng. Có, nếu bạn muốn có công việc bằng không và nếu bạn chỉ muốn sử dụng những gì Magento xây dựng cho bạn, thì ngăn xếp của họ là thứ được sử dụng. Tuy nhiên, quan điểm của bạn là "họ vẫn buộc bạn sử dụng một ngăn xếp cụ thể" và điều đó không đúng. Họ xây dựng ngăn xếp của riêng họ, nhưng không bắt bạn phải sử dụng nó. Thay vào đó, họ xây dựng ngăn xếp đó trên đầu API GraphQL và cho phép bạn đặt ngăn xếp của riêng mình lên trên API đó. Linh hoạt hơn nhiều, vì vậy bạn có sự linh hoạt mà bạn muốn.
Jisse Reitsma
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.