JavaScript 高级程序设计第二版
20.4 部署
20.4.1 构建
构建过程始于在源控制中定义用于存储文件的逻辑结构。最好避免使用一个文件存放所有的JavaScript,遵循以下面向对象语言中的典型模式:将每个对象或自定义了类别分别放入其单独的文件中。
记住将代码分离成为多个文件只是为了提高可维护性,并非为了部署。要进行部署的时候,需要将这些源代码合并为一个或几个归并文件。推荐Web应用中尽可能使用最少的JavaScript文件,是因为HTTP请求时Web中的主要性能瓶颈之一。记住通过<script>标记引用JavaScript文件时一个阻塞操作,当代码下载并运行的时候会停止其他所有的下载。因此,尽量从逻辑上将JavaScript代码分组成部署文件。
20.4.2 验证
查找JavaScript代码中的语法错误以及常见的编码错误。推荐使用JSLint。
20.4.3 压缩
JavaScript文件压缩,涉及:代码长度和配重(Wire weight)。代码长度是指浏览器所需街I型的字节数,配重是指实际从服务器传送到浏览器的字节数。
1. 文件压缩
· 删除额外的空白(包括换行);
· 删除所有注释;
· 缩短变量名。
2. HTTP压缩
21.2 HTML5
21.2.1 字符集
HTML5描述HTMLDocument类型的一些新属性和新方法。这些属性石用于处理的字符集的。charset属性表示文档实际使用的字符集,也可以用于指定一个新的字符集。默认情况下,该值为“UTF-16”。
document.charset="UTF-8";
defaultCharset属性表示根据默认的浏览器和系统设置,文档所对应的默认字符集。如果文档不使用默认的字符集,charset和defaultCharset的值可能不相同。
21.2.2 类相关的增加
1. getElementByClassName()方法
通过类名查找元素。入参是一个或者多类的字符串。
21.2.4 跨文档消息传递
web开发中一个具有挑战性的领域,是如何让来自不同域名的文档进行通讯。浏览器创建的跨域安全策略是为了防止恶意网站与其他内容交互。
HTML跨文档消息传递系统就是专门设计来支持一种安全的通讯方式。不允许对另外一个文档的DOM和相关信息的直接访问,但允许文档发送和接受包含数据的消息。
跨文档消息传递的执行时使用任意window对象的postMessage()方法。这个方法接受2个参数:发送的数据,数据的目标域名。第二个参数是一个安全性功能,确保数据只发送给合适域名的文档。第二个参数为星号,表示发送给任何域名。
当调用了某个window对象的postMassage()时,且目标域名和该window的域名一致,那么document的message事件则会被触发。该事件的event包含以下属性:
· data——postMessage的第一个参数。
· origin——发送该消息的窗口的协议、域名和端口;
· source——发送该消息的窗口对象。
21.2.5 媒体元素
HTML5引入了<audio>和<video>元素。
21.2.6 <canvas>元素
它为在页面上绘制图案提供了一个画布。绘图画布开始总是空的,唯一设置其显示的方法是通过JavaScript。
<canvas id="drawing" width="200" height="2000"> A Drawing of something.</canvas>
var drawing = document.getElementById('drawing');
//确保完全支持<canvas>
if (drawing.getContext) {
var context = drawing.getContext('2d');
}2D绘图环境的原点(0,0)在元素的左上角,坐标值都是相对该点计算的。默认情况下,width和height即宽和高,表示了在各个方向上各有多少个像素。
1. 绘制长方形
三个方法:fillRect()、strokeRect()和clearRect()。接受参数:x,y,width,height。单位都是像素。
填充颜色是使用fillStyle属性指定的。默认是黑色#000000.可以使用CSS的rgb()或者rgba()格式。
2. 绘制路径
3. 绘制文本
4. 变换
5. 使用图片
21.2.7 离线支持
能够在没有连接到互联网的时候还能运行。在这方面,HTML5引入了3样东西:
· navigator.online属性:浏览器是否处于联机状态。
· 当浏览器从联机转换到脱机状态时,会在文档主体出发offline事件,并冒泡到window。
· 当浏览器从脱机转换到联机状态时,会在文档主体触发online事件,并冒泡到window。
21.2.8 Ajax应用的提升
在Ajax应用中,浏览器的后腿功能不会重新载入或者跳转到别的页面,也就是说只有应用的状态在改变而不是位置。
HTML5给history添加了pushState()方法,运行给历史栈添加状态信息。它接受3个参数:包含状态信息的对象、状态的标题和一个可选的URL(表示浏览器的URL应该如何改变来反映这个状态)。
当调用了pushState()给历史栈添加了状态信息,后退功能就像访问了一个新的页面。
21.2.9 数据库存储
HTML5引入了用JavaScript从浏览器访问数据库系统的方式。Safari3.1实现了该功能。
window对的openDatabase()方法,它接受四个参数:数据库名称、数据库版本、显示名称以及数据库大概要多少字节的容量。
21.2.10 拖放操作
HTML5引入了draggable属性,表示是否可以拖动。图像和链接默认为true,其他为false。
当拖动时,会触发以下事件:dragstart、drag、dragend。
21.2.11 WebSocket类型
浏览器与服务器之间进行双向通讯的机制。
WebSocket的入参是一个URL。URL必须指定为ws或者wss协议以及一个绝对URL。例如
var socket = new WebSocket(“ws://www.yourdomain.com/connect/");
WebSocket对象的状态readyState属性,有几种值:0表示正在连接,1表示连接已打开,2表示连接已关闭。通过监听open和close事件来判断状态更加简单。
socket.onopen = function(event) {};
socket.onclose = function(event) {};
socket.onmessage = function(event) { //接收数据
var data = event.data;
};
socket.send(“fa=1”); //发送数据
JavaScript 高级程序设计第二版的更多相关文章
- JavaScript 高级程序设计 第二版
function outputNumbers(count) { (function () { for (var i =0;i < count; i++) { ...
- javascript高级程序设计第二章知识点提炼
这是我整理的javascript高级程序设计第二章的脑图,内容也是非常浅显与简单.希望您看了我的博客能够给我一些意见或者建议.
- javascript高级程序设计---第二、三章
在HTML中引用javaScript javascript的几个属性 type async(异步加载 只适用于外部JS且IE8以上 HTML5规范 先于load执行) src defer(延迟加载 ...
- javascript高级程序设计第二章
看后总结: 1.js代码用得最多的两种加载方式: a)外部文件形式:<script type="text/javascript" src="jquery.min.j ...
- 读书笔记 - javascript 高级程序设计 - 第二章 在Html中使用JavaScript
1 <script>的6个属性 async 立即下载当前script标签的外部脚本 但不能影响别的 charset 没用了 defer 文档显示之后再执行脚本,只对外部脚本有效 lan ...
- 《JavaScript高级程序设计》(第二版)
这本书的作者是 Nicholas C.Zakas ,博客地址是 http://www.nczonline.net/ ,大家可以去多关注,雅虎的前端工程师,是YUI的代码贡献者,可想而知这本书得含金量, ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- JavaScript高级程序设计(第三版)学习笔记20、21、23章
第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...
- (读书笔记)函数参数浅析-JavaScript高级程序设计(第3版)
ECMAScript函数不介意传递的参数个数,因为在其内部是用一个数组进行表示的.在函数体内可以通过arguments对象来访问这个参数数组,就像我们正常访问数组一样处理. arguments对象只是 ...
随机推荐
- 阿里云IoT物联网平台入门教程
参考链接:https://www.geek-workshop.com/thread-37883-1-1.html
- Java HashMap工作原理及实现[转]
原文:http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE ...
- CF1101D GCD Counting
题目地址:CF1101D GCD Counting zz的我比赛时以为是树剖或者点分治然后果断放弃了 这道题不能顺着做,而应该从答案入手反着想 由于一个数的质因子实在太少了,因此首先找到每个点的点权的 ...
- 【VMware vSphere】ESXi系统开启SSH协议
写在前面: SSH为建立在应用层基础上的安全协议,是目前较为可靠,专为远程登录会话和其他网络服务提供安全性的协议.感兴趣的话,可以百度了解 在这里,我们需要将S ...
- Python全栈(第一部分)day1
计算机基础 cpu:相当于人的大脑,用于计算. 内存:储存数据,4G,8G,16G,32G,成本高,断电即消失. 硬盘:1T,固态硬盘,机械硬盘,储存数据,应该长久保持数据,重要文件,小电影等等. 操 ...
- 在Apache Struts中利用OGNL注入
前言 本文简要介绍了Apache Struts的OGNL注入缺陷,文章中介绍使用简单的应用程序复现OGNL注入.深入研究针对公共漏洞,并理解这类漏洞. 内容 安装Apache Tomcat服务器(入门 ...
- while(cin>>n1>>n2)
这里有2个点, 1. while(cin>>n)用到了强制类型转换 2. 强调输入遇到-1则退出,说明要一直看是否输入了-1,并记录下来 #include <iostream> ...
- Liunx之KVM搭建图形化的WEB
作者:邓聪聪 我们常在Windowns下使用VMware,当然在Liunx中也有这样的软件供我们使用.生产环境的KVM宿主机越来越多,需要对宿主机的状态进行调控.这里用webvirtmgr进行管理.图 ...
- epoll机制详解
epoll机制详解 大牛的详解 epoll详解 什么是epoll? epoll是为处理大批量句柄而作了改进的poll, 是性能最好的多路I/O就绪通知方法; 只有三个系统调用: epoll_creat ...
- 用Openssl计算ECDSA签名
ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA.它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种.椭圆曲线算法的原理很复杂, ...



