Fork me on GitHub

Node.JS入门

NPM使用介绍

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题。

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用
  • 允许用户从NPM服务器下载并安装别人编写好的命令程序到本地使用
  • 允许用户将自己编写的包或者命令行程序上传到NPM服务器供别人使用

npm升级命令

1
2
3
npm install npm -g
##使用淘宝镜像的命令
cnpm install npm -g

npm命令安装模块

1
2
3
4
5
6
npm install <Module Name>
#安装常用的web框架模块express:
npm install express
#安装好后,express包放在工程目录下的node_modules目录中,因为在
#代码中需要通过require('express')方式调用就好。无需指定包路径
var express=require('express');

使用package.json

package.json位于模块目录下,用于定义包的属性。

package.json属性说明

  • name:包名
  • versin:包的版本号
  • description:包的描述
  • homepage:包的官网url
  • author:包的作者姓名
  • contributors:包的其他贡献者姓名
  • dependencies:依赖包列表。如果依赖包没有安装,npm会自动将依赖包安装在node_module目录下
  • repository:包代码存放的地方的类型,可以是git,svn,git可在GitHub上
  • main:main字段制定了程序的主入口文件,require(‘module_name’)就会加载这个文件,这个字段的默认值是模块根目录下面的index.js
  • keywords:关键字

卸载模块

1
2
3
4
#卸载Node.js的web框架模块
npm uninstall express
#卸载后查看目录下的包是否存在
npm ls

更新模块

1
2
#使用命令更新模块
npm update express

搜索模块

1
2
#搜索模块
npm search express

使用淘宝NPM镜像

1
2
3
4
5
#国内直接使用npm的官方镜像非常慢,推荐使用淘宝NPM镜像
#淘宝NPM镜像是一个完整的npmjs.org镜像。
npm install -g cnpm --registry=https://registry.npm.taobao.org
#使用cnpm命令安装模块
cnpm install <module_name>

Node.js REPL交互式解释器

Node.js REPL(Read Eval Print Loop:交互式解释器):表示一个电脑的环境,类似Window系统的终端或者Linux shell,我们可以在终端中输入命令,并接受系统的响应

Node自带的交互式解释器可执行的任务:

  • 读取:读取用于输入,解析输入了JS数据结构并存储在内存中
  • 执行:执行输入的数据结构
  • 打印:输出结果
  • 循环:循环操作以上步骤直到用户两次按下ctrl-c退出

输入node命令启动Node终端

1
node
  • 表达式运算

    1
    node

    1544580173914

使用Ctrl+c两次,退出REPL终端

Node.js回调函数

Node.js异步编程的体现就是回调

异步编程依赖于回调实现。但是不能说使用了回调后程序就异步化

回调函数在完成任务后就会被调用,Node使用了大量的回调函数,Node所有的API都支持回调函数。

比如:我们可以一边读取文件,一边执行其他命令,文件读取完成后,将文件内容作为回调函数的参数返回,这样在执行代码就没有阻塞或者等待文件I/O操作。提高了Node.js性能,处理大量的并发请求。

  • 阻塞代码:

    1
    2
    3
    4
    var fs=require('fs');
    var data=fs.readFileSync('input.txt');
    console.log(data.toString());
    console.log("程序结束");
  • 非阻塞代码

    1
    2
    3
    4
    5
    6
    7
    var fs=require("fs");
    fs.readFile('input.txt',function(err,data){
    if(err)
    return console.error(err);
    console.log(data.toString());
    });
    console.log('程序结束');