框架探索如何学习框架
Posted 黑黑白白君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框架探索如何学习框架相关的知识,希望对你有一定的参考价值。
在工作中,经常会听到,这个项目用了什么框架、为什么不用另外一种框架等等的话语,因此想探究一下框架是什么,如何读懂一个框架,以及应该怎么使用框架。
1)了解框架
1.1 什么是框架?
从宏观的层面来看, 软件是成品, 编程语言是制作软件的工具,而框架就是软件的雏形, 是软件的一个抽像的形态。
然而从微观的角度来做细致的观察, 将框架这一概念从里到外理解透彻就没那么容易了。
「框架」一词在编程术语中使用的频繁程度绝对排前五, 框架的数量也成百上千倍于编程语言,任何一门编程语言都会搭配上一定数据的框架用以提升开发软件产品的效率。 随便举几个例子:
- javascript:jquery 、angular、seajs、vue ……
- Java:spring、struts、 hibernate、 junit ……
- C#:asp.net、wpf、winform、asp.net mvc ……
- python:django、diesel、dpark、webpy ……
- php:ci、yii、zend、laravel……
先把框架的概念定义的一下: 在程序设计中, 框架是构成一类特定软件可复用设计的一组相互协作的类。
- 这一概念的定义出自软件开发行业一本著名的书籍《设计模式》。粗略一看会觉得这个定义极度抽像,难以理解 ,很难根据描述在脑子中形成具体的概念。
其实我们可以把这个定义拆分为三个部份来逐个分析:
- 构成某一类特定的软件
- 一组可复用的类
- 这组类是相互协作的
只要是满足这三点的程序代码就可以被称之为框架。 事实上只要满足前面二点, 第三点也就无条件满足了, 一组可复用的类不相互协作的可能性几乎为零, 换句话说只要满足前面二点就肯定是一个框架了。
框架是一个很抽像并且边界很难界定的概念,不同的人都会有不同的理解。
- 我们自己也可以开发框架, 比如说用来解决某些常见且工作经常重复的问题,如网站后台管理系统,都是一系列增删查改的操作, 因此可以以解决这个需求为目标开发一套通用的系统,适用与所有的网站后台管理系统,而且也只适用于网站后台管理系统, 我们可以把它称之为「xxx网站管理系统框架」。
脱离软件开发领域, 我们可以将框架这一概念泛化,比如我们可以说框架是「做某类特定事情的流程和资源」。
1.2 为什么要使用框架?
软件系统随着业务的发展,变得越来越复杂,不同领域的业务所涉及到的知识、内容、问题非常非常多。如果每次都从头开发,那都是一个很漫长的事情,且并不一定能将它做好。团队协作开发时,没有了统一标准,大家各写各的,同样的重复的功能到处都是。由于没有统一调用规范,很难看懂别人写的代码,出现Bug或二次开发维护时,根本无从下手。
不论是什么开发框架,都是为现实不同的业务功能而创建的。而一个成熟的框架,它是模板化的代码,它会帮我们实现很多基础性的功能,我们只需要专心的实现所需要的业务逻辑就可以了。而很多底层功能操作,就可以完完全全不用做太多的考虑,框架已帮我们实现了。
- 好的开发框架能提高企业的竞争能力,包括降低开发成本、提高产品质量、改善客户满意程度、控制开发进度等。
- 另外对于团队成员的变动,也不用太过担心,框架的代码规范让我们能轻松的看懂其他开发人员所写的代码。
同时,开发框架也是某一领域为实现某种业务的知识积累,它是一种持续性的活动,随着特定业务功能实现而创建,且跳出软件开发周期而存活。
一个成熟的框架,不单单只是代码而已,它除了将某一领域业务的基础功能以代码的方式实现外,还必须编写对应的文档、模型、流程图、数据字典、开发使用说明等一系列的文档来支撑,这样的框架才更加成熟和健壮。
1.3 框架的特点
- 代码模板化:框架一般都有统一的代码风格,同一分层的不同类代码,都是大同小异的模板化结构,方便使用模板工具统一生成,减少大量重复代码的编写。在学习时通常只要理解某一层有代表性的一个类,就等于了解了同一层的其他大部分类结构和功能,容易上手。
- 重用:开发框架一般层次清晰,不同开发人员开发时都会根据具体功能放到相同的位置,加上配合相应的开发文档,代码重用会非常高, 想要调用什么功能直接进对应的位置去查找相关函数,而不是每个开发人员各自编写一套相同的方法 。
- 高内聚(封装):框架中的功能会实现高内聚,开发人员将各种需要的功能封装在不同的层中,给大家调用,而大家在调用时不需要清楚这些方法里面是如果实现的,只需要关注输出的结果是否是自己想要的就可以了。
- 规范
- 可扩展
- 可维护
- 通用性:在框架中,我们一般都会实现一些同质化的基础功能,比如权限管理、角色管理、菜单管理、日志管理、异常处理…,或该行业中所要使用到的通用功能,使框架能应用到某一行业或领域中,而不是只针对某公司某业务而设定。
2)如何学习框架?
学习思路:
- 首先要用得比较熟
- 然后去了解框架的基本原理/结构,熟悉框架的设计思想、关键部分的实现思路以及整个框架的知识体系
- 源码解读以及造轮子
- 自己可尝试仿照写一个很简单的小框架
2.1 常见的前端框架
常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等。
- 关于Vue框架的学习可移步《【前后端分离项目实战】从零构建后一个完整的后台项目之vue的学习(一)》。
2.2 常见的后端框架
下面的表格总结了 web 开发的最佳后端框架:
- 关于Django框架的学习可移步《【前后端分离项目实战】从零构建后一个完整的后台项目之vue的学习(一)》、《【实战学习(三)】开源项目学习之Django框架简介以及启动》。
【部分内容参考自】
- 框架是什么:https://cloud.tencent.com/developer/article/1091462
- 框架VS架构:https://zhuanlan.zhihu.com/p/339896310
- 什么是开发框架:http://www.aizhengli.com/allempty-csharp-framework-design/392/%E4%BB%80%E4%B9%88%E6%98%AF%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6.html
- 你们是怎么分析框架或库的源码的?(前端):https://segmentfault.com/q/1010000000414888
- 如何学习框架?:https://www.zhihu.com/question/61365606
- 十大后端框架:https://blog.back4app.com/zh/%E5%8D%81%E5%A4%A7%E5%90%8E%E7%AB%AF%E6%A1%86%E6%9E%B6/
以上是关于框架探索如何学习框架的主要内容,如果未能解决你的问题,请参考以下文章
深入探索Glide图片加载框架:做了哪些优化?如何管理生命周期?怎么做大图加载?