HTML、CSS 和 JavaScript等前端开发技术,必备入门级学习书单

说到前端技术,我们通常都会说到\”三大块\”:HTML、CSS、JavaScript,前端最核心的三项技术。

从逻辑上讲,一个网页可以视为由这三项技术实现的三层架构有机结合体。

· 结构层:表述一个页面中有哪些信息,以及信息之间的关系,由HTML实现。

· 表现层:决定了页面中的信息会以怎样的外观呈现出来,由CSS实现。

· 行为层:控制了页面如何与用户进行交互,由JS实现。

除了基本的\”三大块\”之外,作为前端开发工程师,还需要掌握以下知识点:

· HTTP相关:由于前端资源都是浏览器通过网络下载的,所以有必要了解相关的网络协议。

· 前端性能优化:让网页更快,减少用户的等待,是前端工程师面临的重要课题,需要掌握前端性能优化相关的工具和方法。

· 前端框架:Web业务日趋复杂,对前端开发提出更高要求。学会使用框架开发,很好地解决了jQuery 称霸时代开发周期太长,复用性低等问题,大大提升了效率。

· Node相关:在Node.js之前,没有任何一种脚本语言能贯穿前后端平台——Node.js可以用JS写后台,这对于熟悉JS的前端人员而言会更容易掌握,并且用Node.js可以快速搭建本地服务器。这是很多前端开发者青睐这项技术的原因。

以下,人邮君就围绕前端开发所需技能列出一份荐书清单,并按照豆瓣评分和读者评价给出了推荐指数,请签收!

超文本标记语言(Hyper Text Markup Language,HTML),用于描述超文本中内容的显示方式,如文字以什么颜色、大小来显示等。HTML从1.0到5.0经历了巨大的变化,已经成为了一种非常成熟的标记语言。

《HTML5权威指南》

推荐指数:☆☆☆☆

作者:[美]Adam Freeman 译者:谢廷晟 牛化成 刘美英

本书是系统学习网页设计的参考图书,全书分为五部分:

· 介绍学习需要的预备知识和HTML、CSS和JavaScript的进展;

· 讨论HTML元素,并详细说明了HTML5中新增和修改的元素;

· 阐述CSS,涵盖了所有控制内容样式的CSS选择器和属性,并辅以大量代码示例和图示;

· 介绍DOM,剖析如何用JavaScript操纵HTML内容;

· 讲解Ajax、多媒体和canvas元素等HTML5特性。

本书面向初学者和中等水平Web开发人员,是牢固掌握HTML5、CSS3和JavaScript的必读之作。

《HTML5程序设计(第2版)》

推荐指数:☆☆☆

作者:[荷]Peter Lubbers [美]Brian Albers [美]Frank Salim 译者:柳靖 李杰 刘淼

本书主要内容包括:

· HTML5历史背景、新的语义标签及与以往HTML版本相比的根本变化;

· HTML5设计原理;

· SVG和拖放API相关内容;

· 逐一讨论HTML5的Canvas、Geolocation、Communication、WebSocket、Forms、WebWorkers、Storage等API的使用;

· 探索了离线Web应用并展望了HTML5未来的发展前景。

本书面向有一定经验的Web应用开发人员,对HTML5及未来Web应用技术发展有浓厚兴趣的读者也可以学习参考。

级联样式表(Cascading Style Sheet)简称\”CSS\”,通常又称为\”风格样式表(Style Sheet)\”,是用来控制网页外观的一门技术。各种物联网设备,不论屏幕尺寸大小,只要有浏览器就要用到CSS。

《HTML5与CSS3基础教程(第8版)》

推荐指数:☆☆☆☆

作者:[美]Elizabeth Castro [美]Bruce Hyslop 译者:望以文

本书是讲解HTML和CSS入门知识的经典畅销书,全面系统地阐述了HTML5和CSS3基础知识以及实际运用技术,通过大量实例深入浅出地分析了网页制作的方方面面。主要内容有:

