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 - 控制台对象,用于输出
浏览器输出效果如下:
3. process - 进程,用于查看Node.进程
计算机上任何的软件运行都有相应的进程;
4. 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