一个框架给你打电话意味着什么



我的目标是充分理解库和框架之间的区别

我已经能够对两者之间的差异有一个基本的了解。除了一个通常给出的基本描述:

库和框架之间的关键区别是"控制反转"。当你从库中调用方法时,你处于控制之中。但有了框架,控制就会反转:框架会调用你programcreek.com

一个框架给你打电话意味着什么?

我已经研究了调用函数、方法等的含义,现在已经完全理解了。。。但我无法理解也找不到任何关于框架称你为意味着什么的信息

我试着用多种不同的方法来构建这个问题,我所能找到的就是:MFC框架框架如何调用你的代码。我在熟悉的语言或框架领域找不到任何东西

可以说,任何足够完整的库都与框架无法区分通过反演,任何足够薄的框架都可以像库一样处理。

简单地说,库越是规定你如何编码,遵循什么实践和约定,以及如何组织你的代码,它就越像一个框架。

"控制权倒置"并不一定以一种干净的方式发生。有些框架非常轻,因为它们不会对你施加太多压力,你可以增量地产生控制。其他人规定了严格的条件,你要么按照他们的方式做,要么根本不做。

这里有很多类似框架的库和类似库的框架。

当一个框架"调用"你的代码时,通常意味着你已经遵循了框架本身制定的模式,你的代码槽进入了该模式中预定义的位置。

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

这里有一个图书馆电话:

// 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到底是什么。

最新更新