· 介绍文本、图像、链接、列表、表格、表单等网页元素;

· 介绍如何为网页设计布局、添加动态效果等;

· 调试和发布;

· 书中的完整代码示例,以及更多实例及进阶参考资料(配套网站)。

通过学习本书,零起点读者即可创建网站,而中水平的开发人员也可以快速了解HTML5新元素、CSS3的奇幻效果、响应式Web设计以及各种最佳实践。

《CSS揭秘》

推荐指数:☆☆☆☆☆

作者:[希]LEA VEROU 译者:CSS魔法

· 本书是一本注重实践的教程,作者为我们揭示了47个鲜为人知的CSS技巧;

· 主要内容包括背景与边框、形状、视觉效果、字体排印、用户体验、结构与布局、过渡与动画等;

· 本书将带领读者循序渐进地探寻更优雅的解决方案,攻克每天都会遇到的各种网页样式难题。

《CSS揭秘》是前端工程师、网页开发人员的进阶必备书籍。

《CSS世界》

推荐指数:☆☆☆☆

作者:张鑫旭

本书主要内容包括:

· 结构、内容、美化装饰等方面大量的CSS知识点;

· 通过大量的实战案例,详尽解析CSS的相关知识与常见问题;

· 专门的配套网站进行实例展示、问题答疑。

作为一本CSS深入学习的书,书中介绍大量许多前端开发人员都不知道的CSS知识点。通过阅读本书,读者会对CSS世界的深度和广度有一个全新的认识。

《CSS权威指南(第四版)(上下册)》

推荐指数:☆☆☆☆

作者:[美]Eric A. Meyer [美]Estelle Weyl 译者:安道

· 本书全面阐述了 CSS 的实现方式,深入分析了最新的 CSS 规范;

· 展示了如何通过布局、过渡和动画、边框、背景、文本属性,以及许多其他工具和技术来改善用户体验、加快开发速度、避免潜在的错误;

· 如果你是网页设计师或应用开发者,对复杂的页面样式、改进可访问性以及节省时间和精力感兴趣,那你决不能错过这本书。

JavaScript是一种解释型的、基于对象的脚本语言,它能够将网页中的文本、图形、声音和动画等各种媒体形式捆绑在一起,形成一个紧密结合的信息源。无论是桌面开发,还是移动应用,JavaScript都是必须掌握的技术。

《JavaScript高级程序设计(第3版)》

推荐指数:☆☆☆☆☆

作者:[美]Nicholas C.Zakas 译者:李松峰 曹力

本书承继了之前版本全面深入、贴近实战的特点,讲解了JavaScript语言的核心,展示了现有规范及实现为开发Web应用提供的各种支持和特性。本书主要内容包括:

· 解读JavaScript实现各个组成部分;

· 阐述JavaScript面向对象编程;

· 剖析DOM、BOM及浏览器事件模型;

· Web应用基本数据格式JSON、XML及其存取;

· Ajax、Comet服务器端通信和基于File API的拖放式文件上传;

· ECMAScript 5定义的新核心语言特性;

· HTML5涵盖的表单、媒体、Canvas(包括WebGL);

· Selectors、Web、Workers、地理定位及跨文档传递消息等新API;

· 离线应用及客户端存储(包括IndexedDB);

· 维护、性能、部署相关的开发实践;

· 新兴API及ECMAScript Harmony展望。

作为JavaScript技术经典名著,《JavaScript高级程序设计(第3版)》可以说是JavaScript最权威的入门书籍了

《JavaScript DOM编程艺术(第2版)》

推荐指数:☆☆☆☆

作者:[英]Jeremy Keith [加]Jeffrey Sambells 译者:杨涛 王建桥 杨晓云等

本书是超级畅销书的升级版,由倡导Web标准的领军人物执笔,揭示了前端开发的真谛,是学习JavaScript和DOM开发的必读之作。本书主要内容包括:

· JavaScript和DOM的基本知识;

