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

相关文章
|
6天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
10天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
10天前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
24 1
|
15天前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
10天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
19天前
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
18 4
|
19天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
19 4
|
1月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
31 1
|
1月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
16 2