本文实例讲述了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模块用法示例
# 我是
# 的是
# 收银员
# 是一个
# 会以
# 就可以
# 目录下
# 而不是
# 创建一个
# 命令行
# 给你
# 就像
# 你就
# 将会
# 是这样
# 可以说
# 是从
# 将其
# 把它
# 运行平台
相关文章:
高端企业智能建站程序:SEO优化与响应式模板定制开发
在线制作视频网站免费,都有哪些好的动漫网站?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
营销式网站制作方案,销售哪个网站招聘效果最好?
如何通过智能用户系统一键生成高效建站方案?
如何用好域名打造高点击率的自主建站?
如何在万网主机上快速搭建网站?
c++怎么用jemalloc c++替换默认内存分配器【性能】
为什么Go需要go mod文件_Go go mod文件作用说明
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
建站之星代理商如何保障技术支持与售后服务?
如何快速登录WAP自助建站平台?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
制作网站外包平台,自动化接单网站有哪些?
北京网站制作网页,网站升级改版需要多久?
宝塔新建站点为何无法访问?如何排查?
定制建站是什么?如何实现个性化需求?
建站之星logo尺寸如何设置最合适?
深入理解Android中的xmlns:tools属性
网站制作服务平台,有什么网站可以发布本地服务信息?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
建站主机解析:虚拟主机配置与服务器选择指南
建站之星如何开启自定义404页面避免用户流失?
定制建站价位费用解析与套餐推荐全攻略
深圳网站制作案例,网页的相关名词有哪些?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何高效完成自助建站业务培训?
如何快速搭建高效服务器建站系统?
如何在IIS中新建站点并解决端口绑定冲突?
已有域名和空间,如何快速搭建网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
制作网站的基本流程,设计网站的软件是什么?
如何使用Golang table-driven基准测试_多组数据测量函数效率
深圳网站制作平台,深圳市做网站好的公司有哪些?
建站之星导航菜单设置与功能模块配置全攻略
,南京靠谱的征婚网站?
香港网站服务器数量如何影响SEO优化效果?
如何破解联通资金短缺导致的基站建设难题?
网站企业制作流程,用什么语言做企业网站比较好?
在线教育网站制作平台,山西立德教育官网?
如何高效配置IIS服务器搭建网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
高端建站如何打造兼具美学与转化的品牌官网?
Android滚轮选择时间控件使用详解
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何选择网络建站服务器?高效建站必看指南
如何配置WinSCP新建站点的密钥验证步骤?
*请认真填写需求信息,我们会在24小时内与您取得联系。