Node.js(一)概述、全局对象/函数、node各模块使用介绍

简介: Node.js(一)概述、全局对象/函数、node各模块使用介绍

一、Node.js概述

1. 对比JS


       JS运行在客户端,存在多种解释器,有代码兼容性问题;Node.js运行在服务器端,只有一种解释器,没有代码兼容性问题。两者有相同自定义对象和内置(ES)对象,不同的宿主对象。


       JS用于开发浏览器端的交互效果;Node.js 用于服务器端的开发,例如:数据库访问,其他服务器的调用。其实就是,JS负责前端,Node.js负责后台。


2. 下载安装


       安装node只需在官网直接下载安装即可。


官网:Node.js


中文版:Node.js 中文网


3. 运行 Node.js


       运行方式有两种,打开命令提示行,脚本模式:node 文件;交互模式:node 回车(进入交互模式)


3e906c1cb09b4065a52611767a97efa3.png58c96361ba6c4d4dad42a68a0bc5f4da.png


       要知道 node 属于单线程的运行逻辑,支持数万个并发连接,适合做基于社交网络的大规模 web 应用,不适合做 CPU 密集型应用。


二、全局对象

1. global - 用于检测一个变量或者函数是否为全局


       JS(浏览器)下的global对象名称为 window,在 Node.js 下,一个脚本文件不属于全局作用域。在JS下,一个脚本属于全局作用域,所以存在全局污染。


var a = 1;
//Node.js下:
console.log( global.a );//undefined 不是全局作用域
//JS下:
alert( window.a );//1 a为全局作用域

2. console - 控制台对象,用于输出


console.log(1);     //输出日志

console.info(2);    //输出消息

console.warn(3);   //输出警告

console.error(4);   //输出错误

console.time( m ); //开始计时

console.timeEnd( m ); //结束计时(开始计时与结束计时所提供的参数 m 要保持一致)

浏览器输出效果如下:

314ace45610f4fc199b9fdccd133e33a.png



3. process - 进程,用于查看Node.进程


       计算机上任何的软件运行都有相应的进程;


process.arch         查看当前CPU架构

process.platform  查看当前的操作系统

process.version    查看Node.js的版本号

process.pid          查看当前Node.js的进程编号

process.kill( )        结束指定编号的进程

bedec334ad5843f0a166e201cd050e0f.png

4. Buffer - 缓冲区,常用于保存网络传输时的资源


       缓冲区是内存中临时保存数据的区域;


Buffer.alloc( 6,'abc涵' );  //创建Buffer,分配空间并存储数据,每个汉字占3个字节

buf.toString( )                 //将Buffer转为字符串


三、全局函数 - 定时器函数

一次性定时器

开启:var timer = setTimeout(回调函数,间隔时间)  //间隔时间到,调用一次回调函数

清除:clearTimeout(timer);


//一次性定时器
var timer = setTimeout(function(){
  console.log('boom!!!'); //执行三秒后输出“boom!!!”
},3000);
//清除
clearTimeout(timer);

周期性定时器

开启:let timer = setInterval(回调函数,间隔时间)  //每隔一段时间,调用一次回调函数

清除:clearInterval(timer);

//周期性定时器
var timer = setInterval(function(){
  console.log('滴滴');  //每两秒打印一次“滴滴”
},2000);
console.log(1);
//清除
clearInterval(timer);

立即执行定时器

会将回调函数放入到事件队列,当主程序完成后会立即执行;nextTick早于setImmediate.


开启:let timer = setImmediate(回调函数)

清除:clearImmediate(timer)


开启:process.nextTick(回调函数)

          nextTick不能清除


定时器的回调函数是在程序最后执行的。


四、模块的分类

1. 自定义模块


       在Node.js下每一个文件代表一个模块,每个模块是一个独立的功能体。

bafbab6959fb47e1a8074498c7353a8f.png


举例:(模拟  主模块main.js;功能模块circle.js)


//1.在功能模块中编写功能函数
    function length(r){
        return 2 * Math.PI * r;//周长
   }
    function area(r){
        return Math.PI * Math.pow(r,2);//面积
   }
//2.在功能模块中将要导出的内容放入默认的空对象
    module.exports = {
  a:length,   //将函数lengeh导出,导出的名字为a
  b:area       //将函数area导出,导出的名字为b
  };
