“JavaScript笔记”

学习js

第一部分

use strict-规范要求,写在第一行,用来检查

let-用来定义局部变量

- console.log()

- 字符串不可变,长度也可以是length访问,大小写函数和java很像,substring、indexof也一样。

- 数组长度可以变,arr.length=…可以随意改变,只不过值是undefined;数组还有push、pop压入弹出(尾部);unshift\shiift-压入弹出头部

第二部分

- 对象 {}-表示一个对象,而且用键值对表示属性,最后一个属性不用逗号

var 对象名 = {

属性名:属性值,

属性名:属性值

}

- 动态删除和增加属性

用delete删除,加上对象

直接用属性来添加也可以

- Map set-ES6才出来的

``` JavaScript var map = new Map([“tom”,100],[“cks”,34]);

var name = map.get(“tom”);

map.set(“admin”,45);//新增

map.delete(“tom”)//删除

// set无序不重复的集合

var set = new Set([12,3,4,45]);

set.add(6);

set.delete(1);

```

- iterator遍历集合,用for of也可以遍历,for in也可以,还有foreach遍历

- arguments是在函数里可以传递所有参数的数组,fori循环来使用,包含所有的参数

- rest可以获取除了已经定义的参数

- js中var定义变量是由有作用域的,js中函数查找都是就近原则

- const关键字-表示只读变量

## 第三部分

- Date

get方法-年月日都可以获得,还有时分秒

- JSON

早期习惯是用XML来传输数据

是轻量级的数据交换格式,特点是清晰和简洁,任何js支持的类型都可以用json来表示

- 格式

对象使用{}

数组[]

所有键值对使用key-value格式

```JavaScript

//Converts a JavaScript value to a JavaScript Object Notation (JSON) string.

//对象转化为JSON字符串

var jsonuser = JSON.stringify()

//JSON字符串再转化为对象 参数是传入json字符串

var obj = JSON.parse(‘{“name”:”yhy”,”age”:3,”sex”:”男”}’);

```

- 面向对象

- 继承

一开始使用._proto_,后面ES6使用了class,模板和java一样,可以定义一个class,里面使用constructor用来定义构造函数的

## 第四部分

- BOM-浏览器对象模型

window-浏览器窗口

Navigator-封装了浏览器的信息

Electron demo实战

前言

Electron 是一个用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的一个开源库。由GitHub开发的。


其原理是 Electron 通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来实现这一目的。

在公司里用到了Linux系统,所以就花了一点时间试着搭了一个体验一下。

  1. 安装这个网站走完安装部署步骤

    1. 创建electron桌面项目代码等结构参照以下链接github
    2. 一开始按照网上进行操作,最后会报错,无法执行,直接抛出——throw new Error(‘Electron failed to
      install correctly, please delete node_modules/electron and try
      installing again’) 如图

在这里插入图片描述

  • 操作的一些记录
    在这里插入图片描述

  • 查阅了一小会资料,原来是我的Ubuntu上缺少了一些库环境,不过每个人的情况不一样,先是确保你的Python版本在2.7.x,以及安装了node.js那些,就是以及完成了那些该走的步骤,再来就是安装下面的库了。

1
2
3
4
5
sudo apt-get install build-essential clang libdbus-1-dev libgtk-3-dev \
libnotify-dev libgnome-keyring-dev \
libasound2-dev libcap-dev libcups2-dev libxtst-dev \
libxss1 libnss3-dev gcc-multilib g++-multilib curl \
gperf bison python-dbusmock openjdk-8-jre

我的就是上面库没装,再次试了一遍之后就成功运行了。

最后运行成功如下
在这里插入图片描述)success

网络

http

长轮询:都是浪费性能

长连接

websocket

全双工通信,实时通信,互相的,服务器主动通知客户端,用HTTP请求协议,HTTP头部有WebSocket协议,握手后,就使用TCP协议交流

node.js一开始就支持websocket协议。

HTTP-和HTTPS

缺点分析

1
2
3
●通信使用明文(不加密),内容可能会被窃听
●不验证通信方的身份,因此有可能遭遇伪装
●无法证明报文的完整性,所以有可能已遭篡改

这些缺点导致了很多隐患,无法确认来请求的是谁,甚至无法阻挡海量请求的DoS攻击(拒绝服务攻击)

解决

可以通过加密–SSL(安全套接字层)或者TLS(安全传输层协议)就有了HTTPS(超文本安全传输层协议)

HTTPS

HTTP是直接和TCP进行通信,而HTTPS是通过中间人SSL和TCP进行交流通信的。

加密

为了做到有效的内容加密,前提是要求客户端和服务器同时具备加密和解密机制;注意的是对报文主体进行加密;

SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方(这里的证书是由可信赖的第三方提供的)

1
这里为了解决加密的安全性问题和可行性,HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。公开密钥加密方法,其使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key。

认证