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

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

一. nodejs 的特点

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

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

示例:点餐

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

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

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

二. npm 命令

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

1、

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

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

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

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

全局安装命令为:

rush:js;"> $npm install -g moduleName

获知使用:

rush:js;"> $npm set global=true

来设定安装模式。

使用:

rush:js;"> $npm get global

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

示例:

rush:js;"> npm install express

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

rush:js;"> npm install -g

将包安装到全局环境中

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

rush:js;"> npm install --save

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

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

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

4、

5、

6、文件地址

7、nes:查看包所依赖的Node的版本

8、文件夹

9、内容后进行重建

10、

11、

12、

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

rush:js;"> $ npm help json

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

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

rush:js;"> $ npm search packageName

15、一个package.json文件包括名称、版本、作者这些信息等

16、安装路径 安装路径

17、

18、

19、升级(降级)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

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

执行 test.js

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

他们之间的关系就像:

rush:js;"> var a = new Object();//a相当于module.exports var b = a; //b相当于exports

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

rush:js;"> //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();
rush:js;"> //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 :

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

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

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...