web学习笔记11-node.js基础

一、ES6

ECMAscript -> ES 是JS的标准规范

ES6 是JS的第六套标准规范

1,块级作用域

let声明的变量,会进入暂时性的死区,提升后暂时不允许访问,只有赋值以后才允许访问

let声明的变量不允许重复声明

块级作用域:大括号之间的语句块,例如if、else。块级作用域下,let和const声明的局部变量或者常量,不允许被块级作用域以外访问

let 和 const 即使声明在全局作用域下,也不是全局变量或者常量

2,参数增强

可以给参数设置默认值

var a = 值1 && 值2

选择将其中一个值赋给变量a ,当第一个值转布尔型为真时,把第二个值赋给a;当第一个值转为布尔型为假时,程序中断,将第一个值赋值给a

var a = 值1 || 值2

选择将其中一个值赋给变量a ,当第一个值转布尔型为真时,程序中断,把第一个值赋给a;当第一个值转为布尔型为假时,将第二个值赋值给a

3,箭头函数

简化匿名函数的写法,不等价于匿名函数

()=>{
   函数体 
}
//如果箭头函数,函数体中只有一行代码,并且是return,可简化
arr.sort((a,b)=>{
    return a-b
})
// 简化后
arr.sort((a,b)=>a-b)

匿名函数:

创建函数 var fn = function(){}

自调用 (function(){})()

回调函数

二、Node.js概述

node.js是一种运行环境

1,js与node.js的区别

js运行在客户端浏览器,有多款浏览器,存在代码兼容性问题;node.js运行在服务器端,只有一种V8引擎环境,不存在兼容性问题

两者都有共同的自定义对象和内置对象,不同的宿主对象

js用于操作网页元素,node.js用于服务器端开发

2,使用Node.js运行js代码

(1)脚本模式

在命令行下,执行

node 脚本文件路径

(2)交互模式

在命令行下直接输入

node 回车 进入交互模式

三、全局对象

1,global对象

可以检测一个变量或者函数是否为全局的

如果一个变量或者函数是全局的,可以通过global访问到

> var a = 1
undefined
> global.a
1
> function fn(){return 2}
undefined
> fn()
2
> global.fn()
2
> let b = 3
undefined
> global.b
undefined
>

node.js的交互模式,属于全局作用域

node.js下,每个js文件都是单独的作用域,变量和函数都是局部的

js下全局对象global名称为window

2,console对象

用于控制台下输出

console.log(1)  //打印日志
console.info(2)    //打印消息
console.error(3)  //打印错误
console.warn(4)    //打印警告
//开始计时,开始与结束的值要保持一致
console.time('for')
//结束计时
console.timeEnd('for')

3,process对象

进程:在计算机上启动每个软件都会占用相应的资源

process.arch 查看当前CPU的架构

process.platform 查看当前操作系统

process.pid 查看当前node.js的进程编号

prodess.kill() 结束指定编号的进程

4,Buffer对象

缓存、缓冲区:是内存中的一块区域,是临时存储数据

用法:alloc分配

// 从内存中分配空间作为缓存
//单位是字节
//utf8中每个英文字符占1个字节,汉字占3个字节
var buf = Buffer.alloc(9,'abc一二')
console.log(buf)
// 将缓存里的数据转为字符串
console.log(buf.toString())

四、模块

node.js下,每个文件就是一个模块

require():是一个函数,用于引入其他模块,得到的是被引入模块暴露的对象

module.expots:默认是一个空对象,当前模块要暴露的对象。需要暴露的对象放在代码中。
__dirname    获取一个模块的绝对路径

__filename    获取一个模块的绝对路径+模块名称

1,模块系统

模块系统下分为三类模块:自定义模块,核心模块,第三方模块

以路径开头 不以路径开头
文件模块 require(‘模块文件路径’)
用于引入自定义模块
目录模块 require(‘./02’)
首先会到目录中寻找模块说明文件package.json,再查找文件中main属性对应的文件;如果找不到文件会自动寻找index.js
require(‘04_nan’)
首先会到当前目录下的node_modules目录中寻找要引入的目录模块,如果没有找到会一直往上一级目录中的node_modules中去查找;用于引入第三方模块

2,包和npm

CommonJS:是一种模块化规范,Node.Js就是采用这种规范,例如require和module.exports都是这种规范

包:是指第三方模块,都是目录模块的形式

NPM:是Node.js的包管理器,用来管理第三方模块。

npm命令

npm init -y 初始化生成一个package.json文件,作为项目说明文件,可以记录安装的包

npm install 包名称    下载安装指定的包

npm install     会自动配置项目中的依赖包

npm set registry https://registry.npmmirror.com

3,URL

网址:统一资源定位器,互联网上的任何资源

new URL()    //创建一个URL对象,可以将一个网址转为对象,分离各部分
searchParams    //获取网址中查询参数的部分
searchParams.get(参数名)    //获取参数名对应的参数值

五、定时器

1,一次性定时器

//一次性定时器

setTimeout(回调函数,间隔时间)

//开启
var timer = setTimeout(()=>{
	console.log('时间到')
},3000)

//清除定时器
clearTimeout(timer)

2,周期性定时器

//周期性定时器

setInterval(回调函数,间隔时间)

//开启
var vtimer = setInterval(()=>{
	console.log('嘀嘀嘀')
},1000)
//清除
clearInterval(vtimer)

3,立即执行的定时器

//开启
var timer = setImmediate(回调函数)
//清除
clearImmediate(timer)

//开启后没有清除方法
process.nextTick(回调函数)

js是单线程运行逻辑,所有的程序默认在一个线程执行,出现排队执行

定时器在在主线程之外有一个事件队列,会将回调函数放入事件队列中

六、同步执行和异步执行

同步执行:在主线程中执行,会阻止后续代码执行

异步执行:会将回调函数放入到事件队列执行,不会阻止主线程后续代码执行

你可能感兴趣的:(web-学习笔记,前端,学习,node.js)