nodejs入门教程一:概念与用法简介

发布时间 - 2026-01-11 00:47:59    点击率:

本文实例讲述了nodejs概念与用法。分享给大家供大家参考,具体如下:

一. nodejs 的特点

1.nodejs 是一个javaScript 的运行平台,采用了Google Chrome浏览器的V8引擎。

2.拥有事件驱动:当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

示例:点餐

在基于线程的方式中(thread-based way):收银员接待你点餐开始,收银员不能接待下一个人,直到你拿到食物离开。

现实中是这样,(基于事件驱动方式)只要你把点餐单给收银员,他给你一个号,你就坐着等,收银员开始接待下一个客户。如果你的食物准备好了,就呼叫你的号码让你去柜台取。关键的一点是,你没有阻塞下一个客户的订餐请求。呼叫你取餐,在编程领域,我们称为回调(callback function)。

3.异步编程,单线程:高并发时,更加灵活,非阻塞,性能好。

二. npm 命令

npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。

1、npm install moduleNames:安装Node模块

安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。

node的安装分为全局模式和本地模式。

一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。

在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。

全局安装命令为:

$npm install -g moduleName

获知使用:

$npm set global=true

来设定安装模式。

使用:

$npm get global

可以查看当前使用的安装模式。

示例:

npm install express

默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6

npm install <name> -g

将包安装到全局环境中

但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

npm install <name> --save

安装的同时,将信息写入package.json中,项目路径中如果有package.json文件,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。

2、npm view moduleNames:查看node模块的package.json文件夹
注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用$npm view moduleName labelName

3、npm list:查看当前目录下已安装的node包
注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当前安装的所有node包

4、npm help:查看帮助命令

5、npm view moudleName dependencies:查看包的依赖关系

6、npm view moduleName repository.url:查看包的源文件地址

7、npm view moduleName engines:查看包所依赖的Node的版本

8、npm help folders:查看npm使用的所有文件夹

9、npm rebuild moduleName:用于更改包内容后进行重建

10、npm outdated:检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

11、npm update moduleName:更新node模块

12、npm uninstall moudleName:卸载node模块

13、一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访问npm的json文件夹的方法如下:

$ npm help json

此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打开。

14、发布一个npm包的时候,需要检验某个包名是否已存在

$ npm search packageName

15、npm init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

16、npm root:查看当前包的安装路径
npm root -g:查看全局的包的安装路径

17、npm -v:查看npm安装的版本

18、npm prune -x:将会移除package.json中没有列举的node_modules的包,当执行 npm list 报 err 时,就可以使用该命令。

19、npm -g install npm@x.xx.xx : 升级(降级)npm,然后复制 C:\Users\你的windows用户名\AppData\Roaming\npm\node_modules\npm下的所有文件到你的Nodejs安装目录的 \nodejs\node_modules\npm 中,替换掉所有所有的文件。

三. nodejs exports、module.exports 与require() 结合使用

每一个node.js执行文件,都自动创建一个module对象,同时,module对象会创建一个叫exports的属性,初始化的值是 {},只有通过exports或module.exports将其暴露出去,外部才能通过require() 进行访问。

① module.exports 初始值为一个空对象 {}
② exports 是指向的 module.exports 的引用
③ require() 返回的是 module.exports 而不是 exports
④ 综上,可以说 exports 是给 module.exports 添加属性和方法!!!

示例:fool.js

exports.a = function(){
  console.log('a')
}
exports.a = 1;
module.exports = {a: 2};
exports.a = 3;

执行 test.js

var c = require('./fool'); //require() 返回的是 module.exports 而不是 exports
console.log(c.a);//2

他们之间的关系就像:

var a = new Object();//a相当于module.exports
var b = a; //b相当于exports

5.在深入一点:exports返回的是一个json对象,而module.exports可以返回任何形式的数据格式,例如数组,字符串,数字等类型时,我们必须要用module.exports

//test.js
module.exports = '我是module.exports暴露的字符串';
exports.name = '我是exports暴露的name';
exports.method = function(){
  console.log('我是exports暴露的method');
};
console.log("我是console.log(exports)的结果:");
console.log(exports);
console.log();

//fool.js
var obj = require('./test.js');
console.log("我是console.log(module.exports)的结果:");
console.log(module.exports);
console.log();
console.log("我是console.log(obj)的结果:");
console.log(obj);//require() 返回的是 module.exports 而不是 exports

执行 fool.js :

我是console.log(exports)的结果:
{ name: '我是exports暴露的name', method: [Function] }
我是console.log(module.exports)的结果:
{}
我是console.log(obj)的结果:
我是module.exports暴露的字符串

希望本文所述对大家nodejs程序设计有所帮助。


# nodejs  # 入门教程  # 概念  # 用法  # nodejs入门教程五:连接数据库的方法分析  # nodejs入门教程四:URL相关模块用法分析  # nodejs入门教程三:调用内部和外部方法示例  # nodejs入门教程二:创建一个简单应用示例  # NodeJS测试框架mocha入门教程  # Nodejs极简入门教程(三):进程  # Nodejs极简入门教程(二):定时器  # Nodejs极简入门教程(一):模块机制  # nodejs教程 安装express及配置app.js文件的详细步骤  # NodeJS框架Express的模板视图机制分析  # Nodejs的express使用教程  # nodejs入门教程六:express模块用法示例  # 我是  # 的是  # 收银员  # 是一个  # 会以  # 就可以  # 目录下  # 而不是  # 创建一个  # 命令行  # 给你  # 就像  # 你就  # 将会  # 是这样  # 可以说  # 是从  # 将其  # 把它  # 运行平台 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 千库网官网入口推荐 千库网设计创意平台入口  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何在云主机上快速搭建网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  在线教育网站制作平台,山西立德教育官网?  清除minerd进程的简单方法  Python正则表达式进阶教程_复杂匹配与分组替换解析  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  音乐网站服务器如何优化API响应速度?  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何快速搭建个人网站并优化SEO?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  javascript如何操作浏览器历史记录_怎样实现无刷新导航  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Linux后台任务运行方法_nohup与&使用技巧【技巧】  高防服务器租用指南:配置选择与快速部署攻略  如何将凡科建站内容保存为本地文件?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  android nfc常用标签读取总结  中山网站推广排名,中山信息港登录入口?  如何在IIS7上新建站点并设置安全权限?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  在centOS 7安装mysql 5.7的详细教程  Python进程池调度策略_任务分发说明【指导】  EditPlus 正则表达式 实战(3)  JavaScript Ajax实现异步通信  深圳网站制作的公司有哪些,dido官方网站?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Python文本处理实践_日志清洗解析【指导】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何快速搭建高效服务器建站系统?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  zabbix利用python脚本发送报警邮件的方法  详解Huffman编码算法之Java实现  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  ,交易猫的商品怎么发布到网站上去?  音响网站制作视频教程,隆霸音响官方网站?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  网站建设保证美观性,需要考虑的几点问题!  如何用VPS主机快速搭建个人网站?  创业网站制作流程,创业网站可靠吗?