node学习笔记

包管理器NPM

安装依赖

npm常用命令
npm安装模块: npm install xxx
安装完成后当前目录下会出现node_modules/xxx目录。
但是这种会获取整个node_modules目录的方式并不提倡,而是提倡使用package.json来管理依赖模块,这样的方式有三个好处:

1.可以不需要将node_modules目录给别人。
2.方便进行依赖模块的版本管理,记录下当前的版本号
 ,以免以后模块版本更新后出现的依赖问题。
3.使用package.json,使用npm publish就可以将
 其发布到NPM库中供所有人下载使用了。

package.json:

{   "name":"my-colors-pro",
    "version":"0.01",
    "dependencies":{
        "colors":"0.5.0"
    }
}

编写好package.json后,再执行npm install安装依赖模块。

  • 全局安装:

目前的方式都是将依赖包下载到当前目录下,要全局安装时,可以为npm添加-g参数,一些命令行工具例如Web框架express,使用全局安装才能使用express命令去直接调用脚本创建项目。
通过npm config get prefix可以获取当前的全局安装目录,使用npm config set prefix “路径”来设置全局目录路径。
在package.json中添加”bin”:”./path/to/script”来发布此类可执行文件
由于网络访问量问题,推荐使用淘宝的NPM镜像cnpm,使用教程

浏览NPM仓库

查找某一个模块,或者需要发布模块时,都要查看某一模块是否存在于仓库,可以使用命令:
npm search NAME
该命令将搜寻name,tags,description字段,并返回匹配模块。
找到后使用view命令可以查看其package.json和NPM仓库相关属性:
npm view NAME

发布

使用npm publish就可以将发布到NPM库中,为了能够让node知道该载入哪个文件,我们可以在package.json中指定main属性,来让模块的API暴露出来:
"main":"./index"
可以使用npm help json来查看package.json的所有属性文档。
不想发布自己的模块时,可以在package.json中加入”private”:”true”来避免误发布。

require模块

1.引用模块
node使用require管理模块,类似import,如require(“http”)调用了自带的http模块。
var http = require("htpp")
2.创建模块
本地js文件即相当于一个模块,例如require("./server")即是表示引入同目录下的server.js模块。
在模块(js文件中)使用exports.func = funcname即可将本文件中的func函数提供给外部文件使用,其他文件通过funcname即可调用该函数。如:
server.js :
exports.start = start;
index.js :

var server = require("./server");
server.start();
1.http模块
包含http需要的相关方法,可以创建一个httpserver,处理request和response。

2.url模块
处理url,使用url.parse(request.url).pathname可以获取请求的相对url。

函数传递

node中可以将函数看做变量,即是可以将函数作为另一个函数的参数传递。

事件驱动

非阻塞

node是单线程执行程序,因为是单线程,所以我们要避免在编码中使用到阻塞操作,否则不仅仅是使用了阻塞代码的URL,整个服务端都会阻塞。
但同时,其所有行为都是并行的,这是因为node的所有耗时操作都是异步的,每个事件提供一个回调函数,当任务执行完毕时,使用callback来通知node执行结果。
比如exec函数,可以用起执行shell命令,但是当其执行后,node将直接执行下一条代码,而exec的shell执行结果将会在之后才回调。此时即便是耗时的操作,也不会阻塞到整个服务端。
因此,当要执行阻塞操作,比如,要在exec执行后,将其结果输出到web,就需要将输出到web的操作放到exec的回调函数中。

错误处理

如果在node中throw了未被捕获的错误时,进程就会崩掉。可以添加uncaughtException处理器来处理错误,并且需要每步都正确处理,以为在node中,捕获一个未来才会执行到的函数所抛出的错误是不可能的,这样出错之后很难追踪,因为上下文都已经丢失了。

常见API

fs
  • 流(stream)

console.log的内部是将指定字符串加上\n后写到stdout流中。stdout位于process全局对象中。process包含了三个流对象:
stdin:标准输入
stdout:标准输出
stderr:标准错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值