JS的框架、库、插件有什么区别,分别有哪些代表?
在JavaScript的世界里,框架、库、插件很多时候是一种角色分类。先简单扯扯这几个分类,再深入看几个流行的例子。
框架(Framework)
框架提供一个现成的应用骨架,在此基础上的开发过程是丰富血肉的过程。前端JS框架往往已内建事件响应、客户端数据存储、数据绑定等功能。开发者可以快速着手实现业务逻辑,添加用户交互、产品功能、数据和内容等。
库(Library)
库是经过整理的函数集合。前端JS开发中用到的库常包含一些用于处理DOM元素、交互事件、cookie、动画、网络请求、字符串、日期等等的函数。开发者可以使用库组装自己的框架,或是分别完善产品的单元组件再拼装起来。
插件(Plugin)
插件一些时候和库同义,另一些时候直接提供部分的产品功能。比如在做静态博客时通过Disqus插件直接实现留言板。如果用过Wordpress,一定也在插件商店里搜索过各类插件。jQuery本身作为一个库也可以通过插件来扩展。很多即插即用的UI效果模版也可以看成是一个插件。
jQuery库
jQuery提供方法使用CSS选择器样式字符串来获取DOM元素,并且跨浏览器兼容。还包括事件处理器、动画、Ajax、链式操作等。在2006年发布时是前端开发革命性的里程碑。在开发时仍需要自己去实现应用结构(如MVC,MVVM等)。
Angular框架
Angular是谷歌开源的完整的MVC应用框架,使用HTML语言为模版,内建双向数据绑定用于同步模型与视图数据,加上依赖注入、控制器等等功能。使用Angular可以快速实现业务逻辑,结合MEAN栈在JS全栈开发中大放光彩。注意Angular1同2~5的差异还是很大的,2~5版使用TypeScript并加入模块化组件。
React库
Facebook于2013年出品的React库是第一个引入虚拟DOM的。React仅仅负责MVC中V(视图)的部分。开发中使用虚拟DOM和看起来很像HTML的JSX语法建立视图组件,通过props属性在虚拟的DOM组件间传递数据,建立state状态变量自动更新视图。非常适用于复杂的用户交互界面。由于React在视图上做到了一个极致,在其周围衍生出一个完整的生态环境,如Redux,Relay等库。
Vue框架
Vue结合了React和Angular的优点,使用虚拟DOM和状态抽象视图,并可以绑定数据。结合路由、状态管理等库可以高效完成完整的Web应用前端。Vue的学习曲线比Angular平滑,性能也有优势,这两年来发展很快。
Bootstrap的jQuery插件
在jQuery中调用Bootstrap提供的JS插件可以方便地实现已经写好的UI功能,如图片滚动等。
在JS的世界里,我们可以大致按如上分类来看框架、库、插件。但是如果你打开Bootstrap的中文主页,赫然的几个大字:“Bootstrap是最受欢迎的HTML、CSS和JS框架” 。。。Bootstrap仅仅负责UI样式和效果,为啥这里叫框架而不叫库呢?其实,人家想叫啥就叫啥。大多情况下框架的意思是说:“老铁,我给你的这把屠龙刀可以切菜、剁肉、削铅笔,不过要杀龙你还得自己去改改”。
js框架就是将常用的方法进行封装,方便调取使用。一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。js框架就是对js各种功能的封装和抽象,使得在使用的时候具有简便性和更好的兼容性,并且可以扩展框架中的内容,比如说jquery,这个就是框架
在框架中我们需要引用的各个类就是js库,为了实现某一个特效或者功能而引入的。
js插件是那些被前任写好可以极大提高自己代码质量以及页面展现效果的js文件。他们被写出来就是为了给大家方便使用的,假如你觉得自己写的代码足够好也可以自己封装一个js插件
比如jquery中的
添加一个全局函数,我们只需如下定义:
jQuery.foo = function() { alert'This is a test. This is only a test.'); };
调用的时候可以这样写: jQuery.foo(); 或 $.foo();
学习Javaweb开发是否需要全面学习计算机基础知识?
企业主流的Javaweb技术:JSP、EL、JSTL等过时技术(也要会,公司老项目巫妖维护等问题),新增Thymeleaf、Vue、Axios、自定义SSM框架等企业实际开发流行技术、
Servlet程序、Filter过滤器、Listener监听器、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等知识点。
首先要先学:
Java核心基础
- DB、DBMS、SQL的理解
- 常见数据库关系系统的对比和认识
- DML、DQL、DCL、DDL
- 数据的增删改查
- 数据库和表的管理
- DQL数据查询语言
- 分组查询、子查询、join查询、union查询等
- 常见函数
- 存储过程和视图
- 事务以及事务的隔离级别
- 触发器
- 索引和优化
- 贯穿案例:Employees员工管理系统
数据库关键技术
- DB、DBMS、SQL的理解
- 常见数据库关系系统的对比和认识
- DML、DQL、DCL、DDL
- 数据的增删改查
- 数据库和表的管理
- DQL数据查询语言
- 分组查询、子查询、join查询、union查询等
- 常见函数
- 存储过程和视图
- 事务以及事务的隔离级别
- 触发器
- 索引和优化
- 贯穿案例:Employees员工管理系统
Web网页技术
- HTML与CSS与JavaScript
- XML与Tomcat
- HTTP协议与Servlet
- Thymeleaf
- 会话控制
- Vue.js
- Ajax
- Filter
- Listener:ServletContextListener
学习编程语言本身并不需要太多计算机基础知识,因为编程语言本身就是打开计算机技术大门的钥匙,所以学习计算机相关技术往往也都是从编程语言开始的。
对于非计算机专业的同学来说,如果未来想进入IT互联网领域发展,选择学习Java会有比较多的就业机会,而且Java岗位对于人才类型的需求往往也比较多元化,但是要想通过学习Java来进入大厂,难度还是比较大的。
学习编程语言通常需要经过三个阶段,分别是基础语法阶段、主攻方向阶段和场景实践阶段,其中基础语法学习阶段并不需要太多计算机基础知识,但是到了主攻方向阶段和场景实践阶段,对于计算机基础知识的要求会明显提升,也可以说计算机基础知识对于技术人员的成长高度有较为直接的影响。
以JavaWeb开发为例,目前Web开发高度依赖云计算平台,而云计算进入到云原生阶段之后,开发人员需要了解分布式操作系统、数据库、容器、虚拟化、运维等方面的知识,而这些知识都属于计算机基础知识的范畴。
开发人员的日常开发工作主要分为两类,一类是功能实现,另一类是性能提升,其中功能实现是相对比较简单的,很多功能实现基本上就是完成增删改查等操作,但是性能提升相关的开发工作则需要开发人员具有更丰富的知识结构。
早期对于程序员的岗位划分往往以算法为分水岭,但是现在程序员的划分有了更多的维度,算法已经是程序员必须具备的基本能力了,比如目前大厂的人才招聘,不论是前端开发还是后端开发、运维开发等岗位,都会重点考察算法设计和实现的能力。
从这个角度来看,对于非计算机专业的同学来说,在学习编程语言的过程中,也一定要重视算法相关知识的学习,这对于进入中小厂,也有较为直接的影响。
最后,如果有计算机相关的问题,欢迎与我探讨交流。
完全不需要,直接从springboot开始,边学边用,跟着一些比较好的视频教程走一遍,不懂不会不熟练的地方多多练习多多请教。
不要贪多求全,这个教程不错那个文章挺好,分散了精力,知识不成体系,出了问题也不知道所以然,不知道解决思路。
最好加入群或者找个老师,不用找那种技术水平特别牛的,有三年工作经验的就不错。
不需要全面学习,我带过实习生,无专业背景,两个月即可独立完成一个小型网站完整的v模型过程实践。
但是面要广,什么都得讲些,许多对外行看似复杂的事,都可以使用平常人接触过的事和物去描述,包括有些看似复杂的算法,其实知道了也就那么回事,关键是数据流向,时间和空间的取舍。
再一个基于框架,省区了大部分轮子制造,但是也要说下这些轮子的原理,对问题和bug的调查都有帮助,关键还是看人,大学本科的基础,不是计算机专业的也足够了。
一年实践工作时间完全能超过大部分刚毕业的计算机专业的同学。