(Node.js)S2初识Node.js

Node.js的特点和优势

  • 他是一个JavaScript运行环境
  • 依赖于Chrome V8引擎进行代码解析
  • 事件驱动(event-driven)
  • 非阻塞I/O(输入输出)
  • 轻量、可伸缩、使用实时数据交互应用
  • 单进程、单线程

Node.js安装

  • 网址:https://nodejs.org/zh-cn/
  • 一直点next
  • 检测 : cmd中 node -v出现版本号

Path&快速体验node.js

// 导入node的核心模块
var http = require("http");
//创建一个web服务器
var server = http.createServer(function(req,res){
	// res是一个响应对象,有一个res.end('')向浏览器返回一些文本。
	res.end('asdas')
})
// 启动web服务器
// 第一个参数:端口号,
// 第二个参数:ip地址(不写默认本机)
// 第三个参数:服务器启动成功后回调函数
server.listen(3000,'localhost',function(){
	console.log('服务器运行在localhost:3000')
});

启动

在cmd中

node 路径\文件名.js

REPL运行环境

在cmd中直接node 开启 Node的REPL环境。
在这里插入图片描述

全局变量和模块化作用域

在node中导入模块(文件)
require(‘文件路径/文件名.js’)

  • 当模块中的变量用global.变量名时,创建了全局变量,存在全局变量污染,也不知道从哪个模块导出。不建议使用

Node提供的模块化机制

  • module:表示一个模块
  • require:用来导入模块
  • exports和module.exports导出模块中的成员(向外暴露成员)

如 :

1.js:

exports.a = 10;

2.js:

exports.b = 'zcx';

main.js:

var m1 = require('./1.js');
var m2 = require('./2.js');
console.log(m1.a);
console.log(m2.b);

在这里插入图片描述

** exports和module.exports区别**

  • 在node机制中,向外暴露成员永远都以module.exports指向的成员为准,而exports也是指向module.exports,当exports=111;相当于切断了exports指向module.exports,但是还是以module.exports为准,所以打印为{}。
  • module.exports可以单独的定义,返回数据类型,而export只能是返回一个object对象。
module.exports=['劳黑炭','百度经验','module.exports'];    //正确
exports=['劳黑炭','百度经验','module.exports'];   //报错

全局作用域

// 用来输出当前文件所在绝对路径
console.log(__dirname);
// 用来输出当前文件所在绝对路径。包含名称
console.log(__filename);

在这里插入图片描述

node.js的全局函数

函数描述
setTimeout(cd, ms)在指定ms毫秒后执行一次函数cd,只执行一次 ,返回值可作为clearTimeout的参数
cleatTimeout(t)用于停止之前通过setTimeout()创建的定时器,t是setTimeout()函数创建的计算器
setInterval(cd,ms)在指定ms毫秒后执行一次cd,可反复执行,返回值可做为可以作为clearInterval的参数
clearInterval(t)用于停止setInterval函数。参数为setInterval的返回值。
setImmedidate(cd)用于延迟调用cd函数。cd将在I/O事件回调之后,setTimeout()和setInterval回调之前调用,返回值可以作为clearImmedidate(t)的参数
clearImmedidate(t)用于停止出发回调函数

console对象提供的函数

在这里插入图片描述

使用模块化重写计算器

将加减乘除分别写在一个模块中(一人一个文件夹),写一个统一封装的模块index,直接访问index模块。
在这里插入图片描述

// 加法模块
module.exports = function(x, y){
    return parseInt(x) +parseInt(y);
}
// 封装统一暴露模块
module.exports = {
    add:require('./add.js'),
    sub:require('./sub.js'),
    mul:require('./mul.js'),
    div:require('./div.js')
};
//测试模块
// 导入计算器模块
var calc = require('./index.js');
console.log(calc.add(7,8));
console.log(calc.sub(7,8));
console.log(calc.mul(7,8));
console.log(calc.div(7,8));

require的模块加载规则和模块的缓存

  • 文件模块:用户自己写的
  • 核心模块:node自带的,看node.js的官方文档

文件模块加载规则

  • 以路径标识符开头( ./ . / …/ 等)若无后缀名也无同名文件则,书序为–>.js–>.json–>.node 查找

核心模块加载规则

  • 以os为模板
var os = require('os');
console.log(os.cpus());

在这里插入图片描述

文件的缓存

  • 模块多次加载时,先从内存检查是否别加载过,若加载过,从内存中执行,只会执行一次。
  • 缓存删除:delete require.cache[‘文件路径’] 将缓存中的文件路径删除
//1.js:
console.log("文件模块加载成功")
----------------------

require('./1');
require('./1');
require('./1');
require('./1');

在这里插入图片描述

//1.js:
delete require.cache[__filename];
console.log("文件模块加载成功")
----------------------

require('./1');
require('./1');
require('./1');
require('./1');

在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值