在项目中, 我们经常会用到库,用到框架, 但是, 我们有时候会停下来思考一下, 什么是库?什么是框架呢?我个人觉得这个一个值的讨论的问题。
库: 在我的理解里面 就是一个工具的集合, 里面放有很多工具,如果要使用工具 直接在存放工具的仓库里面拿出来使用就行, 就想jquery一样, Jquery里面封装了很多方法,比如如果我们要获取一个dom元素 我们 如果使用原生的方法直接就是, document.queryselector(选择器) 如果我们使用jquery的话直接 $() 这种方式去去获取dom元素, 并且 jquery 里面封装 发送ajax请求的方法, 解决了原生的语法不利于书写并且生产效率低的问题。
框架: 在我的理解中 框架就是一整套的解决方案, 就相当于一个榨汁机, 我只关心 我给这个榨汁机一个水果,我不用关心这个榨汁机是如何实现的, 我最后只想通过这杯榨汁机 输入水果拿到果汁, 这就是框架。 框架就是一整套解决方案, 专门对某一类问题,提供一整套的解决方案。 就像vue这个框架。
vue这个框架 就是一整套的解决方案,包括数据相应式, 代码的生产打包 环境变量的配置,就相当于榨汁机的配置按钮, 我如果想要五分钟之后榨汁我就设置五分钟的时间,并且 这台榨汁机相当于一个扩展型的榨汁机, 也就是说这个榨汁机有很多第三方配件,并且这个配件是可以拆卸更换,或者你都可以成为第三发配件的制造商。给这个榨汁机扩展功能,但,我们要准守这个榨汁机的接口,比如 这个榨汁机的 口径式3cm 你必须使用3cm口径 去做对应的配件,这就是准守框架的协议, 当然, 你也可以使用框架的工具来帮助你更好的实现这个第三方工具。
此时 我们就可以 拿出这两个概念,库 框架, 框架里面可以包含库的存在,就像这个榨汁机,里面的切削水果的过程, 我可以利用起来。 库 里面可以放下 框架, 如果 我把框架高度集成 并且 封装, 然后放到我的 工具库里面, 用的时候就可以直接在工具库中拿到框架,直接调用。
当然 库里面的工具可以制造框架,但是框架如果要拆开 ,那么就会成为一个一个的工具,让后存放到库里面, 这点在生活中也是经常能够看到的,
但,如果我们从柏拉图的理念论中找到启发, 假如 我们要用锤子把钉子钉在桌面上,但是 此时我们的旁边没有锤子,只有一块手表的话,我们拿起手表砸向钉子,此时的手表能叫手表么? 此时我们赋予了这个手表另一个使命,那就是锤子的功能, 那我们把这种思想带入框架中, vue虽然式一个框架,但是 我们我们式否可以把vue当成一个工具使用, 此时,如果我的代码中需要vue的响应式 或者 vue的脚手架打包, 那么 我们是否可以把vue当成一个工具去使用,或者 我们使用的vue 做成的html的页面, 我们对生成的页面再去做下一步的处理, 此时的 vue 他虽然名称是框架, 但是 想对于我的 项目来说 其实 我们只是把vue当成了一种工具,如果我们再次扩大一下想象, vue其实也只是一个做网页的工具。 只是 做网页的工具帮助我们更高效的生产, 并且帮助我们解决一系列的问题,那么 此时他又有了框架的概念。