【问题标题】:What does it mean for a framework to call you? [closed]框架调用你是什么意思? [关闭]
【发布时间】:2020-06-09 18:48:51
【问题描述】:

我的目标是完全理解库和框架之间的区别

我已经能够对两者的区别有了一个基本的了解。除了通常给出的一种基本描述:

“库和框架之间的主要区别是“控制反转”。当您从库中调用方法时,您处于控制之中。但是对于框架,控制是反转的:框架调用您“ programcreek.com

框架调用你是什么意思?

我已经研究过调用函数、方法等的含义,现在已经完全理解了……但是我无法理解也找不到任何关于框架调用你的含义的信息

我尝试用多种不同的方式来查找这个问题,但我能找到的只是:MFC Framework how a framework calls your code。我在我熟悉的语言或框架领域找不到任何东西

【问题讨论】:

  • 欢迎来到 Stack Overflow。我建议您阅读help 文章。您可以在 google 上搜索并阅读一些媒体文章或观看 youtube 视频,并充分了解什么是 Framework,什么是 Library。我希望我的评论可以帮助您在 Stack Overflow 上获得更好的体验。
  • 嗨!感谢您的欢迎评论。我读过那篇文章。我可以问一下你有什么特别突出的问题,使它成为一个不恰当的问题,以便我可以改进吗?谢谢
  • 标题是什么意思?您是否对框架或库的含义感到困惑?为什么你的标签是前端库和框架的名称?我猜你只是想留下一个问题。显然,在我看来这不是一个好问题。
  • 基本上,如果您查看框架与库,首要区别之一是框架调用您的代码。而图书馆是由您调用的。我仍然想继续让这个问题可以接受
  • 图书馆也可以给你打电话。用法和架构的不同用途,两者之间并不总是有明确的界限。但是谁打电话给谁根本不相关。没有办法在 SO 上挽救这个问题,不同的 SE 站点可能更合适——SO 面向实际代码,而不是模棱两可的定义。

标签: javascript callback frameworks


【解决方案1】:

可以说任何足够完整的库都无法与框架区分开来。通过反转,任何足够薄的框架都可以被视为库。

简单来说,库越是规定您如何编码、遵循哪些实践和约定以及如何组织您的代码,它就越像一个框架。

“控制倒置”不一定会以明确的方式发生。一些框架非常轻巧,它们不会对您施加太多压力,您可以逐步产生控制权。其他人则规定了严格的条件,要么按照他们的方式做,要么根本不做。

这里有大量类框架库和类库框架。

当框架“调用”您的代码时,通常意味着您已遵循框架本身制定的模式,并且您的代码将插入该模式中的预定义位置。

这并不是说库也不会调用您的代码,它们只是对发生的地点、时间和方式施加的限制较少。

所以这是一个库调用:

// Tell the library to perform a user registration
let user = FancyLibrary.registerUser(...);

这是一个类似框架的结构:

// Start up the framework and ask for notifications if/when a particular event occurs
let app = new SuperFramework({
   onRegistration: user => { ... }
});

虽然这里经常有一条模糊的界限。有些情况很清楚,但是有很多工具包有很强的约定,即使它们是库。

作为一个中间的例子,考虑Sequelize,它是一个ORM。它是一个框架吗?大多数人会认为 ORM 与此类似,它具有强大的约定等,但它也是一个可用于进行简单 SQL 调用的库,仅此而已。除了可用于执行复杂任务的强大工具包之外,很难准确地说 Sequelize 是什么。

【讨论】:

  • 我希望我能投票。非常非常感谢你
  • 亲爱的@tadmna,我想回答这样在 SO 上不太可接受的问题并不是一个好行为。您的意见是回答任何问题,但如果注意其他两个用户的问题,我会在这篇文章中留下关闭标记。另外,我为您的回答留下了一个反对票和very-low-quality 标志,因为我认为这个问题现在应该关闭,并将在不久的将来删除。希望不要生气。
  • 此问题已结束并已解决。我可以做些什么来提高这个问题的质量?
  • 这不一定是问题的质量,而是问题的性质,因为 Stack Overflow 的关注点相当狭窄,很多事情都跑题了。在这里,我们通常谈论的是损坏的代码,而不是假设。对于更抽象的问题,请考虑Quora
  • 这很有意义!我的坏
猜你喜欢
  • 2018-03-12
  • 2010-12-29
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 2013-05-16
  • 2011-04-03
相关资源
最近更新 更多