JS全书:JavaScriptWeb前端开发指南

JS全书:JavaScriptWeb前端开发指南"

作者:高鹏
ISBN:9787302543947
定价:¥59
字数:千字
页数:
出版时间:2020.05.01
开本:
版次:1-2
装帧:
出版社:清华大学出版社
简介

本书从JavaScript的基础语法开始讲解,循序渐进地介绍了JavaScript的必备知识和高级技巧,并通过大量实例带领读者掌握Web前端开发中常用的JavaScript知识及开发技巧。本书着重于为JavaScript编程开发人员及爱好者提供简单易懂、清晰明了的学习路径。本书结构清晰,内容编排由浅入深,能够帮助读者拥有Web开发中不可或缺的能力和技巧。

本书既适合JavaScript语言初学者,也适合JavaScript语言进阶者。

前言

自互联网出现以来,Web 前端便不断地发生变化。其间,我们看到了网页端脚本语言的萌发和进化,JavaScript 语言标准的制定,各浏览器厂商之间的竞争,等等。 随着 Web 应用的发展,涌现了大量优秀的库和框架,例如jQuery、lodash、Underscore、Backbone、Angular、React、Vue 等,这些库和框架大幅提升了Web开发与维护效率。 但近几年,Web前端的发展已经趋乎于病态,各种各样的“轮子”层出不穷,Web前端的发展速度已经有超过Web前端开发人员的学习速度之势,将开发人员远远甩在了后面。新的技术不断涌现,有些新技术是我们工作中无法回避的技术栈。虽然我们明知道这些新技术在未来注定会被淘汰,但迫于工作的需要不得不追赶它们。新的“轮子”不断出现,旧的“轮子”还在更新,这就导致Web前端学习的疲劳性,而且这种疲劳是心理上的。 例如,Grunt 学完, Glup 来了,Glup 学完,webpack又来了;又如less、sass、stylus,甚至刚学会一种新东西,转眼间就发现它已经被淘汰了;再如,公司团队要求掌握某些技术栈,你能不学吗?显然不能! 那么,我们该怎么办呢?“轮子”被造出来的初衷就是为了更好地解决相应的问题,它应该是能解决我们的问题的,而不是让我们惧怕学习它。在面对新的“轮子”时,不要盲目追赶,无论这些“轮子”出现或更新得有多快,最基础的核心知识是不变的。我们应该把自己的注意力放在问题本身上,而不是纠结于“轮子”,将更多的精力放在学习基础知识上。 Web 前端的三大核心知识为HTML、CSS、JavaScript。在本书中,不会过多涉及 HTML、CSS,而是将重点放在JavaScript上。 本书将从最基础的知识开始,循序渐进地讲解 JavaScript 的基本知识和高级技巧,力求内容简单易懂、清晰明了,通过大量实例带领读者学会 Web 前端开发中常用的 JavaScript 知识及开发技巧。 主要内容 全面介绍 JavaScript 的核心语法。 解读变量作用域和闭包。 ES6+ 的新特性。 前端模块化。 自动化构建工具。 客户端存储。 使用性能优化技术来改善用户体验。 阅读建议 阅读本书时,如果遇到不理解的内容,不要刻意耗费时间去理解和钻研,因为有可能你耗费的宝贵时间换来的是一个错误的理解结果,这是非常不值得的,我就吃过这方面的很多亏。所以我的建议是,在阅读时要注意保持不求甚解的态度,此刻不理解的,可能是自身水平没到,当自己的知识到了一定水平,自然就理解了。因此,读书时一定要多读几遍,“书读百遍,其义自见”,这是自古流传下来的道理,我也相信同一本书每读一遍都会有不同的收获。 下面是各章内容的简单介绍。 第 1、2 章:介绍 JavaScript 的诞生过程,以及 Chrome 开发者工具的简单使用方法。 第 3 章:主要介绍 JavaScript 的基本语法,为之后的 JavaScript 编程打下坚实的基础。 第 4~7 章:进一步介绍 JavaScript 中的几个特殊对象,包括函数、数组、对象、类。利用这些对象,可以更好地组织代码。 第 8 章:介绍一种比较常见的数据交换格式—JSON。 第 9~12 章:主要介绍 JavaScript 的另外两大核心—BOM 和 DOM,并讲解一些常用的 BOM 对象和 DOM 对象的操作方法。 第 13 章:介绍 JavaScript 中的模块。 第 14 章:介绍 cookie 和本地存储,以此了解Web前端与Web后端是如何进行用户鉴权的。 第 15 章:介绍一些优化Web前端性能的方案,从资源的请求、压缩、加载、缓存等方面着手,一步步实现Web前端性能优化。 第 16 章:介绍目前流行的一些开源库和框架。 附录 A:以一个文字和图片的合成案例,介绍 Canvas 是如何使用的。 附录 B:介绍Web前端中的 SEO,避免一些误操作导致用户体验降低。 附录 C:介绍一些常见的编码规范,为代码的开发与维护建立良好的基础。 代码约定 // -> 用于显示表达式的返回值,例如: 1 + 1; // -> 2 'hello world'; // -> "hello world" // > 用于显示 console.log 的执行结果及报错信息,例如: console.log(1+1); // > 2 console.log('hello', 'world'); // > hello world 本书读者 本书既适合JavaScript 语言初学者作为入门的教程,也适合 JavaScript 语言爱好者作为进阶的参考。如果在阅读本书的过程中碰到问题,请扫描右侧的二维码,联系相关技术人员进行处理。                        作者? 2020年

