node学习笔记

来源:互联网 发布:java引用另一个java类 编辑:程序博客网 时间:2024/04/28 22:46

      • 包管理器NPM
        • 安装依赖
        • 浏览NPM仓库
        • 发布
      • require模块
      • 函数传递
      • 事件驱动
      • 非阻塞
      • 错误处理
      • 常见API
        • fs

包管理器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
原创粉丝点击