· 通过几个实例演示了专业水准的网页开发技术;

· 透彻阐述了平稳退化等一批至关重要的JavaScript编程原则和实践;

· 全面探讨了HTML5以及jQuery等JavaScript库。

通过阅读本书,读者将看到JavaScript、HTML5和CSS如何协作来创建易用的、与标准兼容的Web设计,以及掌握使用JavaScript和DOM通过客户端动态效果和用户控制的动画来加强Web页面的必备技术;同时,还将对如何利用库提高开发效率有全面深入的理解。

《你不知道的JavaScript》

推荐指数:☆☆☆☆☆

作者:[美]Kyle Simpson 译者:赵望野 梁杰

本书深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。

· 《你不知道的JavaScript(上卷)》介绍了该系列的两个主题——\”作用域和闭包\”以及\”this和对象原型\”。掌握了这些知识之后,无论什么技术、框架和流行词语,你都能轻松理解。本书讲解通透深入,是入门必备书籍

· 《你不知道的JavaScript(中卷)》主要介绍了类型、语法、异步和性能。

· 《你不知道的JavaScript(下卷)》主要介绍了入门知识和对ES6及未来发展趋势的展望。

本书既适合JavaScript语言初学者阅读,又适合经验丰富的JavaScript开发人员深入学习。

《Head First JavaScript程序设计》

推荐指数:☆☆☆☆

作者:[美]Eric T. Freeman [美]Elisabeth Robson 译者:袁国忠

· 本书语言和版式活泼,内容讲解深入浅出,是难得的JavaScript入门书;

· 本书内容涵盖JavaScript的基本知识以及对象、函数和浏览器文档对象模型等高阶主题;

· 书中配备了大量有趣的实例、图示和练习,让读者轻轻松松掌握JavaScript。

本书的读者对象为JavaScript入门读者以及网页设计入门者。

