Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node.js的基础介绍 #5

Open
WeiShengv99 opened this issue Nov 20, 2021 · 0 comments
Open

Node.js的基础介绍 #5

WeiShengv99 opened this issue Nov 20, 2021 · 0 comments
Labels

Comments

@WeiShengv99
Copy link
Owner

Node在底层通过一个叫做libuv的库去访问操作系统的非阻塞网络调用。

这个库会去管理线程池,借助它来模拟出一种非阻塞现象。它提供快速/跨平台/非阻塞I/O的本地库

在Node中。v8模块只是负责js的编译和执行,它可以把js直接编译成机器码,还能为代码做一些优化,所以node才可以这么快。被用作JS的运行时。

node可以启用3个阶段的特性,如果你想使用新的特性,只需要在启动node的时候带上某些参数,不能版本提供的新特性当然也不一样。(ES5,ES6)

node —inspect —debug-brk 可以让Node启用调试器,并停在第一行,你可以在chrome中进行调试

Node程序一般有3种,web应用程序,命令行工具,和后台程序,桌面程序。

Node.js的基础编程

创建程序的时候,不论是什么工具,基本不可能把所有代码放到一个文件里。所以在代码分割上,传统的做法是按逻辑相关性对代码分组,将包含大量代码的单个文件分解成多个文件。

在某些语言中,比如PHP和Ruby,整合其他文件,可能会影响全局作用域,他们会提供一个叫做命名空间的方式来避免这个问题,但是在Node当中,我们不需要担心这个问题,Node不会给你污染全局作用域的机会。

创建一个基本的Node.js应用

mkdir my_module
cd my_module
npm init -y

-y参数的意思是使用默认选项,然后npm就会创建一个使用默认值的package.json的文件,

Node.js模块的寻找路径

模块可以是一个文件,也可以是包含多个文件的目录,如果是一个目录,node通常会去寻找目录下一个文件名字是index.js的文件(具体寻找路径可以去官网查看详细说明),模块的寻找会与NODE_PATH有关(环境变量),它可以改变Node模块的默认路径,

require的解析

require一个模块还是node当中少数的同步IO操作之一,它会阻塞node进程,如果你在每个http请求的处理过程中去require一个文件,那么就会遇到性能问题。

如果你重写了到处的模块export对象,并且同时又个module.export 对象,那么export会被忽略,

Node.js可以把模块作为一个对象缓存起来,如果程序中2个文件引用了同一个模块,第一个require会把模块返回的数据缓存到内存当中,这样第二次require的时候就不用再去访问和计算模块的源文件了。(也就是说,require2次得到的模块对象是同一个对象)

事件——异步编程

Node.js当中的模块大多是继承自EventEmitter,比如http模块,本质上事件监听器就是一个回调,他和事件相关联,Node.js的http模块就是一个事件发射器。

Web数据去的选择

我们首先考虑SQLite数据库,它是一个进程内数据库,所以比较方便(不太理解):你不需要再系统上安装一个后台运行的数据库,你添加的所有数据都会写到一个文件里。也就是说程序停掉后再起来的时候数据还在,所以比较适合新手入门的时候学习使用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant