首页 > 编程语言 >Node second drive

Node second drive

时间:2022-12-26 18:33:07浏览次数:50  
标签:Node node const log require drive js second console

19~49

JS是同步语言

  • 如何实现异步功能?

    在node环境global对象&浏览器环境window对象,我们可以编写像setTimeout这样的异步功能,这得益于libUV等部署于js核心功能的模块

process&&threads

  • CPU从一个线程切换到另一个线程进行并行;多核意味着每个核心可以单独负责一个线程
  • 线程相互独立,并排执行,允许我们异步执行代码
  • 多线程编程非常复杂,诸如死锁等问题;因此js是一个单线程编程语言

node如何实现js的异步?

  • node有一条main thread,执行事件循环,事件循环处理所有的回调事件
  • 同时保存了一些线程作为线程池,遇到文件读取等等异步操作时交给自己的某个线程单独处理;
  • 对于网络请求,则与操作系统交互,毕竟操作系统更擅长网络通信。

node的事件循环

image

  • 每个阶段都有自己的消息队列(回调队列)

node与其他语言

  • node擅长异步,不擅长复杂计算
  • 如果我们的代码在cpu或者gpu卡住,那么node就不能很好的工作
  • node在重度提供数据流,有大量的io时运行良好,例如netflix这样的视频流,主要是输入和输出

观察者设计模式

  • 设计模式用来解决在各种工程中反复出现的问题
  • 是React等前端框架的基础

EventEmitter

// P31.js
const EventEmitter = require('events');
const celebrity = new EventEmitter();

// Subcribe to celebrity for Observer1
celebrity.on('race', (result) => {
    if (result === 'win') {
        console.log('Congratulations!You are the best!')
    }
});

// Subcribe to celebrity for Observer2
celebrity.on('race', (result) => {
    console.log('Boo i can be the best!')
});

process.on('exit', (code) => {
    console.log('Process exit event with', code)
})

celebrity.emit('race', 'win');

// node P31.js
// Congratulations!You are the best!
// Boo i can be the best!
// Process exit event with 0

http

// P33.js
// 1
const http = require('http');

const req = http.request('http://www.baidu.com',(res) => {
 res.on('data',(chunk) => {
    console.log(`Data chunk: ${chunk}`);
 });
 res.on('end',() => {
     console.log('No more data');
 });
});

req.end();


// 2
// const {request} = require('https');
const {get} = require('https');

const req = get('https://www.baidu.com',(res) => {
 res.on('data',(chunk) => {
    console.log(`Data chunk:${chunk}`);
 });
 res.on('end',() => {
     console.log('No more data');
 });
});

// req.end();

模块

P34~38为模块导入导出。略

缓存

node会缓存加载的模块,不会重复加载

// P39
const { send } = require('./request');
const { read } = require('./response');
const { REQUEST_TIMEOUT } = require('./request');

// 第二次加载来自'./request'的函数时,不会重新加载,而是在缓存中寻找
console.log(require.cache)

index.js

使用index.js集成一个文件夹下的导出(这是node之父所反对使用的,理由是增加了复杂度、并增加混乱)

// P40 P41
module.exports = {
	...require('./request'),
	...require('./response')
}

module vs package

// P43
npm init -y 
// 初始化npm并全部选y。会得到package.json

Semantic Versioning 2.0.0

语义化版本 2.0.0 | Semantic Versioning (semver.org)

标签:Node,node,const,log,require,drive,js,second,console
From: https://www.cnblogs.com/shixiu/p/17006455.html

相关文章

  • Alertmanager 告警处理前准备(node_exporter下线告警规则)3
    一.告警规则告警规则是通过YAML格式进行定义,在Prometheusserver中使用PromQL配置实际告警解发条件,Prometheus会根据告警规则及配置周期进行周期性计算,若满足触发条......
  • 面试官:说说你对 Node 中的 Stream 的理解
    大家好,我是CoderBin前言面试官:“说说你对Node中的Stream的理解”紧张的萌新:“好像是一种流?...”面试官:“...”······又来到了面试官系列,本次讲解的是node中关于......
  • 开发环境需要同时安装2个nodejs版本
    由于同时有vue2和vue3的项目开发情况,vue2项目的nodejs版本是12,vue3项目在node12版本下运行不了,要求最低14版本,因此要用nvm同时安装和控制2个版本。安装步骤:1、卸载已经安......
  • Docker+Jenkins+Gitee+Node+Vue构建dist包并通过publish over ssh传输到服务器替换重
    场景docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端分离版为例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/12837......
  • 安装node.js与webpack创建vue2项目
    本文为博主原创,转载请注明出处:1.安装node.js下载地址:http://nodejs.cn/download/(可查看历史版本)node.js中文网:http://nodejs.cn/api-v16/建议下......
  • NodeJS 将 Base64 或 Buffer 转可读流(Readable)
    需求如果我们有一个图片文件,想创建当前图片可读流(Readable),可以像这样constfooReadStream=fs.createReadStream('./foo.png'),获取到foo.png的可读流(Readable......
  • Node.js 中的模块化
    1Node.js中模块的分类Node.js中根据模块来源的不同,将模块分为了3大类,分别是:⚫内置模块(内置模块是由Node.js官方提供的,例如fs、path、http等)⚫自定义模块(用户......
  • node.js里面的http模块
    http模块1什么是http模块http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑......
  • vue安装node-sass提示没有vendor目录及binding.node文件的解决办法
    vue安装node-sass提示没有vendor目录及binding.node文件的解决办法一.异常现象我在网上下载了一个开源的vue项目,然后执行如下命令:npmrundev结果产生如下图所示异常信息:......
  • Blender必备插件 Node Preview V1.7 材质节点预览插件
    NodePreview是Blender的节点预览缩略图插件,对于可视化编辑非常有用的,也就是说你在编辑节点的时候可以实时的显示出来对于贴图更改的变化,而且还会自动更新,所预览的过程是在......