目录

第1章?初入 JavaScript 001 1.1?JavaScript 简介 002 1.2?JavaScript 起源 003 1.3?JavaScript 实现 004 1.3.1?ECMAScript 004 1.3.2?BOM 005 1.3.3?DOM 005 1.4?JavaScript 使用 005 1.4.1?内联的 JavaScript 005 1.4.2?外部的 JavaScript 006 1.4.3?行内的 JavaScript 007 第2章?准备工作 008 2.1?开发工具 009 2.1.1?Sublime Text 009 2.1.2?Visual Studio Code 010 2.1.3?WebStorm 011 2.1.4?Atom 012 2.2?Chrome 开发者工具 012 2.2.1?信息类方法 013 2.2.2?清除历史记录 013 2.2.3?保留历史记录 014 第3章?语法 015 3.1?基本语法 016 3.1.1?语句 016 3.1.2?注释 016 3.1.3?标识符 017 3.2?变量和变量作用域 019 3.2.1?变量 019 3.2.2?声明变量 019 3.2.3?非声明变量 024 3.3?数据类型 025 3.3.1?内存空间 025 3.3.2?基本数据类型与引用数据类型 025 3.3.3?浅拷贝与深拷贝 027 3.3.4?typeof 与 instanceof 029 3.3.5?类型转换 031 3.3.6?基本包装类型 035 3.4?字符串 036 3.4.1?字符串的特点 039 3.4.2?length 属性 039 3.4.3?实例方法 039 3.5?运算符 048 3.5.1?算术运算符 048 3.5.2?逻辑运算符 050 3.5.3?比较运算符 051 3.5.4?三元运算符 052 3.5.5?赋值 053 3.5.6?位运算符 054 3.5.7?异步操作符 async function 055 3.5.8?其他运算符 059 3.5.9?运算符优先级 060 3.6?条件语句 062 3.6.1?if 语句 062 3.6.2?switch 语句 063 3.6.3?三元运算符 064 3.7?循环语句 065 3.7.1?for 065 3.7.2?while 065 3.7.3?for…in 067 3.7.4?for…of 068 3.7.5?break 和 continue 语句 068 3.8?错误处理 069 3.8.1?try…catch 069 3.8.2?throw 070 3.9?严格模式 070 第4章?函数 072 4.1?定义 073 4.1.1?返回值 073 4.1.2?箭头函数(Arrow Function) 074 4.1.3?关于 this 075 4.2?函数的属性和方法 080 4.2.1?length 属性 080 4.2.2?name 080 4.3?参数 080 4.3.1?按值传递 081 4.3.2?arguments 082 4.3.3?Rest 参数(剩余参数) 083 4.3.4?箭头函数中的 arguments 对象 083 4.3.5?默认参数 083 4.4?递归 084 4.5?闭包 086 4.5.1?什么是闭包 087 4.5.2?实践中的闭包 087 4.6?IIFE 089 4.7?高阶函数 090 4.7.1?回调函数 090 4.7.2?偏函数 091 4.7.3?柯里化 091 4.7.4?纯函数 092 第5章?数组 093 5.1?定义 094 5.2?多维数组 094 5.3?length 属性 094 5.4?方法 094 5.4.1?Array.isArray() 095 5.4.2?Array.of() 095 5.4.3?Array.from() 095 5.5?实例方法 099 5.5.1?concat() 099 5.5.2?copyWithin() 099 5.5.3?keys()、values() 和 entries() 100 5.5.4?forEach() 和 map() 100 5.5.5?every() 和 some() 101 5.5.6?filter() 101 5.5.7?fill() 102 5.5.8?find() 和 findIndex() 102 5.5.9?includes() 102 5.5.10?indexOf() 和 lastIndexOf() 103 5.5.11?join() 和 splice() 103 5.5.12?push()、pop()、unshift() 和 shift() 103 5.5.13?reduce() 和 reduceRight() 104 5.5.14?reverse() 104 5.5.15?slice() 104 5.5.16?sort() 104 5.5.17?toString() 105 5.5.18?toLocaleString() 105 第6章?对象 106 6.1?定义 107 6.1.1?定义对象的属性 107 6.1.2?定义对象的方法 108 6.1.3?getter 和 setter 108 6.2?属性 109 6.2.1?原型及原型链 109 6.2.2?更好的类型检测 110 6.2.3?构造函数 111 6.3?方法 112 6.3.1?Object.getPrototypeOf() 和 Object.setPrototypeOf() 112 6.3.2?Object.create() 112 6.3.3?Object.assign() 112 6.3.4?Object.defineProperty() 和 Object.getOwnPropertyDescriptor() 113 6.3.5?Object.defineProperties()和Object.getOwnPropertyDescriptors() 114 6.3.6?Object.keys()、Object.values() 和 Object.entries() 114 6.3.7?Object.freeze() 和 Object.isFrozen() 115 6.3.8?Object.seal() 和 Object.isSealed() 115 6.3.9?Object.preventExtensions() 和 Object.isExtensible() 116 6.3.10?Object.is() 116 6.3.11?Object.getOwnPropertyNames() 116 6.3.12?Object.getOwnPropertySymbols() 117 第7章?类 118 7.1?定义 119 7.2?constructor 119 7.2.1?实例化 119 7.2.2?类的方法 120 7.2.3?this 指向 120 7.2.4?constructor 属性 121 7.3?继承 122 7.4?静态方法 123 第8章?JSON 125 8.1?简介 126 8.2?JSON的解析 126 8.3?JSON的序列化 129 第9章?BOM 132 9.1?window 133 9.1.1?setTimeout 133 9.1.2?setInterval 133 9.1.3?定时器的问题 134 9.2?history 134 9.2.1?history 134 9.2.2?ajax 的前进后退 135 9.3?location 137 9.3.1?assign() 和 replace() 138 9.3.2?reload() 138 9.3.3?属性 138 9.4?navigator 139 第10章?DOM 140 10.1?DOM 简介 141 10.1.1?节点 141 10.1.2?节点类型 141 10.2?节点查找 142 10.2.1?获取单个节点 Node 142 10.2.2?获取节点集合 NodeList 143 10.3?节点操作 146 10.3.1?创建节点 146 10.3.2?新增节点 147 10.3.3?删除节点 148 10.3.4?修改节点 149 10.4?属性操作 149 10.4.1?getAttribute() 149 10.4.2?setAttribute() 150 10.4.3?点符号 150 10.4.4?classList 属性 150 10.5?内容操作 151 10.6?样式操作 152 10.6.1?getComputedStyle() 152 10.6.2?设置CSS样式 152 第11章?事件 153 11.1?事件处理 154 11.1.1?addEventListener() 154 11.1.2?removeEventListener() 155 11.2?事件流 156 11.3?事件对象与事件类型 157 11.3.1?阻止默认行为 159 11.3.2?阻止事件冒泡 159 11.3.3?事件委托 160 11.4?自定义事件 161 第12章?Ajax 163 12.1?Ajax 简介 164 12.1.1?XMLHttpRequest 164 12.1.2?Fetch 167 12.2?HTTP 168 12.2.1?客户端、服务端 168 12.2.2?代理服务器 168 12.2.3?HTTP是无状态,有会话的 168 12.2.4?HTTP 流 169 12.2.5?http1.0的问题 170 12.4?跨域 171 12.4.1?浏览器的同源策略 171 12.4.2?jsonp 171 12.4.3?img ping 171 12.4.4?window.name 172 12.4.5?postMessage 173 12.4.6?CORS 174 第13章?模块和构建工具 175 13.1?模块 176 13.1.1?CommonJS 176 13.1.2?AMD 177 13.1.3?CMD 177 13.1.4?UMD 178 13.2?ES6中的模块 178 13.2.1?export 178 13.2.2?import 179 13.2.3?导入、导出时的重命名 179 13.3?构建工具 180 13.3.1?npm 的使用 180 13.3.2?npm 发布包 181 第14章?客户端存储 184 14.1?cookie 185 14.1.1?什么是 cookie 185 14.1.2?有效期和作用域 185 14.1.3?关于 session 186 14.1.4?关于 token 186 14.2?本地存储 186 14.2.1?localStorage 187 14.2.2?.和 [ ] 操作 188 14.2.3?sessionStorage 188 14.3?IndexedDB 188 第15章?性能优化 191 15.1?减少请求数 192 15.1.1?合并代码 192 15.1.2?CSS Sprite 193 15.1.3?data url 193 15.2?减少代码体积 194 15.3?缓存文件 196 15.3.1?浏览器缓存 196 15.3.2?客户端缓存 197 15.4?使用内容分发网络 CDN 197 15.6?延迟加载 197 15.6.1?实现 198 15.6.2?完整代码 198 15.7?避免重定向 199 15.8?服务端gzip 199 15.8.1?什么是 gzip 199 15.8.2?gzip 压缩原理 200 第16章?类库和框架 201 16.1?预处理器 202 16.2?辅助库 202 16.2.1?jQuery 202 16.2.2?axios 203 16.2.3?Underscore 203 16.2.4?lodash 204 16.2.5?Moment.js 204 16.3?框架 205 16.3.1?Angular 205 16.3.2?React 205 16.3.3?Vue.js 205 附录 A?Canvas 206 附录 B?前端中的 SEO 209 B.1?robots.txt 209 B.2?title 209 B.3?meta 210 B.4?其他 HTML 标签 210 B.5?结构化数据标记 210 附录 C?编程风格 212 C.1?减少全局变量污染 212 C.2?避免使用 var 212 C.3?使用字面量 212 C.4?字符串 213 C.5?解构 213 C.6?函数 213 C.7?模块 214 C.8?其他 214

作者简介

编辑推荐

全面介绍JavaScript的核心语法。解读变量作用域和闭包。ES6+的新特性。前端模块化。自动化构建工具。客户端存储。使用性能优化技术来改善用户体验。

作者寄语

全面介绍JavaScript的核心语法。解读变量作用域和闭包。ES6+的新特性。前端模块化。自动化构建工具。客户端存储。使用性能优化技术来改善用户体验。

电子资料

www.luweidong.cn

下一个