node.js和js

48 阅读2分钟

这是我参与【第五届青训营】伴学笔记创作活动的第五天

Js与ECMAScript(ES)是一个东西

 

变量定义:

使用let,const(定义变量后,值无法更改),不建议使用var

变量名:必须是合法的标识符,不能以数字开头

表达式:返回一个值,与语句区别

动态类型:类型运行时可变,可动态检测

使用let或者const会生成块级作用域

变量屏蔽与作用域

 

对象是属性的集合

合法标识符:不能有空格,短杠,不能以数字开头

对象属性是函数的话,一般称为对象的方法

Object.keys(对象)会返回对象的全部属性

遍历对象属性:

For(const key in 对象)

{

Console.log(key.对象[key]);}

Delete 对象.属性 删除对象的属性

Const不变性指的一个对象对应一个内存区域,这个内存区域的指向关系是不能变的,但这个内存区域指向的内容是可变。

this指调用方法的实例(对象)

类中的方法属于类,是所有实例所共享的,而实例里没有类的方法,他只能访问和使用类的方法

因为他能访问到

所以console.log(‘方法’ in 实例)会返回true

Node.js的应用场景

1. 前端工程化

Bundle:webpack,vite,esbuild,parcel

Uglify:uglifyjs

Transpile:bablejs,typescript

其他语言加入竞争:esbuild,parcel,prisma

现状:难以替代

2. Web服务端应用

学习曲线平缓,开发效率高

运行效率接近常见的编译语言

社区生态丰富及工具链成熟(npm,V8,inspector)

与前端结合的场景会有优势

现状:竞争激烈,Node.js有自己独特的优势

3. Electron跨端桌面应用

商业应用:vscode,slack,discord,zoom

大型公司内的效率工具

现状:大部分场景在选型时,都值得考虑

 

Node.js运行时结构

V8:JavaScript Runtime,诊断调试工具(inspector)

Libuv:eventloop(事件循环),封装各种操作系统上的API,提供跨平台的IO操作,syscall(系统调用)

Node.js运行时结构-特点

1. 异步I/O

2. 单线程

3. 跨平台

在这次的学习中,我学会了node.js的基础知识,知道了他是如何运行的,是用来干什么,随着以后的深入学习一定可以更上一层楼