Node.js学习

参考链接:

1.1、模块化。 module
Node.js中是以模块化进行开发的,原生JavaScript中并没有模块系统,标准库也很少,类似NPM的包管理系统也很缺乏,这就会在造成各种空间污染、结构混乱,需要花费大量的时间去做容错。Node.js遵循CommonJS规范编写很好的解决了上述问题。
CommonJS定义的模块主要分为:模块引用(require) 模块定义(exports) 模块标识(module)三部分。

require根据外部模块ID,返回该模块输出的API;

每个模块中还有一个自由变量exports,它是一个对象,模块对外输出的API就绑定在这个对象上。而且exports是模块对外输出API的唯一途径;

每个模块中必须有一个自由变量module,它是对象。这个对象有一个id属性,表示该模块的id,同时应该是只读属性。module对象可以有一个uri属性,表示这个模块被加载的来源。

如果你的JS代码是根据CommonJS API编写的,那么,你就可以在与CommonJS兼容的系统上,用JavaScript做下面这些事情:

编写服务端应用;
编写命令行工具;
编写基于GUI的桌面应用;
混合应用程序;

1.2 Node.js中CommonJS规范的体现
模块引用: 统一通过require引入,并返回一个对象,这个对象上挂载着这个模块中的所有变量、函数...那么跨文件获取时,就不需要通过global对象,封闭了命名空间。

模块定义: 一个js文件就是一个模块 ,将文件中的变量和函数挂载到exports对象上,作为其属性即可定义导出运用。

模块标识: 命名统一采用驼峰命名,相对路径以.、..开头,也可以是绝对路径,引入的文件可以带.js后缀也可以不带。

1.3 Module中到底有哪些东西?
我们在终端运行下面一段代码看看:

var http = require('http');

http.createServer(function(req,res){

  res.writeHead(200,{'Content-Type':'text/plain'});

  res.end('Hello World,\n sssssss');

}).listen(8080,'127.0.0.1');

console.log('Server running at http://127.0.0.1:8080');

module.exports = function printMessage(){

    console.log('module是个什么东西!?')
}
console.log(module);

运行结果:


QQ20170707-162838.png

通过上图,我们进一步了解到Module其实是Node.js内部的一个构造函数,所有的模块都是Module的实例;因此,在每个模块内部都有一个module对象,代表着当前的模块。其内部的属性主要包括以下几点:

module.id 模块文件名 (唯一性)
module.exports 模块对外输出的内容
module.parent 返回一个对象,表示调用该模块的模块
module.filename 绝对路径下的模块文件名
module.loaded 模块是否已经完成加载(true 或者 false)
module.children 返回一个数组,表示当前模块中用到的其他模块
module.paths 返回一个数组,表示该模块涉及的所有路径

2.1 NPM的常用命令
NPM是Node.js默认的模块管理器,是一个命令行下的软件,用来安装和管理node模块,是统一的模块登记和管理系统。NPM 是开源界最大的模块生态社区。

npm init     初始化一个package.json文件。
npm install 包名   安装一个包
npm install --save-dev 包名   安装包安装到本项目里面然后把包依赖添加到package.json文件中
npm uninstall 包名    卸载当前目录下某个包
npm uninstall 包名 --g  卸载全局安装路径下的某个包
npm update 包名    更新当前目录下的某个包
npm update 包名 -g   更新全局安装路径下的某个包
npm docs 包名     查看包的文档
npm root 包名 -g    查看全局包安装路径
npm list       查看当前目录下安装的所有包
npm config set prefix "路径"  修改全局包安装路径

以上内容参考:叶建华老师的微信公众号文章

以上内容参考:叶建华老师的微信公众号文章

博客推荐 http://blog.csdn.net/bomess/article/category/5742043

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • JavaScript 模块化编程 网站越来越复杂,js代码、js文件也越来越多,会遇到什么问题? 命名冲突; 文件...
    magic_pill阅读 1,406评论 0 1
  • 1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...
    zlx_2017阅读 1,218评论 0 1
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,606评论 2 41
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 2,050评论 1 50
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,061评论 2 58