如何快速掌握一门框架

一、问自己

在这里插入图片描述

为什么选择学习此框架,使用它能解决哪些问题,有没有更适合的框架,与它相关联的框架有哪些?

其实这样问自己也很正常。学习一门框架不是看两篇博客就会的,也是需要花费一些时间的。一部分是看别人的文档,教程等,另一方面是自己思考和动手练习。

学习一门框架可能是工作需要,可能是更新个人技能树,可能为了找工作。不管出于何种目的,这些外部因素都是促使你不断学习的动力。框架并不是什么高深的东西,它也是来源于基础知识。框架的诞生肯定是为了解决某个问题,然后框架的开发者通过一些规则去实现框架,最后输出框架文档,并推广给更多开发者使用。

一门框架也并不是孤立存在的,往往是多种框架结合在一起使用的。例如SpringCloud家族包括很多子项目,Eureka 注册中心 、Hystrix服务熔断降级 、Zuul微服务网关 、Config Server分布式配置、Sleuth链路追踪等。多个框架的组合使用才能完成实际的应用场景。 例如满足前端功能需要,可能会用到多种框架和技术, Node.js、Vue、ElementUI、Vue Router、Vuex等。

二、入门

学习一门框架,前期主要掌握环境搭建,基础语法。掌握框架对异常、错误处理、断言、日志和调试的支持,对单元测试的支持。

在网络中如何寻找适合自己的学习资源呢?一些必备的技能必须掌握。掌握下面这些网站优化的命令很有必要。

搜索引擎命令:

blog.csdn.net springboot #csdn上搜索包含springboot关键字
allinurl:java mysql #完全包含java mysql关键词的页面
inurl:java mysql #包含java mysql关键词的页面
allintitle:oracle 甲骨文 #查询标题完全包含oracle 甲骨文关键词的页面
intitle:oracle 甲骨文 #查询标题包含oracle 甲骨文关键词的页面

我总结了一些自学的网络资源:

自学教程网站

视频网站

系列教程

  • github 上搜索系列教程
  • 各大博客网站:知乎、csdn、思否等搜索关键内容。

三、深入

官网学习

为什么要首先在官网进行学习呢?因为官网是第一手的学习资源。在搜索引擎中搜索xx官网,就可以找到对应的网站。有些伙伴可能会说好多框架的官网都是英文,看一会就没有动力了。学习技术最好要养成阅读英文文档的习惯。多年经验告诉,一些网上找不到解决方案的问题,往往在官网仔细搜索,都能找到问题的答案。

小窍门:谷歌浏览器有翻译功能,可以适当使用一下。

多动手

进入官网后,找 Getting startedExample字样的文档。官网的教程一般讲的都比较详细,先阅读官方文档,然后在动手练习,最后就可以做到举一反三。最重要的还是要抓住框架的共性,我们要在动手的同时去思考。比如前端开发,单页面最近本的通用问题有哪些?路由、模块化、组件化、前后台数据交互等。

四、实战

4.1代码托管平台

现在市面上的代码托管平台特别多,例如:Github,码云(Gitee), Gitlab,码市(coding)等,代码托管都免费。这么多的代码托管平台,优秀开源项目特别多,我们就要学会使用这些平台,寻找自己需要的项目。这里以Github使用为例。

搜热门

Githubexplore标签下,有 主题(Topic)热门(Trending)Topic 页面包括最新、最流行的讨论主题,有技术性的话题,也有一些非技术的话题,这里就是世界编程爱好者讨论技术的区域 。Trending 汇总了每天、每周、每月的热门项目和热门开发者。页面也支持多种筛选条件,方便我们快速找到心仪开源项目。

在这里插入图片描述
搜索栏搜索

Github搜索栏,按照搜索栏的语法,快速找到自己需要的内容,常用的命令如下:

stars:>=300 language:vue #搜项目
language:java location:china #搜索开发者
examples path:/docs/ language:vue #搜索vue项目中docs目录下包含examples内容的文件
issues:node #问题搜索
awesome springboot #搜索一些优秀的框架、教程、项目等

更多用法参考:Github上搜索信息

Github插件

Google浏览器添加一些插件,让我们在线查看项目结构,源码内容。插件有:OctotreeOctoLinkerSourcegraph 等。Sourcegraph 插件效果如下图

在这里插入图片描述

4.2选择开源项目

如何选择适合自己的开源项目?首先要明确目的选择哪类项目:系列教程型项目,综合应用的项目。

  • 系列教程一般是细化框架的每个功能点,更加深入的掌握框架的使用方法。
  • 综合应用关注点主要实战,不仅包括框架的一些特性,可能也会涉及到其他多种框架的使用。

其次如果寻找开源项目,要找比较活跃的项目,文档要丰富,代码提交记录也要较新一些。

在这里插入图片描述

4.3改造项目

学习最好的方式就是模仿,拿来主义没毛病,先掌握了已有项目,再由点及面掌握更多知识点。要改造项目首要阅读项目说明,理解项目是如何工作的。

掌握项目

1.阅读README.md,文档会说明项目实现了什么功能,使用了哪些技术和框架,也可能会说明项目搭建步骤。通过README.md我们对项目会有一个整体的认识。

2.项目根目录可能会包含doc目录,这个目录也会包含项目说明文档。

3.源码目录寻找单元测试,通过运行单元测试,掌握项目功能。