//3.在主模块中使用require函数将功能模块引入主模块
    let obj = require('./circle.js');
    console.log(obj.a(7).toFixed(2));
    console.log(obj.b(8).toFixed(2));

2. 第三方模块(包和NPM)

       包是指目录模块,通常表示第三方模块;下载网址:npm;NPM 则是被用于管理包的工具,在Node.js安装的时候会附带安装。


       切换命令行路径:

9e16a4f72973411d93114bbad2e496da (1).png

       npm的使用:npm可以下载安装、卸载、升级、上传第三方模块


801101b4b0544b4482ce3ce856c565fc.png

db532be67bab47848805307d594885eb.png


3. 核心模块

(1)querystring 模块


       查询字符串:浏览器端向服务器端查询数据的一种方式,位于浏览器的地址栏,querystring 模块用于处理网址中查询字符串的工具模块;使用前需要先导入 querystring 模块:


const querystring = require('querystring');
//引入querystring模块
const querystring = require('querystring');
//console.log(querystring);
//查询字符串
let str = 'kw=笔记本&price=4000';
//获取传递的数据
//解析为对象
let obj = querystring.parse(str);
console.log(obj.kw);
console.log(obj.price);

(2)URL


       统一资源定位,互联网上的任何资源(html、css、图形、数据......)都有对应的URL。


eg:http://www.codeboy.com:9999/products.html?kw=戴尔


new URL( ) 将一个URL解析为对象,获取URL中的各个部分

let obj = new URL('https:/www.tmooc.cn:443/course/web.html?did=2106&cname=node.js');
let obj1 = obj.search.slice(1);
let obj2 = querystring.parse(obj1);
console.log(`
  编号:${obj2.did}
  名称:${obj2.cname}
`);

(3)fs模块


       文件系统模块:用于文件操作,分为文件形式和目录形式;使用前需要先导入fs模块:

const fs = require('fs');

statSync(文件路径) 查看文件的状态

mkdirSync(目录的路径) 创建目录

rmdirSync(目录的路径) 移除目录,但不能移除有文件的目录

//引入fs模块
const fs = require('fs');
//查看文件状态
let s = fs.statSync('./04');
console.log(s);
//创建目录
fs.mkdirSync('./mydir');
//删除目录
fs.rmdirSync('./mydir');

4. 三种模块的引用方式

d51d351c6b1f429c94fa6fc94728a788.png

相关文章
|
23天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
23天前
|
JavaScript
常见函数的4种类型(js的问题)
常见函数的4种类型(js的问题)
11 0
|
23天前
|
JavaScript
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
9 0
|
1月前
|
自然语言处理 JavaScript 网络架构
js开发:请解释什么是ES6的箭头函数,以及它与传统函数的区别。
ES6的箭头函数以`=>`定义,简化了函数写法,具有简洁语法和词法作用域的`this`。它无`arguments`对象,不能用作构造函数,不支持`Generator`,且不改变`this`、`super`、`new.target`绑定。适用于简短表达式,常用于异步编程和高阶函数。
18 5
|
18天前
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
|
2天前
|
JavaScript 前端开发
js开发:请解释什么是ES6的Generator函数,以及它的用途。
ES6的Generator函数是暂停/恢复功能的特殊函数,利用yield返回多个值,适用于异步编程和流处理,解决了回调地狱问题。例如,一个简单的Generator函数可以这样表示: ```javascript function* generator() { yield 'Hello'; yield 'World'; } ``` 创建实例后,通过`.next()`逐次输出"Hello"和"World",展示其暂停和恢复的特性。
13 0
|
9天前
|
缓存 JavaScript 前端开发
js的入口函数,入口函数的作用
js的入口函数,入口函数的作用
15 4
|
14天前
|
域名解析 网络协议 JavaScript
【Node系列】node工具模块
Node.js有多个内置的工具模块,这些模块提供了用于执行各种任务的功能。
22 2
|
25天前
|
存储 前端开发 JavaScript
JavaScript如何封装一些常见的函数来提高工作效率
通过封装这些常见函数,你可以在项目中重复使用,提高代码的复用性和工作效率。这些函数包括获取元素、发起Ajax请求、处理本地存储、日期格式化、定时器等功能,可以在不同场景中减少重复的代码编写。
7 0
JavaScript如何封装一些常见的函数来提高工作效率
|
30天前
11_nest.js模块
11_nest.js模块
24 0