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 回车(进入交互模式)

要知道 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 要保持一致)

浏览器输出效果如下:

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

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

  • process.arch         查看当前CPU架构
  • process.platform  查看当前的操作系统
  • process.version    查看Node.js的版本号
  • process.pid          查看当前Node.js的进程编号
  • process.kill( )        结束指定编号的进程

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下每一个文件代表一个模块,每个模块是一个独立的功能体。

举例:(模拟  主模块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安装的时候会附带安装。

切换命令行路径:

方法1方法2(推荐)
(1)cd 目录的路径
(2)盘符名称:
如果涉及到盘符的变化才需要使用第(2)步
在要进入的目录的空白位置按住Shift,单击鼠标右键,选择”在此处打开powershell窗口“

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

3. 核心模块

(1)querystring 模块

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

const querystring = require('querystring');
parse( )将查询字符串解析为对象,最终获取数据
//引入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. 三种模块的引用方式


阅读量:397

点赞量:0

收藏量:0