PLAN
Node list
- http、stream、buffer、process、thread
- sql
- 微服务
- web Framework (express、koa、egg、nest)
- Node
- module引用
- promise
- 高并发、多线程、分布式
- 运行原理
Docker list
- docker file
- ks8
Other list
- shell
- CI
- git
- process manager
import、import()、require()
import
- 在编译时时执行,并不会分析逻辑语句,所以import必须放在文件头,否则报错
- 不能在代码块中使用(比如:if代码块或函数中)
- 这样的设计,固然有利于编译器提高效率,但也导致无法在运行时加载模块
- 无法实现模块的动态加载
import()
import()
函数可以用在任何地方,不仅仅是模块,非模块的脚本也可以使用- 它是运行时执行,也就是说,什么时候运行到这一句,才会加载指定的模块
import()
函数与所加载的模块没有静态连接关系,这点也是与import
语句不相同import()
类似于 Node 的require
方法,区别主要是前者是异步加载,后者是同步加载
require()
- 类似于import()的使用,可以在任何地方使用
- 可以实现动态加载,但是是同步加载
例子
import('./myModule.js').then(({export1, export2}) => { // ...·});
import('./myModule.js') .then(myModule => { console.log(myModule.default); });
Promise.all([ import('./module1.js'), import('./module2.js'), import('./module3.js'), ]) .then(([module1, module2, module3]) => { ··· });
async function main() { const myModule = await import('./myModule.js'); const {export1, export2} = await import('./myModule.js'); const [module1, module2, module3] = await Promise.all([ import('./module1.js'), import('./module2.js'), import('./module3.js'), ]); }
Node内存
1、64 位系统约为 1.4GB,32 位系统约为 0.7GB。
这个说的是 V8 对使用内存的限制,而且是所有可用内存。当总使用内存超过 1.4G 之后就会 OOM(Out Of Memory)。
2、Buffer 是基于 c++,不受 V8 内存限制。
Buffer 使用的内存不在 1.4G 的计算范围之内。
3、测试结果
Buffer 的长度由 Node.js 限制(而非内存空间),定义在 https://github.com/nodejs/node/blob/master/lib/buffer.js#L90-L101,当 Buffer 被创建时进行长度的判断。
–max-old-space-size=SIZE 单位M 比如:1536(1.5G)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 个人记录!
评论