NodeJS学习笔记

2019-01-17  本文已影响7人  ForeverYoung20

NodeJS就是一个独立运行js的解析器。

模块

将代码合理拆分至不同js文件中,每一个文件就是一个模块,文件路径就是模块名。

每个模块都有<u>require</u>、<u>exports</u>、<u>module</u>三个预先定义好的变量可用。

模块解析路径

  1. 内置模块:不做路径解析,直接返回导出对象。

  2. node_modules目录:某模块绝对路径为/home/user/hello.js,并使用require('foo/bar')方式加载时,NodeJS依次使用一下路径

    • /home/user/node_modules/foo/bar
    • /home/node_modules/foo/bar
    • /node_modules/foo/bar
  3. NODE_PATH环境变量

文件操作

网络操作

HTTP


var http = require('http');

http.createServer(function(req,res){

res.writeHead(200,{'Content-Type':'text-plain'});

res.end('Hello World\n');

}).listen(3000);


'http'模块提供两种使用方式:

HTTPS

与http模块类似,区别:https模块需要额外处理SSL证书。

服务器模式下,创建一个HTTPS服务器的实例:(<u>可以使用server.addContext('xx.com',{key:xx,cert:xx})方法添加多组证书</u>)


var options = {

//私钥 key: fs.readFileSync('./ssl/default.key'),

//公钥 cert: fs.readFileSync('./ssl/default.cer')

}; var server = https.createServer(options, function (request, response) { // ... });


URL

                                             href

                                         host                             path

                                    ----------------------   -----------------------------------

http: // user:pass @ host.com :8080 /p/a/t/h ?query=string #hash


protocol auth hostname port pathname search hash

Query String

用于实现URL参数字符串与参数对象的互相转换


querystring.parse('foo=bar&baz=qux&baz=quux&corge'); /* =>{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }/ querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); / =>'foo=bar&baz=qux&baz=quux&corge='*/


进程管理

应用场景举例:

  1. 通过process.argv获取命令行参数。(node执行程序路径和主模块文件路径占据了argv[0]和argv[1]两个位置,所以第一个命令行参数从argv[2]开始。)

    • process.argv.slice(2)
  2. 退出程序。(正常退出程序,退出状态码为0;异常挂起时不为0;)

    • process.exit(num);
  3. 控制输入输出。(标准输入流(stdin)、标准输出流(stdout)、标准错误流(stderr)分别对应process.stdin、process.stdout和process.stderr,第一个为<u>只读</u>数据流,后两个为<u>只写</u>数据流。)

    • function log(){
      process.stdout.write(
      util.format.apply(util,arguments) + '\n'
      );
      }
上一篇 下一篇

猜你喜欢

热点阅读