一个框架给你打电话是什么意思?
What does it mean for a framework to call you?
我的目标是完全理解库和框架之间的区别
我已经对两者的区别有了基本的了解。除了通常给出的一个基本描述:
"The key difference between a library and a framework is "控制反转”。当你从库中调用方法时,你处于控制之中。但是对于框架,控制是反转的:框架调用你”
programcreek.com
一个框架给你打电话是什么意思?
我已经研究了调用函数、方法等的含义,现在已经完全理解了...但是我无法理解也找不到任何关于框架调用的含义的信息叫你
我尝试用多种不同的方式来查找这个问题,但我能找到的只有:MFC Framework how a framework calls your code。我无法在我熟悉的语言或框架领域找到任何东西
可以说 任何足够完整的库都无法与框架区分开来。反过来,任何足够薄的框架都可以像库一样对待。
简而言之,库越多地规定您如何编码、遵循哪些实践和约定以及如何组织您的代码,它就越像一个框架。
"inversion of control" 不一定以干净利落的方式发生。一些框架非常轻巧,因为它们不会对您施加太多压力,您可以逐步放弃控制权。其他人规定了严格的条款,你要么按他们的方式做,要么根本不做。
这里有大量的类框架库和类库框架。
当框架 "calls" 你的代码时,通常意味着你遵循了框架本身制定的模式,并且你的代码插入了该模式中的预定义位置。
这并不是说库也不会调用您的代码,它们只是对发生的地点、时间和方式施加了更少的限制。
所以这是一个库调用:
// 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 是什么。
我的目标是完全理解库和框架之间的区别
我已经对两者的区别有了基本的了解。除了通常给出的一个基本描述:
"The key difference between a library and a framework is "控制反转”。当你从库中调用方法时,你处于控制之中。但是对于框架,控制是反转的:框架调用你” programcreek.com
一个框架给你打电话是什么意思?
我已经研究了调用函数、方法等的含义,现在已经完全理解了...但是我无法理解也找不到任何关于框架调用的含义的信息叫你
我尝试用多种不同的方式来查找这个问题,但我能找到的只有:MFC Framework how a framework calls your code。我无法在我熟悉的语言或框架领域找到任何东西
可以说 任何足够完整的库都无法与框架区分开来。反过来,任何足够薄的框架都可以像库一样对待。
简而言之,库越多地规定您如何编码、遵循哪些实践和约定以及如何组织您的代码,它就越像一个框架。
"inversion of control" 不一定以干净利落的方式发生。一些框架非常轻巧,因为它们不会对您施加太多压力,您可以逐步放弃控制权。其他人规定了严格的条款,你要么按他们的方式做,要么根本不做。
这里有大量的类框架库和类库框架。
当框架 "calls" 你的代码时,通常意味着你遵循了框架本身制定的模式,并且你的代码插入了该模式中的预定义位置。
这并不是说库也不会调用您的代码,它们只是对发生的地点、时间和方式施加了更少的限制。
所以这是一个库调用:
// 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 是什么。