为什么Magento 2使用Knockout而不是Angular或React


15

我的问题很简单,就像标题中所说的那样。为何Magento会选择淘汰赛而不是其他框架(例如angular或react)?

是否有特定原因?

这也是问这个问题的合适平台吗?


@ Ben-Crook期待您的反馈,直到Magento 2的最新版本和更新。团队有什么具体的建议吗?
meDeepakJain

Answers:


6

我认为这是他们选择LESS而不是Sass的原因-当Magento 2首次启动时,React并没有一个庞大的稳定社区,我不确定Angular是否这样做,但是我听说Angular相当复杂并且在我看来,对于Magento来说似乎过于杀伤力。

淘汰赛是轻量级的,不是矫kill过正,并且符合Magento当时的要求。

Magento有一个基于React的渐进式Web应用程序(PWA)版本,我们应该能够在今年的某个时候结帐,但是从我所见,它还处于发布的初期概念阶段,因此没有发布日期。有关这方面的信息,请参见此处


1
是的,已经在关注他们。我有机会在Magento见面Ben时,他也谈到了PWA。因此,是的,Magento对此很认真。
加根

8

如果使用响应来构建Magento 2,您的问题将是“为什么不使用Angular或KnockoutJs?”。
如果它是使用Angular构建的。。。。

我不是这方面的权威,但我推测这是选择的武器,因为团队对KOjs更加满意,并且根据其路线图满足了他们的需求。

关于为什么选择少过无礼的人有类似的争论(在此处了解更多信息:https//alankent.me/2016/05/21/magento-2-community-project-moving-from-less-to-sass/

我也听到了关于为什么采埃孚而不是Symfony的讨论。同样的事情...选择适合您工作的合适工具,就是您喜欢的工具。

无论如何...您对这个选择没有太多限制。您可以选择最适合您的技术堆栈,特别是针对前端的技术堆栈。
您可能需要付出一些额外的努力,但是您只会做一次,并且可以在以后的项目中重用结果。
例如,关于magento的项目已经存在。
这里是里卡尔多Tempesta一个真棒韦迪:https://www.youtube.com/watch?v=ElZ5UtTXpzQ
您也可以在这里找到一个代理之间的反应和Magento的:https://github.com/McFizh/magento2-react
你可以通过简单的在线搜索找到更多。


实际上,我之所以问这个原因是因为安装步骤界面使用的是Angular,所以这就是我在这里询问它的主要原因。如果他们在安装步骤中使用Angular,则可以使用它代替require。淘汰赛使用Jquery Ajax进行数据绑定的唯一原因是他们选择的原因。我希望你明白我的意思。它不仅需要提出问题,而且还需要magento更改用于安装的不同js fw,而对于其余区域更改。
加根

安装程序是一个单独的小型应用程序。也许它是由另一个团队建造的。
马吕斯

7

不知道正式的原因,但是使用它之后,Knockout似乎更轻巧,加载了必要的最小内容,并且与较重的Angular或React相比,适合与Magento2前端模板集成。

猜想,R​​equireJS和gulp自动与剔除相融合以减少加载时间和文件大小的简单方法可能也很重要,但是在计划Magento2时,相当确定的前端速度是主要考虑因素。


是的,速度可能是一个原因。Infact Magento因其“ SPEED”而闻名:但是我非常有信心Angular会更快,但是我不是100%有信心。
加根

3

我认为一个更好的问题是,为什么m2与前端如此重耦合?

M2发布时,已经有许多JS框架。

如果人们满足以下条件,那么M2将会大受欢迎:

  • 可以选择预处理器,捆绑器,编译器,较少,sass等
  • 可以自由选择要使用的框架,例如angular1-5-n,react,vue等
  • 可以自由使用CSS框架,Bootstrap 1-4,Foundation,Grid等

基本上,很多ET ALS。但是,不,它们会迫使您使用过度设计的前端,xml驱动的怪兽。

好消息是,它们具有REST API,因此您可以毫不费力地构建渐进式Web应用程序。


我发现我认为在NL的最新magento会议是针对PWA和React的,所以我认为@ ben-crook指向的地方
Gagan

1
@Gagandeep还有这个github.com/DivanteLtd/vue-storefront。我个人喜欢没有过度设计的框架,并为您提供了更多的操作方式自由。通常只提供服务,模型和助手。TLDR;不可知论的框架。我个人选择的堆栈是:Angular5(n),bootstrap 4,sass,打字稿和webpack。
Miguel Felipe Guillen Calo '18

0

拜托,别担心。正如Anton Kril在MageConf2017上宣布的那样-从2.4版本开始,Magento2前端将具有React。当然还有Redux和GraphQL。但是... Knockout.js将保留。


这是不正确的。Magento 2.4将不会使用React,Magento 2仍将使用相同的堆栈(包括Knockout)。您指的是PWA Studio,Magento尚未宣布约会的日期。
本·克鲁克

他们仍然强迫您使用特定的堆栈。真可惜
米格尔·费利佩·吉伦·卡洛,2018年

@MiguelFelipeGuillenCalo不,不是真的。PWA Studio的想法是,它可以挂接到新的GraphQL API中,该API将使您能够使用想要使用的任何前端技术,并仅从服务器中获取所需的内容。当前的REST API很难做到这一点(因为它使用了不同的webapi区域),因此新的API很适合。PWA Studio只是他们为有需要的人提供基础的方式。
Jisse Reitsma '18

@JisseReitsma community.magento.com/t5/Magento-DevBlog/... 此明确规定什么栈它将使用。当他们扩展功能时,它很可能会保留在该堆栈中。因此,它们迫使您使用特定的堆栈。
Miguel Felipe Guillen Calo '18

@MiguelFelipeGuillenCalo我知道。但这并不意味着您可以创建自己的唯一堆栈就是Magento正在构建的堆栈。是的,如果您希望零工作,并且只想使用Magento为您构建的内容,则可以使用它们的堆栈。但是,您的意思是“它们仍然迫使您使用特定的堆栈”,这是不正确的。他们建立自己的堆栈,但不强迫您使用它。相反,他们在GraphQL API之上构建该堆栈,并允许您在该API之上构建自己的堆栈。更大的灵活性,因此您拥有所需的灵活性。
Jisse Reitsma '18 -4-3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.