Node.js基础教学(一)

一、Node.js 简介

概念:

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境

**注:**是 Node 选择了 JavaScript,不是 JavaScript 发展出来了一个 Node。

运行命令:

1. 查看node版本号
node -v
2.查看NPM命令的版本号
npm -v
3. Node命令运行js文件
node 文件名(.后缀名)

**注:**后缀名可以用省略

4. 清屏命令
cls
5. 返回上一级目录
cd ..
6. 返回根目录
cd /
7. 进入相关目录
cd 文件夹名/相对路径/绝对路径
8. 查看当前路径下的文件及文件夹
dir

注:如果需要切换根目录路径的时候,则需要切换盘符

9. 切换盘符命令
盘符:

注:可以采用盘符路径切换模式,进行双盘符路径切换。

10. 创建文件夹命令
mkdir/md 文件夹的名字
11. 删除文件夹命令
rmdir/rd 文件夹的名字

采用命令删除,无法恢复。注:目录为非空目录不会删除

12. 帮助命令
help

二、Node特点

1.单线程

2.非阻塞I/O机制

3.事件环机制/事件驱动

三、Node全局对象和全局属性

Node全局对象:global

ES2020跨平台全局对象:globalThis

返回当前文件的父级路径(绝对路径):__dirname

返回当前文件的绝对路径:__filename

四、Buffer模块

概念:

Buffer模块是Node的核心类库,提供了一种原始的数据存储方法(即二进制形式存储数据)。注:虽然Buffer的存储方式为二进制,但其输出的表现形式为十六进制。

常用方法:

开辟缓存区方法

1.Buffer.alloc(size[, fill[, encoding]]),根据size的大小开辟缓存区

size,设置开辟缓存区的大小,单位是字节,一个字节采用两位16进制数表示

fill,设置缓存区填充值,默认值是0

encoding,设置编码格式,默认值utf8

let buf= Buffer.alloc(10,"a","utf16le");
console.log(buf);

2.Buffer.from(string[, encoding]);将参数字符串存入缓存区,注:开辟缓存区的大小跟字符串大小一致。

string,设置需要往缓存区存储的字符串

encoding,设置编码格式,默认值utf8

注:在Node中,一个中文字符3个字节

let buf=Buffer.from("我是web前端班级,1116");
let buf=Buffer.from("我,","utf16le");
console.log(buf);
输出缓存区的数据

buf.toString([encoding[, start[, end]]]),将缓存区的内容以字符串的形式输出

encoding,设置编码格式,默认值utf8

start,开始输出的位置,默认值0

end,结束输出的位置,默认值是字符串长度。注:结束位置前的内容会被读取,但结束位置的内容不会被读取

let buf=Buffer.from("我是web前端班级,1116");
console.log(buf.toString("utf8",3,10));
向缓存区写入数据

buf.write(string[, offset[, length]][, encoding]),将参数字符串写入到已有的缓存区。覆盖式写入

string,需要写入的字符串

offset,写入的偏移量,(写入的位置,包含当前位置)

length,写入的长度。

encoding,设置编码格式,默认值utf8

let buf=Buffer.alloc(100);
buf.write("今天是个雾霾天!",15,9);
console.log(buf.toString());

注:缓存区的大小不会改变,如果后写入的内容少于原来的内容,则只会部分覆盖。

合并缓存区

Buffer.concat(list[, totalLength]),合并缓存区,并生成新的缓存区。深拷贝缓存区。

list,是一个数组类型,表示缓存区的集合

totalLength,设置合并后的缓存区的长度,默认值是所有缓存区的总长度

let buf1=Buffer.from("刚才班长不在状态!");
let buf2=Buffer.from("一会下课罚跑圈!");
// console.log(buf1,buf2);
let buf=Buffer.concat([buf1,buf2],21)
console.log(buf.toString());
获取缓存区的长度

buf.length,获取当前缓存区的长度。

let buf=Buffer.from("我是憨憨!");
console.log(buf.length);

五、模块化

概念:

在Node.js中,一个js文件就称之为一个模块(Module)。

好处:

可以提高代码的安全性、维护性和可复用性。

步骤:

1、定义模块:对所需要的业务或功能进行封装。

2、抛出模块:模块只有一个出口,module.exports/exports。

3、引入模块:使用require()方法引入。

案例:

封装的js模块文件

//1、定义模块
function quire(arr){
    return [...new Set(arr)];
}
//2、抛出
module.exports=quire;

需要使用的模块文件

//3、引入
let a=require("./quire");
let arr=[1,3,5,2,4,6,2,3,5,6,7,4,6,7,8,];
let arr2=[2,3,5,3,4,6,3,,6,7,4,,2,43,5,6,7,7];
console.log(a(arr));
console.log(a(arr2));

Node模块化关键词

1、定义模板,

指定义一个具有特定功能的函数/类

function quire(arr) {
  return [...new Set(arr)];
}
2、抛出模块

抛出采用的关键词 module.exports或者exports

2.1module.exports的抛出方式
暴露抛出

语法:module.exports=方法名/属性名/类名

module.exports=quire;
let username="rypy";
module.exports=username;
隐式抛出

使用变量名抛出

语法:module.exports.新变量名=方法名/属性名/类名

let username="admin";
module.exports.uname=username;

直接抛出对象 (推荐使用)

语法:module.exports={新的键名:需要抛出的方法名/属性名/类名}

let username="admin123";
module.exports={"uu":username};
2.2、exports抛出方式

其是module.exports的引用,实际完成抛出功能的方法还是module.exports

exports不支持暴露抛出。只能采用重命名变量

语法:exports.变量名=方法名/属性名/类名

let pwd="123456";
exports.pp=pwd;
2.3、抛出使用规则

如果采用module.exports抛出同键名对象的时候,优先级要高于exports抛出的变量,如果采用module.exports抛出同名变量,exports抛出的也是同名变量,则谁在后面,谁会覆盖。

module.exports={aa:"bbbb"};//不会覆盖,优先级最高
module.exports.aa="bbbb";
exports.aa="aaa";

exports是module.exports的引用,当代码在执行的过程中exports会默认转换为module.exports,进行抛出,即实际完成抛出功能的关键词是module.exports

3、引入模块

在node模块化中引入只有一个关键词 require

语法:require(“绝对路径/相对路径/内置模块的名字/插件的名字”)

如果引入的是文件路径,则js文件的后缀名可以省略

let a=require("./quire");
let arr=[1,3,5,2,4,6,2,3,5,6,7,4,6,7,8,];
let arr2=[2,3,5,3,4,6,3,,6,7,4,,2,43,5,6,7,7];
console.log(a(arr));
console.log(a(arr2));

模块的加载机制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值