为什么选择学习此框架,使用它能解决哪些问题,有没有更适合的框架,与它相关联的框架有哪些?
其实这样问自己也很正常。学习一门框架不是看两篇博客就会的,也是需要花费一些时间的。一部分是看别人的文档,教程等,另一方面是自己思考和动手练习。
学习一门框架可能是工作需要,可能是更新个人技能树,可能为了找工作。不管出于何种目的,这些外部因素都是促使你不断学习的动力。框架并不是什么高深的东西,它也是来源于基础知识。框架的诞生肯定是为了解决某个问题,然后框架的开发者通过一些规则去实现框架,最后输出框架文档,并推广给更多开发者使用。
一门框架也并不是孤立存在的,往往是多种框架结合在一起使用的。例如家族包括很多子项目,Eureka 注册中心 、Hystrix服务熔断降级 、Zuul微服务网关 、Config Server分布式配置、Sleuth链路追踪等。多个框架的组合使用才能完成实际的应用场景。 例如满足前端功能需要,可能会用到多种框架和技术, Node.js、Vue、ElementUI、Vue Router、Vuex等。
学习一门框架,前期主要掌握环境搭建,基础语法。掌握框架对异常、错误处理、断言、日志和调试的支持,对单元测试的支持。
在网络中如何寻找适合自己的学习资源呢?一些必备的技能必须掌握。掌握下面这些网站优化的命令很有必要。
搜索引擎命令:
我总结了一些自学的网络资源:
自学教程网站
- 菜鸟联盟
- w3school
- 易百教程
视频网站
- 黑马程序员
- B站
- 百度网盘
系列教程
- github 上搜索系列教程
- 各大博客网站:知乎、csdn、思否等搜索关键内容。
官网学习
为什么要首先在官网进行学习呢?因为官网是第一手的学习资源。在搜索引擎中搜索,就可以找到对应的网站。有些伙伴可能会说好多框架的官网都是英文,看一会就没有动力了。学习技术最好要养成阅读英文文档的习惯。多年经验告诉,一些网上找不到解决方案的问题,往往在官网仔细搜索,都能找到问题的答案。
:谷歌浏览器有翻译功能,可以适当使用一下。
多动手
进入官网后,找 、字样的文档。官网的教程一般讲的都比较详细,先阅读官方文档,然后在动手练习,最后就可以做到举一反三。最重要的还是要抓住框架的共性,我们要在动手的同时去思考。比如前端开发,单页面最近本的通用问题有哪些?路由、模块化、组件化、前后台数据交互等。
4.1代码托管平台
现在市面上的代码托管平台特别多,例如:Github,码云(Gitee), Gitlab,码市(coding)等,代码托管都免费。这么多的代码托管平台,优秀开源项目特别多,我们就要学会使用这些平台,寻找自己需要的项目。这里以使用为例。
搜热门
在中 标签下,有 和 。 页面包括最新、最流行的讨论主题,有技术性的话题,也有一些非技术的话题,这里就是世界编程爱好者讨论技术的区域 。 汇总了每天、每周、每月的热门项目和热门开发者。页面也支持多种筛选条件,方便我们快速找到心仪开源项目。
在搜索栏,按照搜索栏的语法,快速找到自己需要的内容,常用的命令如下:
更多用法参考:Github上搜索信息
Github插件
浏览器添加一些插件,让我们在线查看项目结构,源码内容。插件有:、、 等。 插件效果如下图
4.2选择开源项目
如何选择适合自己的开源项目?首先要明确目的选择哪类项目:系列教程型项目,综合应用的项目。
- 系列教程一般是细化框架的每个功能点,更加深入的掌握框架的使用方法。
- 综合应用关注点主要实战,不仅包括框架的一些特性,可能也会涉及到其他多种框架的使用。
其次如果寻找开源项目,要找比较活跃的项目,文档要丰富,代码提交记录也要较新一些。
4.3改造项目
学习最好的方式就是模仿,拿来主义没毛病,先掌握了已有项目,再由点及面掌握更多知识点。要改造项目首要阅读项目说明,理解项目是如何工作的。
掌握项目
1.阅读,文档会说明项目实现了什么功能,使用了哪些技术和框架,也可能会说明项目搭建步骤。通过我们对项目会有一个整体的认识。
2.项目根目录可能会包含目录,这个目录也会包含项目说明文档。
3.源码目录寻找单元测试,通过运行单元测试,掌握项目功能。
4.按照文档本地运行项目,用一个功能点分析项目的三流:数据流,业务流,控制流。
改造项目
以我改造博客项目为例。我有这些想法:首页分页接口默认返回15条数据,我想让分页接口返回9条数据;首页右侧我想添加自定义个人分类,联系站长,你可能感兴趣,友情链接等板块。想让博客在多终端自适应,保证样式的不错乱,修改后台接口等等。这里以修改默认分页为例。
1.猜想:a.后端一次获取所有数据,前端做分页展示。b.前端传递分页参数,获取当前页面的分页数据。
2.浏览器(谷歌)打开调试窗口,查看请求可知,每页数据条数是前端传递的参数。
3.前端向后端发送获取分页数据的请求,那就要找前端代码。通过上面的请求提取关键字 ,在中全局搜索内容。找到的代码如下:
看到这里答案已经很明确了,属性就表示默认分页数。
4.问题解决了,现在回过头来看上面的这段代码。 是什么东东,它是怎么工作的?使用搜索引擎会找到我们想要的答案。
5.1优雅的提问
遇到问题并不可怕,遇到问题才是提升个人能力的时候。
提问前
- 尝试在网络中搜索你的问题,建议使用。
- 尝试在官方网站搜索相关问题。
- 尝试阅读指导手册,常见问题文件等来查找答案。
- 尝试结合自身经验,假设并通过试验来验证答案。
- 建议阅读源代码来解决问题。
提问时
- 礼多不怪,有时还是特别有帮助的。
- 用清晰、精准的语句来阐述自己的问题。
- 描述问题的现象,并说明你的猜想。
- 说明你对问题的思考,并做过哪些尝试。
问题解决
向所有帮助过你的人发送一份邮件,详细描述问题是怎么发生的,中间做过哪些尝试,最终是怎样定位和解决问题的。并再一次向他们表示感谢。
5.2.提升个人能力
思考能力
学习的第一步就是模仿,跨过模仿的阶段进入闻一知十 ,这个阶段就会开始体现思考能力。首先要,掌握的东西多了,大脑在计算(思考)的时候都是基于已有知识进行重新排列组合的 。
- 增加背景知识量,多阅读技术资讯,博客,开源项目源码等。
- 提高知识熟悉程度,10万小时就可以塑造行业专家,也是有一些道理的。
- 增强知识结构性,例如项目无法访问,我们会想到,服务是否启动,网络是否连通,端口是否可用等。
- 提高对背景知识的梳理能力,通过工具整理知识,提高整理思维的效率。
搜索能力
现在社会,搜索能力越来越成为一个人的必备素养,大部分场景下,解决问题 ≈ 搜索。
搜索问题前需要明确两点:
- 分析问题,因为一些问题并不能直接搜索到答案。
- 将搜索的问题转化为关键词。
解决问题的能力
1.正确解决问题的方式:
分析问题 => 猜想 => 验证猜想 => 找到原因 => 构建解决方案 => 验证解决方案 => 解决
2.提升相关知识的掌握程度,分析与解决问题的能力就能明显提高。
有时困惑我们的问题在释给其他人听时候,突然就发现问题产生的原因。
最后注意下面三个点,使用框架对你已不是难事。
6.1.在线问题定位
线上问题定位包括:日志分析,进程监控,远程调试。
Linux 服务器上的常用命令
6.2.版本问题
注意编译器版本、框架版本、服务器、各种工具包的版本问题。注意配置文件的使用细节,不同版本会有一些升级或者删改。当你怎么也检查不出配置文件的错在哪里的时候,找一些开源项目调试别人的代码,寻找答案。
6.3.了解容器技术
掌握一些微服务的知识相关技术,例如:Docker,Kubernetes 等,微服务在未来也是一个大热门,不管是项目构建,自动化测试,自动化部署都离不开容器技术的支撑。