Node Learning Notes 01

原文引用 大专栏  https://www.dazhuanlan.com/2019/08/26/5d634dce89118/

判断一种编程语言是否易用,很大程度上,取决于开发命令行进程的能力。而Node.js 作为目前最热门的开发工具之一,怎样使用它开发命令行进程,是 Web 开发者应该掌握的技能。

Node是JavaScript语言的服务器运行环境。所谓“运行环境”有两层意思:首先,JavaScript语言通过Node在服务器运行,在这个意义上,Node有点像JavaScript虚拟机;其次,Node提供大量工具库,使得JavaScript语言与操作系统互动(比如读写文档、新建子进程),在这个意义上,Node又是JavaScript的工具库。

以下是我的学习笔记

require

  • 用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象
  • 模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头)。另外,模块名中的.js扩展名可以省略。

exports

  • exports对象是当前模块的导出对象,用于导出模块公有方法和属性
  • 别的模块通过require函数使用当前模块时得到的就是当前模块的exports对象。以下例子中导出了一个公有方法。
1
2
3
exports.hello = function(){
console.log('hello')
}

module

  • 通过module对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。例如模块导出对象默认是一个普通对象,如果想改成一个函数的话,可以使用以下方式。

    1
    2
    3
    module.exports = function(){
    console.log('hello')
    }
  • 模块初始化

一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。

  • 主模块

通过命令行参数传递给NodeJS以启动进程的模块被称为主模块。主模块负责调度组成整个进程的其它模块完成工作。

  • 二进制模块

虽然一般我们使用JS编写模块,但NodeJS也支持使用C/C++编写二进制模块。编译好的二进制模块除了文档扩展名是.node外,和JS模块的使用方式相同。虽然二进制模块能使用操作系统提供的所有功能,拥有无限的潜能

package

如果想自定义入口模块的文档名和存放位置,就需要在包目录下包含一个package.json文档,并在其中指定入口模块的路径

file & directory

小文档拷贝

1
2
3
4
5
6
7
8
9
10
var fs = require('fs');
function copy(src,dst){
fs.writeFileSync(dst,fs.readFileSync(src);
}

function main(argv){
copy(argv[0],argv[1]);
}

main(process.argv.slices(2));

大文档拷贝

1
2
3
4
5
6
7
8
9
10
11
12

var fs = require('fs');

function copy(src,dst){
fs.createReadStream(src).pipe(fs.createWriteStream(dst));
}

function main(argv){
copy(argv[0],argv[1]);
}

main(process.argv.slice(2));

猜你喜欢

转载自www.cnblogs.com/JimmyShen/p/11411775.html
今日推荐