前端学习记录笔记

碎知识

2019-03-26  本文已影响0人  VictoriaZsj

1)脚本语言是一种解释性的语言,例如[Python](https://baike.baidu.com/item/Python)、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在,脚本语言不需要编译,可以直接用,由解释器来负责解释。

2)HTTP请求不是持续的连接,你请求一次,服务器响应一次,然后就完了。长轮训是一种利用HTTP模拟持续连接的技巧。具体来说,只要页面载入了,不管你需不需要服务器给你响应信息,你都会给服务器发一个Ajax请求。这个请求不同于一般的Ajax请求,服务器不会直接给你返回信息,而是它要等着,直到服务器觉得该给你发信息了,它才会响应。比如,你的好友发了一条新鲜事,服务器就会把这个新鲜事当做响应发给你的浏览器,然后你的浏览器就刷新页面了。浏览器收到响应刷新完之后,再发送一条新的请求给服务器,这个请求依然不会立即被响应。于是就开始重复以上步骤。利用这个方法,可以让浏览器始终保持等待响应的状态。虽然以上过程依然只有非持续的Http参与,但是我们模拟出了一个看似持续的连接状态

服务器只在用户那边有事件发生的时候才响应,这就是事件驱动。

Node.js的应用是通过javascript开发的,然后直接在Google的变态V8引擎上跑。用了Node.js,你就不用担心用户端的请求会在服务器里跑了一段能够造成阻塞的代码了。因为javascript本身就是事件驱动的脚本语言。你回想一下,在给前端写javascript的时候,更多时候你都是在搞事件处理和回调函数。javascript本身就是给事件处理量身定制的语言。

3)我们平时的看到的网页的js主要靠浏览器进行编译,编译后才能产生我们想看到的效果。但是如何让js在服务器上编译呢?于是有了Node.js。。。Node.js是用C++编写的,是Javascript的运行环境,也就是说你可以编写系统级或者服务器端的Javascript代码,交给Node.js来解释执行。我了解和理解的功能如下:Node.js在本地(即你自己的电脑上)可以搭建一个本地web服务器来模拟网络浏览进行测试,还可以通过npm来安装插件。而在云服务器(当然也可能是你自己搭建的服务器)上,通过安装Node.js,可以在服务器上编写js来实现web服务器的功能——处理HTTP协议,响应用户浏览器发来的请求....巴拉巴拉.....的作用。

4)Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。 Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

5)前端与后台共同维护一致的数据模型,前端服务器主要解决运算方面的请求并将计算结果及时反馈用户,然后将改变发送到后台服务器,由后台服务器进行持久化存盘、消息分发等一些操作。

6)浏览器内核又可以分成两部分:渲染引擎(layout engineer或者RenderingEngine)和JS引擎

 渲染引擎,负责对网页语法的解释(如HTML、JavaScript)并渲染网页。所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息

网页浏览器的排版引擎(Layout Engine或Rendering Engine)也被称为浏览器内核、页面渲染引擎或模板引擎,它负责取得网页的内容(HTML、XML、图像等等)、整理消息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机

最开始渲染引擎和js引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。JavaScript最初由网景公司的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。以它为基础,制定了ECMAScript标准。javascript在浏览器的实现中还必须含有DOM和BOM。Web浏览器一般使用公共 API来创建主机对象来负责将DOM对象反射进JavaScript。JS引擎负责对JavaScript进行解释、编译和执行,以使网页达到一些动态的效果。。JavaScript 引擎会加载你的源代码,把它分解成字符串(又叫做分词),再把这些字符串转换成编译器可以理解的字节码,然后执行这些字节码。

7)Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了:

Promise还可以做更多的事情,比如,有若干个异步任务,需要先做任务1,如果成功后再做任务2,任何任务失败则不再继续并执行错误处理函数。

要串行执行这样的异步任务,不用Promise需要写一层一层的嵌套代码。有了Promise,我们只需要简单地写:job1.then(job2).then(job3).catch(handleError);

8)childNodes返回的是节点的子节点集合,包括元素节点、文本节点还有属性节点

children返回的只是节点的元素节点集合,children获取的是元素对象是一个实时更新的列表 可以看做一个数组对象

使用querySelectorAll获取的是NodeList 与其他方式获取的NodeList不同 它不是节点集合 而是元素集合 并且是静态的 不会实时更新 相当于克隆了一个新数组

childNodes也和children一样是实时获取元素的字列表

上一篇下一篇

猜你喜欢

热点阅读