【译】框架与库的差异

网友投稿 735 2022-08-26

【译】框架与库的差异

【译】框架与库的差异

开发者经常互换使用术语“库”和“框架”。但是,两者是有区别的。

“框架”和“库”都是某人编写的代码,用于解决常见的问题。

比如,你有一个处理字符串的程序。你决定保持你代码的DRY(don't repeat yourself),然后编写像下面可复用的功能代码:

function getWords(str) { const words = str.split(' '); return words;}function createSentence(words) { const sentence = words.join(' '); return sentence;

那么恭喜你!你创建了一个库。

框架和库没有多么神奇。库和框架都是由某人编写的可复用的代码。两个的目的都是为了帮助你更快捷地解决常见的问题。

我常常使用​​房子​​作为网络开发概念的比喻。

库就像去宜家家居(IKEA,一家知名的家居零售商)购物一样。你已经有了个家,但是你需要布置些家具。你不想从头制作属于自己的桌子。Ikea允许你选择并购买你想要的东西到你家。你在掌控之中。

另一方面,框架就像建造一个样板房。在架构和设计方面,你有一套蓝图和一些有限的选择。最终,承包商和蓝图处于控制之中。然后他们会告诉你何时何地你可以提供自己的意见。

技术的差异

框架和库之间技术差异在于一个​​控制反转​​的的术语。

​​当你使用库的时候,你负责应用程序的流程。此时,你正在选择何时何地调用库。当你使用框架的时候,框架负责流程。此时,框架提供了一些插入代码的地方,但是它会根据需要去调用你插入的代码。​​

我们看个使用jQuery(一个库)和Vue.js(一个框架)的例子。

使用jQuery

// index.html

// app.js// A bunch of our own code,// followed by calling the jQuery librarylet error = false;const errorMessage = 'An Error Occurred';$('#myButton').on('click', () => { error = true; // pretend some error occurs and set error = true if (error) { $('#app') .append(`

${errorMessage}

`); } else { $('#error').remove(); }});

留意我们是怎么使用jQuery的。我们告诉自己的程序我们想调用它。这就像我们去物理图书馆,然后从书架上拉出我们想要的书籍。

这并不是说jQuery函数在我们调用它们的时候不需要某些输入,但是jQuery本身就是这些函数的库。我们负责(调用)。

使用Vue.js

// index.html

// app.jsconst vm = new Vue({ template: `

{{ errorMessage }}

`, el: '#vue-example', data: { error: null, errorMessage: 'An Error Occurred', }, methods: { checkForErrors() { this.error = !this.error; }, },});

使用vue,我们必须填补空白。Vue的构造函数是具有某些特定属性的对象。它会告诉我们它需要什么,然后在幕后,Vue决定何时需要它。Vue反转程序的控制。我们将代码插入Vue。Vue负责(调用)。

是库还是框架的区别在于是否存在控制反转。

关于自以为是的说明

你经常会听到被描述为“自以为是”或“没有见解”的框架和库。这些术语是主观臆断。他们试图定义开发者在构造时所拥有的自由度。

框架更加自以为是,因为——根据定义——​​控制反转​​需要应用设计自由的让步。

同样的,某种程度上,某种观点的主观程度是主观的。比如,我个人认为Angular是一个自以为是的框架,而Vue.js是一个不那么自以为是的框架。

总结

框架和库都是由某人编写的代码,有助你以更加简洁的方式完成一些常见的任务框架反转了程序的控制。它告诉开发者他们需要什么。库就不是这样。程序员在需要的地方和时间点调用库。库或框架留给开发者的自由度将决定着它是多“自以为是”。

谢谢阅读!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:algorithm 题集四 (16.06.10)
下一篇:【译】20个更有效地使用谷歌搜索的技巧
相关文章

 发表评论

暂时没有评论,来抢沙发吧~