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 前端开发
在Node.js中,如何合理使用模块来避免全局变量的问题?
在Node.js中,如何合理使用模块来避免全局变量的问题?
264 71
|
2月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
259 19
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
379 1
|
6月前
|
JavaScript 前端开发 开发者
Node学习笔记:HTTP模块
总的来说,Node.js的HTTP模块是一个强大的工具,可以帮助你处理HTTP协议的各种需求。无论你是想开设自己的餐厅(创建服务器),还是想去别的餐厅点菜(发出请求),HTTP模块都能满足你的需求。
209 18
|
7月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
9月前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
210 32
|
8月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
11月前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
207 9

热门文章

最新文章