框架给您打电话意味着什么?

时间:2020-02-25 23:38:56

标签: javascript callback frameworks

我的目标是充分了解库和框架之间的差异

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

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

框架给您打电话意味着什么?

我已经完成了关于调用函数,方法等的含义的研究,现在已经有了充分的了解...但是我无法理解也找不到任何有关框架调用您的含义的信息。

我已经尝试用多种不同的方式来查找这个问题,而我所能找到的就是:MFC Framework how a framework calls your code。我无法在我熟悉的语言或框架中找到任何东西

1 个答案:

答案 0 :(得分:0)

可以说任何足够完整的库都不能与框架区分开。通过反转,可以将任何足够薄的框架都视为库。

简单来说,一个库对您如何编码,应遵循的惯例和约定以及如何组织代码的指示越多,它越类似于框架。

“控制权倒置”不一定以明确的方式发生。有些框架很轻便,因为它们不会对您造成太大的负担,您可以逐步产生控制权。其他人则规定了严格的条件,就是要么按照自己的方式做,要么根本不做。

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

当框架“调用”您的代码时,通常意味着您已经遵循了框架本身布置的模式以及代码槽进入该模式中的预定义位置。

这并不是说库也不会调用您的代码,它们只是在更少的时间,时间和方式上施加了限制。

这是一个库调用:

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

相关问题