Nodejs特点以及js文件的引用

本文深入探讨Node.js的单线程、非阻塞I/O及事件驱动特性,解析其与传统多线程服务器的不同之处。同时,介绍了Node.js模块系统的工作原理,包括如何通过exports和require进行模块间通信,以及如何利用module.exports暴露类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Nodejs特点:单线程、Non-blocking I/O、Event Driven。
首先,Node不为每个用户开辟一个线程,所以非常极端的选择的单线程。单线程,要照顾所有的用户,那么就必须要有非阻塞I/O,否则一个人的I/O就把别人】自己阻塞了。一旦有了非阻塞I/O,一个人如果I/O去了,就会放弃CPU使用权,换成另外一个人使用CPU(或者执行此人后面的语句)。所以CPU的利用率100%。第一个I/O结束了,就要用事件来通知线程,执行回调函数。此时必须有事件环,就有一个排队调度机制。Node中超过半数的C++代码,在搭建事件环。
2、Nodejs不同之处
(1)没有自己的语法,使用V8引擎,所以就是js。V8引擎解析js效率非常高,并且V8中很多东西都是异步的。Node就是将V8的一些功能自己没有重写(用的别人的),移植到服务器上。
(2)没有web容器,就是安装配置完成会后,没有根目录。
3、前端:jQuery js相当于后端的:express 原生node
一个js文件中定义变量、函数都只在内部有用。多个js文件相互之间调用需要exports暴露以及require引用。JS不包含作用域,前端写的时候是封装在。
exports可以暴露很多东西变量、函数
foo.js

var msg = "hello";
function showInfo(){
    console.log("hihi");
}
exports.msg = msg;
exports.showInfo=showInfo;

在使用时只需要require一次。增加了顶层变量foo,所有函数和变量都要从这个顶层变量。
04.js

var foo = require("./test/foo.js");
console.log(foo.msg);
foo.showInfo();

Node中,js和js文件有exports和require网站在一起的,不是由html联系在一起的。
4、在js文件中用module.export=构造函数的方式向外暴露一个
People.js

function People(name,sex,age){
    this.name = name;
    this.sex = sex;
    this.age = age;
}
People.prototype = {
    sayHello : function(){
        console.log(this.name + this.sex + this.age)
    }
}
//此时,People为构造函数,可以用new实例化了
module.exports = People;

05.js

var People = require("./test/People.js")
var xiaoming = new People("xiaoming", "nan", "12");
console.log(xiaoming);
xiaoming.sayHello();

结果图:

H:\nodedemo\test3>node 05.js
{ name: 'xiaoming', sex: 'nan', age: '12' }
xiaomingnan12

js文件和js文件之间有两种合作模式。
(1)某一个js文件提供了函数供别人引用,只需要暴露函数即可。exports.msg=msg;
(2)某一个js文件描述了一个类,供别人引用。module.exports=People;
5、如果require没有写./ 则默认是从node_modules导入的。每个模块文件夹中,推荐在根目录中写一个package.json文件,名字不可改。node将自动读取里面的配置。有一个main,是入口文件。

{
    "name":"ceshi",
    "version":"1.0.1",
    "main":"app.js"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值