• NodeJS学习笔记(三)


    1 在Node.js 中如何用异步的方式读取一个文件,下面是一个例子:
    //readfile.js
    varfs = require('fs');
    fs.readFile('file.txt', 'utf-8', function(err, data) {     //第三个参数是回调函数,JavaScript 支持匿名的函数定义方式
     if(err) {
     console.error(err);
     } else{
     console.log(data);
     }
    });
    console.log('end.');

    运行的结果如下:
    end.
    Contents of the file.

    fs.readFile 调用时所做的工作只是将异步式I/O 请求发送给了操作系统,然后立即
    返回并执行后面的语句,执行完以后进入事件循环监听事件。当fs 接收到I/O 请求完成的
    事件时,事件循环会主动调用回调函数以完成后续工作。因此会先看到end.,再看到
    file.txt 文件的内容。

    2 Node.js 中,并不是所有的API 都提供了同步和异步版本。Node.js 不
    鼓励使用同步I/O。

    3 Node.js 所有的异步I/O 操作在完成时都会发送一个事件到事件队列。在开发者看来,事
    件由EventEmitter 对象提供。

    4 本地模式和全局模式:
    npm在默认情况下会从http://npmjs.org搜索或下载包,将包安装到当前目录的node_modules子目录下。
    在使用npm 安装包的时候,有两种模式:本地模式和全局模式。默认情况下使用 npm
    install命令就是采用本地模式,即把包安装到当前目录的 node_modules 子目录下。Node.js
    的 require 在加载模块时会尝试搜寻 node_modules 子目录,因此使用npm 本地模式安装的包可以直接被引用。

    npm 还有另一种不同的安装模式被成为全局模式,使用方法为:
    npm [install/i] -g [package_name]
    与本地模式的不同之处就在于多了一个参数 -g。
    为什么要使用全局模式呢?多数时候并不是因为许多程序都有可能用到它,为了减少多重副本而使用全局模式,而是因为本地模式不会注册 PATH 环境变量。
    npm 本地模式仅仅是把包安装到node_modules 子目录下,其中的bin 目录没有包含在PATH环境变量中,不能直接在命令行中调用。而当我们使用全局模式安装时,npm 会将包安装到系统目录,譬如/usr/local/lib/node_modules/,同时package.json 文件中bin 字段包含的文件会被链接到/usr/local/bin/。/usr/local/bin/ 是在PATH 环境变量中默认定义的,因此就可以直接在命令行中运行命令了。

    使用全局模式安装的包并不能直接在JavaScript 文件中用 require 获得,因为 require 不会搜索/usr/local/lib/node_modules/。

    总而言之,当要把某个包作为工程运行时的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装。

    5 创建全局链接
    npm 提供了一个有趣的命令npm link,它的功能是在本地包和全局包之间创建符号链
    接。使用全局模式安装的包不能直接通过 require 使用,但通过 npm link命令
    可以打破这一限制。举个例子,我们已经通过 npm install -g express 安装了 express,
    这时在工程的目录下运行命令:
    $ npm link express
    ./node_modules/express -> /usr/local/lib/node_modules/express
    我们可以在 node_modules 子目录中发现一个指向安装到全局的包的符号链接。通过这
    种方法,我们就可以把全局包当本地包来使用了。

    除了将全局的包链接到本地以外,使用 npm link命令还可以将本地的包链接到全局。
    使用方法是在包目录(package.json 所在目录)中运行npm link 命令。

  • 相关阅读:
    RRC Server安装配置过程
    开园啦~
    VB.NET 初涉线程的定义和调用
    使用 VB.NET 开发多线程
    多线程 与 单线程 的区别
    Marshal 类的内存操作的一般功能
    VB.NET 内存指针和非托管内存的应用
    OpenProcess() 函数
    DataTable与结构不同实体类之间的转换
    C#的同步和异步调用方法
  • 原文地址:https://www.cnblogs.com/leaf526/p/3624320.html
Copyright © 2020-2023  润新知