4.按照文档本地运行项目,用一个功能点分析项目的三流:数据流,业务流,控制流。

改造项目

以我改造博客项目为例。我有这些想法:首页分页接口默认返回15条数据,我想让分页接口返回9条数据;首页右侧我想添加自定义个人分类,联系站长,你可能感兴趣,友情链接等板块。想让博客在多终端自适应,保证样式的不错乱,修改后台接口等等。这里以修改默认分页为例。

1.猜想:a.后端一次获取所有数据,前端做分页展示。b.前端传递分页参数,获取当前页面的分页数据。

2.浏览器(谷歌)打开Debug调试窗口,查看请求http://www.mhtclub.com/api/hots?size=9可知,每页数据条数是前端传递的参数。

3.前端向后端发送获取分页数据的请求,那就要找前端代码。通过上面的请求提取关键字 api/hots,在IDE中全局搜索内容。找到的代码如下:

seajs.use('sidebox', function (sidebox) {
	sidebox.init({
        <#--latestUrl : '${base}/api/latests',-->
		latestUrl : '${base}/api/tags',
    	hotUrl : '${base}/api/hots',
		hotTagUrl : '${base}/api/hot_tags',
		latestCommentUrl:'${base}/api/hot_users',
        size :15,
        // callback
        onLoadHot : function (i, data) {
      		return jQuery.format(li_template, i + 1, data.id, data.title);
        },
        onLoadLatest : function (i, data) {
      		return jQuery.format(hotTag_li_template, i + 1, data.name, data.posts);
        },
		onLoadLatestComment : function (i, data) {
			return jQuery.format(hotuser_li_template, data.id, data.avatar, data.username);
		}
	});

看到这里答案已经很明确了,size属性就表示默认分页数。

4.问题解决了,现在回过头来看上面的这段代码。seajs 是什么东东,它是怎么工作的?使用搜索引擎会找到我们想要的答案。

例子很简单,我想说的是这种思维方式。最终改造后的博客项目如下图:
在这里插入图片描述

五、提升

5.1优雅的提问

遇到问题并不可怕,遇到问题才是提升个人能力的时候。

提问前

  • 尝试在网络中搜索你的问题,建议使用Google
  • 尝试在官方网站搜索相关问题。
  • 尝试阅读指导手册,常见问题文件等来查找答案。
  • 尝试结合自身经验,假设并通过试验来验证答案。
  • 建议阅读源代码来解决问题。

提问时

  • 礼多不怪,有时还是特别有帮助的。
  • 用清晰、精准的语句来阐述自己的问题。
  • 描述问题的现象,并说明你的猜想。
  • 说明你对问题的思考,并做过哪些尝试。

问题解决

向所有帮助过你的人发送一份邮件,详细描述问题是怎么发生的,中间做过哪些尝试,最终是怎样定位和解决问题的。并再一次向他们表示感谢。

5.2.提升个人能力

思考能力

学习的第一步就是模仿,跨过模仿的阶段进入闻一知十 ,这个阶段就会开始体现思考能力。首先要见多识广,掌握的东西多了,大脑在计算(思考)的时候都是基于已有知识进行重新排列组合的 。

  • 增加背景知识量,多阅读技术资讯,博客,开源项目源码等。
  • 提高知识熟悉程度,10万小时就可以塑造行业专家,也是有一些道理的。
  • 增强知识结构性,例如项目无法访问,我们会想到,服务是否启动,网络是否连通,端口是否可用等。
  • 提高对背景知识的梳理能力,通过工具Xmind整理知识,提高整理思维的效率。

搜索能力

现在社会,搜索能力越来越成为一个人的必备素养,大部分场景下,解决问题 ≈ 搜索。

搜索问题前需要明确两点:

  • 分析问题,因为一些问题并不能直接搜索到答案。
  • 将搜索的问题转化为关键词。

解决问题的能力

1.正确解决问题的方式:

分析问题 => 猜想 => 验证猜想 => 找到原因 => 构建解决方案 => 验证解决方案 => 解决

2.提升相关知识的掌握程度,分析与解决问题的能力就能明显提高。

有时困惑我们的问题在释给其他人听时候,突然就发现问题产生的原因。

六、出师

最后注意下面三个点,使用框架对你已不是难事。

6.1.在线问题定位

线上问题定位包括:日志分析,进程监控,远程调试。

Linux 服务器上的常用命令

history|grep docker #查看操作历史包括 docker字符串的命令
top #实时动态地查看系统的整体运行情况
df -h #查看磁盘使用情况
df -i #查看inode使用情况
free -m #示系统中物理上的空闲和已用内存
ps -elf | grep tomcat #查看进程统计信息
tail -f xx.log #循环读取文件内容
ll -ah #查看目录下所有文件
netstat -anp|grep 8080 #查看端口使用情况
ip addr #查看ip地址
6.2.版本问题

注意编译器版本、框架版本、服务器、各种工具包的版本问题。注意配置文件的使用细节,不同版本会有一些升级或者删改。当你怎么也检查不出配置文件的错在哪里的时候,找一些开源项目调试别人的代码,寻找答案。

6.3.了解容器技术

掌握一些微服务的知识相关技术,例如:Docker,Kubernetes 等,微服务在未来也是一个大热门,不管是项目构建,自动化测试,自动化部署都离不开容器技术的支撑。


不安分的猿人
孜孜不断的技术分享!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不安分的猿人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值