VPS

前不久收到CloudCone的情人节促销邮件,看了下虽然阿里云/云小站上也有一些优惠,不过想获得完整体验的话可能需要各种备案什么的吧,感觉CloudCone价格还挺合适的,就买了台机器,3 Core & 2G RAM & 240G DISK,$24.99/y,续费同价?然后折腾了一番,这里做一些相关配置步骤的记录。

NodeJS相关/Web服务器

Node.js

事件驱动异步I/O单进程的服务端JS环境,具有事件循环。浏览器是JS的前端运行环境;Node JS是JS的后端运行环境,在后端中运行无法调用DOM和BOM等浏览器内置API。

模块化

NodeJs基于Commonjs模块化开发的规范

导出:exports/module.exports

  • 共同点:导出模块
  • 不同点:module.exports它可以导出对象,而exports不可以
  • exports = module.exports 引用 本质:原型指向

导入:require(路径)

flex布局

Flex布局 1 2 3 4 Flex容器:采用 Flex 布局的元素的父元素; Flex项目:采用 Flex 布局的元素的父元素的子元素; 容器默认存在两根轴:水平的主轴(

模块化与TypeScript的基本数据类型

模块化

方案:AMD[requirejs]、CMD[seajs]、CommonJS[nodejs]和ES6

AMD和CMD,两者的区别是前者是对于依赖的模块提前执行,而后者是延迟执行。 前者推崇依赖前置,而后者推崇依赖就近,即只在需要用到某个模块的时候再require。

CMD 有async方法实现异步

new/call/bind/instanceof的实现与代理

重写new

new内部过程:创建一个实例对象,this指向当前这个实例对象,会自动把函数执行,但是this内部指向变为实例对象,返回值没有或者是基本值,则返回实例对象;如果是引用值,以定义好的为主。

类/原型与原型链

构造函数和普通函数

相同点:

定义的方式,都是通过function来定义

执行时参数传递方式一样

都会形成私有上下文,都有私有变量

不同点:

构造函数执行通过new来执行,在执行时浏览器会在当前上下文中创建一个实例对象,并且会让函数中的this指向到这个实例对象中,而普通函数中的this指向为window。

函数如过没有返回值或返回值为基本类型值,则返回undefined或你指定的返回值;如果是构造函数,它没有返回值,则返回当前的实例对象,如果有返回值,返回值是基本类型则也是返回当前对象,当返回的是引用类型,则返回你所指定的类型。

构造函数:箭头函数没有this,不能当构造函数,箭头函数没有prototype;ES6简写没有prototype;

节流/防抖与对象

防抖与节流

  • 函数防抖和函数节流都是防止某一时间频繁触发,但是这两者之间的原理却不一样。

  • 函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。

防抖

在高频操作下,只识别一次触发(事件的开始时刻或者结束时刻),实现:一般设置一个阈值,在阈值内无论操作多少次,程序只执行一次。

节流

高频操作下,按照规定好的时间为间隔触发一次,等待变化一会在执行程序,避免资源浪费。规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。

作用域与闭包

作用域

全局作用域、函数作用域、块级作用域

作用域链会向上查找,找到全局window时中止==>not defined;函数被执行后其环境变量将从内存中删除,函数每次调用会创建一个新作用域。

如果子函数将被使用时,父级环境将保留,不会被释放。===闭包

块级作用域-ES6中添加的,使用let/const 定义的具有块级作用域,var没有块级作用域

Jquery之尺寸/位置/网络请求

Jquery:

尺寸

获取元素的宽高:width()–返回数值类型

  • 当有参数时(数字)表示设置宽高

包含内边距:–只能获取,返回数值类型,不能设置

  • innerWidth()

包含边框和宽高(如果参数为true->表示包括外边距):

  • outerWidth()

位置

获取、设置元素相对于文档的偏移坐标和父级没有关系,返回为对象{top,left},值为数值;设置时参数为对象类型

  • offset()

获取、设置元素被卷去的头部和左侧距离

  • scrollTop([数字])/scrollLeft([数字])