““““`

《JavaScript忍者秘籍 第2版》

推荐指数:☆☆☆☆☆

作者:[美]John Resig [美]Bear Bibeault [美]Josip Maras 译者:一心一译前端小组

本书共分4个部分,从不同层次讲述了逐步成为JavaScript高手所需的知识:

· 本书从JavaScript语言及重要的特性谈起,由浅入深地探讨了函数、作用域、闭包、生成器函数、对象、数组、模块化、JavaScript与Web页面的交互以及事件等主题;

· 引导读者更加深入地了解JavaScript的方方面面,充分展示了JavaScript语言的各种特性;

· 本书结合ECMAScript 6和7的相关概念,涵盖了流行的JavaScript框架所使用的技术。

本书适合具备一定JavaScript基础知识的读者阅读,也适合从事程序设计工作并想要深入探索JavaScript语言的读者阅读。

《JavaScript设计模式》

推荐指数:☆☆☆☆

作者:张容铭

本书共分六篇四十章:

· 讨论了几种函数的编写方式,体会JavaScript在编程中的灵活性;

· 讲解了面向对象编程的知识,其中讨论了类的创建、数据的封装以及类之间的继承;

· 探讨了各种模式的技术,如简单工厂模式,包括工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式,以及外观模式,包括适配器模式。

· 讲解了几种适配器、代理模式、装饰者模式和MVC模式,讨论了如何实现对数据、视图、控制器的分离。

· 在讲解MVP模式时,讨论了如何解决数据与视图之间的耦合,并实现了一个模板生成器;

· 讲解MVVM模式时,讨论了双向绑定对MVC的模式演化。

本书几乎包含了关于JavaScript设计模式的全部知识,是进行JavaScript高效编程必备的学习手册。

《JavaScript面向对象精要》

推荐指数:☆☆☆☆☆

作者:[美]Nicholas C.Zakas 译者:胡世杰

全书共6章,内容简洁而精妙,关注面向对象的原理和ES5对象新特性,帮助那些已经熟知面向对象编程的读者掌握这些概念是如何在JavaScript中工作的。

· 本书深入探讨了原始类型和引用类型、函数、对象、构造函数和原型对象、继承和对象模式等主题和特性;

· 你将学到JavaScript独特的面向对象的编程方式;

· 你将学到抛弃类的概念和基于类的继承,学习基于原型的继承和构造函数;

· 你将学会如何创建对象、定义自己的类型、使用继承以及其他各种操作来充分使用对象。

总而言之,你将学到JavaScript语言并进行专业编程所需熟知的一切。本书适合熟悉面向对象编程的概念并希望将其应用于JavaScript的开发者阅读,也适合JavaScript新手学习参考。

《锋利的jQuery(第2版)》

推荐指数:☆☆☆☆

作者:单东林 张晓菲 魏然

· 本书介绍了jQuery的各种函数和方法调用;

· 读者可以系统地掌握jQuery的选择器、DOM操作、事件和动画、AJAX应用、插件、jQuery Mobile、jQuery各个版本变化、jQuery性能优化和技巧等知识点,并结合每个章节后面的案例演示进行练习;

· 本书的第8章将前7章讲解的知识点和效果进行了整合,打造出一个非常有个性的网站,并从案例研究、网站材料、网站结构、网站样式和网站脚本等方面指导读者参与到项目建设中来。

《锋利的jQuery(第2版)》适合所有对jQuery技术感兴趣的Web设计者和前端开发人员阅读和参考。

Node.js是建立在Chrome浏览器的JavaScript运行时基础上,用于快速构建可扩展的网络应用的平台。Node旨在帮助开发者编写异步的、事件驱动的应用。在Node中,每一个请求都是异步的,并且几乎所有的I/O都是非阻塞的。因此,Node应用非常高效率,能够处理的\”并发\”连接的数量也很庞大。

《Node.js实战(第2版)》

推荐指数:☆☆☆

作者:[英]Alex Young [美] Bradley Meck [美] Mike Cantelon [美] Tim Oxley [美] Marc Harter [美] T.J.Holowaychuk [美] Nathan Rajlich 译者:吴海星

· Node.js核心框架贡献者力作 ;

· 展示Node核心技巧 ;

· 涵盖前端构建系统、Web框架选择、数据库交互和Web程序测试与部署等全栈开发所需技术。

本书是Node.js的实战教程,涵盖了为开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。从搭建Node开发环境,到一些简单的演示程序,到开发复杂应用程序所必不可少的异步编程,第2版介绍了全栈开发者所需的全部技术,可作为入门书籍。

《深入浅出 Node.js》

推荐指数:☆☆☆☆☆

作者:朴灵

《深入浅出Node.js》从不同的视角介绍了 Node 内在的特点和结构。由首章Node介绍为索引,涉及Node的各个方面,主要内容包括:

· 模块机制的揭示;

· 异步I/O实现原理的展现;

· 异步编程的探讨;

· 内存控制的介绍;

· 二进制数据Buffer的细节;

· Node中的网络编程基础;

· Node中的Web开发;

· 进程间的消息传递;

· Node测试以及通过Node构建产品需要的注意事项。

附录介绍了Node的安装、调试、编码规范和NPM仓库等事宜。本书适合想深入了解 Node的人员阅读,是进阶必备书籍。

《HTTP权威指南》

推荐指数:☆☆☆☆☆

作者:[美]David Gourley [美]Brian Totty [美]Marjorie Sayer [美]Sailu Reddy [美]Aushu Aggarwal 译者:陈涓 赵振平

本书由具有多年实践经验的专家编写,通过简洁语言和大量翔实的细节图解帮助读者形象地理解Web幕后所发生的事情,详细说明了Web上每条请求的实际运行情况,主要内容包括:

· HTTP方法、首部以及状态码;

· 优化代理和缓存的方法;

· 设计Web机器人和爬虫的策略;

· Cookies、认证以及安全HTTP;

· 国际化及内容协商;

· 重定向及负载平衡策略。

本书深入说明了Web的工作原理,内容全面,讲解细致,是HTTP协议及相关Web技术方面的著作。

《图解HTTP》

推荐指数:☆☆☆☆

作者:[日]上野 宣 译者:于均良

《图解HTTP》对HTTP协议进行了全面系统的介绍,可以说是一本讲解HTTP协议的神书,简单有趣,图文并茂,生动形象,适合入门,主要内容包括:

· HTTP协议的发展历史;

· HTTP协议的结构剖析;

· 常见通信场景及实战案例;

· Web安全、新技术动向等。

读者可通过本书快速了解并掌握HTTP协议的基础知识。

《图解TCP/IP(第5版)》

推荐指数:☆☆☆

作者:[日]竹下隆史 [日]村山公保 [日]荒井透 [日]苅田幸雄 译者:乌尼日其其格

· 本书是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能;

· 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容;

· 引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。

《Web性能权威指南》

推荐指数:☆☆☆☆

作者:[加]Ilya Grigorik 译者:李松峰

本书由谷歌公司高性能团队核心成员创作,堪称实战经验与规范解读结合的产物,获得IETF下一代HTTP协议工作组主席力荐。本书目标是涵盖Web技术体系中应该掌握的所有网络及性能优化知识。本书主要内容有:

· 以性能优化为主线,从TCP、UDP和TLS协议讲起;

· 解释了如何针对这几种协议和基础设施来优化应用;

· 深入探讨了无线和移动网络的工作机制;

· 揭示了HTTP协议的底层细节;

· 同时详细介绍了HTTP 2.0、 XHR、SSE、WebSocket、WebRTC和DataChannel等现代浏览器新增的具有革命性的新能力。

本书适合所有Web应用及站点开发人员阅读,包括但不限于前端、后端、运维、大数据分析、UI/UX、存储、视频、实时消息,以及性能工程师。

当前,三大主流前端框架分别是React、Vue、Angular

React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架,另辟蹊径提出了以组件化的形式重新构建页面内容,将页面的内容按特征分块,然后将特定块中的HTML、CSS、JS封装在一起,最后用组件来构建页面内容。

《深入React技术栈》

推荐指数:☆☆☆☆

作者:陈屹

本书从几个维度去介绍 React:

· 一是作为 View 库,它怎么实现组件化,以及它背后的实现原理;

· 二是扩展到 Flux 应用架构及重要的衍生品 Redux,它们怎么与 React 结合做应用开发;

· 三是对 React 与 server 的碰撞产生的一些思考;

· 四是讲述它在可视化方面的优势与劣势。

此外,本书非常重视实战,每一节都有实际的例子,细节丰富,内容翔实,由浅入深,无论你是 React 初学者,还是进阶人士,本书都值得一读!本书适合有一定经验的前端开发人员阅读。

Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue.js 自身不是一个全能框架——它只聚焦于视图层,因此它非常容易学习,并很容易与其它库或已有项目整合。

《深入浅出Vue.js》

推荐指数:☆☆☆☆

作者:刘博文

本书从源码层面分析了Vue.js,主要内容有 :

· 简要介绍Vue.js;

· 讲解内部核心技术\”变化侦测\”,带领大家从0到1实现一个简单的\”变化侦测\”系统;

· 介绍虚拟DOM技术,包括虚拟DOM的原理及其patching算法;

· 讨论模板编译技术,包括模板解析器的实现原理、优化器的原理以及代码生成器的原理;

· 介绍其整体架构以及提供给我们使用的各种API的内部原理,同时还介绍了生命周期、错误处理、指令系统与模板过滤器等功能的原理。

360奇舞团团长月影和《JavaScript高级程序设计》译者李松峰作序推荐,适合前端开发人员阅读。

Angular是一个用来构建大型应用,高性能的Web应用程序的框架;是一个完整的、从 UI、路由、Http、Socket到依赖注入、编译、优化、测试的框架。Angular上手起来有一定难度,但其工程属性极强,非常适合多团队的大型项目,一旦学会,优势很大。

《Angular权威教程》

推荐指数:☆☆☆☆

作者:[美]Ari Lerner [巴西]Felipe Coury [美]Nate Murray [巴西]Carlos Taborda 译者:Nice Angular社区

· 本书堪称Angular领域的里程碑式著作,几乎涵盖了关于Angular的所有内容;

· 对于没有经验的人,本书平实、通俗的讲解,递进、严密的组织,可以让人毫无压力地登堂入室,迅速领悟新一代Web应用开发的精髓;

· 如果你有相关经验,那本书对Angular概念和技术细节的全面剖析,以及引人入胜、切中肯綮的讲解,将帮助你彻底掌握这个框架,在自己职业技术修炼之路上更进一步。

springboot2.2.X手册:5分钟用Netty搭建高性能异步WebSocket服务

溪云阁:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习。

断更快两个月了,6月份工作忙到飞起,7月份家里又有事,已经累到躺下就想睡觉的程度了。

现在我们做WebSocket服务,很多时候都是会整合Netty作为服务器,但是有个问题,就是发现网上的整合起来,比较繁琐,各种配置,各种对应,最关键是千篇一律的网文,看得好辛苦了,今天咱们来介绍一个开源的组件,帮你快速搭建基于Netty的WebSocket服务,让你更加轻松,更加专注于业务开发。

netty-websocket-spring-boot-starter是基于Netty服务器来做的WebSocket服务器,不需要配置Netty服务器信息,只需要配置Webscoket的注解就行,目前用起来还是很方便的。

相比于需要自己整合Netty的配置,目前用起来还是很方便的,Netty的配置可以在注解类ServerEndpoint看到,里面一进去就会发现还是很清楚的。

目前发现有个不足的,就是超过一定时间不连接的时候,就会自动断开,不过这个可以在前端做个超时设置或者心跳检测,就可以了,问题不大,用起来还是很爽的。

–END–

作者:

原创作品,抄袭必究

如需要源码,转发,关注后私信我

部分图片或代码来源网络,如侵权请联系删除,谢谢!

基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)

  • 系统100%开源
  • 模块化开发模式,铭飞所开发的模块都发布到了maven中央库。可以通过pom.xml文件的方式拉取源代码

基于MIT开源协议,可直接商用无需授权,但请尊重开源精神不要去掉代码中铭飞的注释和版权信息

  • 免费完整开源:基于MIT协议,源代码完全开源,无商业限制,MS开发团队承诺将MCMS内容系统永久完整开源;关注Java项目分享
  • 标签化建站:不需要专业的后台开发技能,只要使用系统提供的标签,就能轻松建设网站;
  • html静态化:系统支持全站静态化;
  • 跨终端:站点同时支持PC与移动端访问,同时会自动根据访问的终端切换到对应的界面,数据由系统统一管理;
  • 海量模版:铭飞通过MStore(MS商城)分享更多免费、精美的企业网站模版,降低建站成本;关注Java项目分享
  • 丰富插件:为了让MCms适应更多的业务场景,在MStore用户可以下载对应的插件,如:站群插件、微信插件、商城插件等;
  • 每月更新:铭飞团队承诺每月28日为系统升级日,分享更多好用等模版与插件;
  • 文档丰富:为了让用户更快速的使用MCms系统进行开发,铭飞团队持续更新开发相关文档,如标签文档、使用文档、视频教程等;
  • 企 业:帮助创立初期的公司或团队快速搭建产品的技术平台,加快公司项目开发进度;
  • 开发者:帮助开发者快速完成承接外包的项目,避免从零搭建系统;
  • 学习者:初学JAVA的同学可以下载源代码来进行学习交流;

建议开发者使用以下环境,这样避免版本带来的问题

  • Windows、Linux
  • Eclipse、Idea
  • Mysql≧5.7
  • JDK≧8
  • Tomcat≧8

MCms内容插件提供最基本的菜单、权限、角色、栏目、内容、静态化、等常用功能。视频教程:内容插件视频教程 配合代码生成器使用快速提升开发效率:代码生成器在线视频教程、代码生成器使用文档

项目访问路径/swagger-ui.html#/

系统部署手册

懒人做法,将所有的资源打成一个jar包,维护资源不方便,不推荐

打包指令增加参数 -f bin-xml ,执行完成会在target目录会生成 “ 项目-bin ” 发布文件夹

config:配置文件

html:静态化自动生成的目录(自动生成)

static:静态资源文件

templets:(必须)模版目录,需要复制一份

upload:(必须)上传的文件夹

WEB-INF:ftl视图文件

mcms.log:自动生成的日志文件

*.sh:linux启动、停止脚本

*.bat:window启动、停止脚本

做开源我们是业余的,写代码我们是认真的。研发产品的路上我们一直在探索、一直在学习、一直在用心投入,希望能给更多的企业与开发者提供一些更有价值的服务。

源码资料获取方式:关注小编+转发文章+私信【 666 】免费获取八股文面试资料获取方式:关注小编+转发文章+私信【 13 】免费获取重要的事情说三遍,转发+转发+转发,一定要记得点赞转发哦!!!面试官:Spring 和 Spring Boot 的区别是什么?

对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 SpringBoot到底和 Spring有什么区别,看完文章中的比较,或许你有了不同的答案和看法!

作为 Java开发人员,大家都 Spring都不陌生,简而言之, Spring框架为开发 Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:

SpringJDBC、SpringMVC、SpringSecurity、SpringAOP、SpringORM、SpringTest,这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在 JavaWeb开发的早期阶段,我们需要编写大量的代码来将记录插入到数据库中。但是通过使用 SpringJDBC模块的 JDBCTemplate,我们可以将操作简化为几行代码。

SpringBoot基本上是 Spring框架的扩展,它消除了设置 Spring应用程序所需的 XML配置,为更快,更高效的开发生态系统铺平了道路。

SpringBoot中的一些特征:

1、创建独立的 Spring应用。2、嵌入式 Tomcat、 Jetty、 Undertow容器(无需部署war文件)。3、提供的 starters 简化构建配置4、尽可能自动配置 spring应用。5、提供生产指标,例如指标、健壮检查和外部化配置6、完全没有代码生成和 XML配置要求

首先,让我们看一下使用Spring创建Web应用程序所需的最小依赖项

与Spring不同,Spring Boot只需要一个依赖项来启动和运行Web应用程序:

在进行构建期间,所有其他依赖项将自动添加到项目中。

另一个很好的例子就是测试库。我们通常使用 SpringTest, JUnit, Hamcrest和 Mockito库。在 Spring项目中,我们应该将所有这些库添加为依赖项。但是在 SpringBoot中,我们只需要添加 spring-boot-starter-test依赖项来自动包含这些库。

Spring Boot为不同的Spring模块提供了许多依赖项。一些最常用的是:

spring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-testspring-boot-starter-webspring-boot-starter-thymeleaf

有关 starter的完整列表,请查看Spring文档。

让我们来看一下 Spring和 SpringBoot创建 JSPWeb应用程序所需的配置。

Spring需要定义调度程序 servlet,映射和其他支持配置。我们可以使用 web.xml 文件或 Initializer类来完成此操作:

还需要将 @EnableWebMvc注释添加到 @Configuration类,并定义一个视图解析器来解析从控制器返回的视图:

再来看 SpringBoot一旦我们添加了 Web启动程序, SpringBoot只需要在 application配置文件中配置几个属性来完成如上操作:

上面的所有Spring配置都是通过一个名为auto-configuration的过程添加 Bootweb starter来自动包含的。

这意味着 SpringBoot将查看应用程序中存在的依赖项,属性和 bean,并根据这些依赖项,对属性和 bean进行配置。当然,如果我们想要添加自己的自定义配置,那么 SpringBoot自动配置将会退回。

现在我们来看下如何在Spring和Spring Boot中配置Thymeleaf模板引擎。

在 Spring中,我们需要为视图解析器添加 thymeleaf-spring5依赖项和一些配置:

SpringBoot1X只需要 spring-boot-starter-thymeleaf的依赖项来启用 Web应用程序中的 Thymeleaf支持。   但是由于 Thymeleaf3.0中的新功能,我们必须将 thymeleaf-layout-dialect 添加为 SpringBoot2XWeb应用程序中的依赖项。配置好依赖,我们就可以将模板添加到 src/main/resources/templates文件夹中, SpringBoot将自动显示它们。

为简单起见,我们使用框架默认的 HTTPBasic身份验证。让我们首先看一下使用 Spring启用 Security所需的依赖关系和配置。

Spring首先需要依赖 spring-security-web和 spring-security-config 模块。接下来, 我们需要添加一个扩展 WebSecurityConfigurerAdapter的类,并使用 @EnableWebSecurity注解:

这里我们使用 inMemoryAuthentication来设置身份验证。同样, SpringBoot也需要这些依赖项才能使其工作。但是我们只需要定义 spring-boot-starter-security的依赖关系,因为这会自动将所有相关的依赖项添加到类路径中。

SpringBoot中的安全配置与上面的相同

Spring和 SpringBoot中应用程序引导的基本区别在于 servlet。Spring使用 web.xml 或 SpringServletContainerInitializer作为其引导入口点。SpringBoot仅使用 Servlet3功能来引导应用程序,下面让我们详细来了解下

Spring支持传统的 web.xml引导方式以及最新的 Servlet3+方法。

配置 web.xml方法启动的步骤

Servlet容器(服务器)读取 web.xml

web.xml中定义的 DispatcherServlet由容器实例化

DispatcherServlet通过读取 WEB-INF/{servletName}-servlet.xml来创建 WebApplicationContext。最后, DispatcherServlet注册在应用程序上下文中定义的 bean

使用 Servlet3+方法的 Spring启动步骤

容器搜索实现 ServletContainerInitializer的类并执行 SpringServletContainerInitializer找到实现所有类 WebApplicationInitializer“WebApplicationInitializer创建具有XML或上下文 @Configuration类 WebApplicationInitializer创建 DispatcherServlet与先前创建的上下文。

Spring Boot应用程序的入口点是使用@SpringBootApplication注释的类

默认情况下, SpringBoot使用嵌入式容器来运行应用程序。在这种情况下, SpringBoot使用 publicstaticvoidmain入口点来启动嵌入式 Web服务器。此外,它还负责将 Servlet, Filter和 ServletContextInitializerbean从应用程序上下文绑定到嵌入式 servlet容器。SpringBoot的另一个特性是它会自动扫描同一个包中的所有类或 Main类的子包中的组件。

SpringBoot提供了将其部署到外部容器的方式。我们只需要扩展 SpringBootServletInitializer即可:

这里外部 servlet容器查找在war包下的 META-INF文件夹下MANIFEST.MF文件中定义的 Main-class, SpringBootServletInitializer将负责绑定 Servlet, Filter和 ServletContextInitializer。

最后,让我们看看如何打包和部署应用程序。这两个框架都支持 Maven和 Gradle等通用包管理技术。但是在部署方面,这些框架差异很大。例如,Spring Boot Maven插件在 Maven中提供 SpringBoot支持。它还允许打包可执行 jar或 war包并 就地运行应用程序。

在部署环境中 SpringBoot 对比 Spring的一些优点包括:

1、提供嵌入式容器支持2、使用命令java -jar独立运行jar3、在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar冲突4、部署时灵活指定配置文件的选项5、用于集成测试的随机端口生成

简而言之,我们可以说 SpringBoot只是 Spring本身的扩展,使开发,测试和部署更加方便。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。