• Node.js入门(三)


    一、Node.js全局对象

    Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。

    1.process

    process 是一个全局变量,即 global 对象的属性。

    process.argv是命令行参数数组,第一个元素是 node,第二个元素是脚本文件名, 从第三个元素开始每个元素是一个运行参数。

    1 console.log(process.argv);

    命令行:

    1 $ node argv.js 1991 name=byvoid --v "Carbo Kuo" 
    2 [ 'node', 
    3 '/home/byvoid/argv.js', 
    4 '1991', 
    5 'name=byvoid', 
    6 '--v', 
    7 'Carbo Kuo' ]

    process.stdout是标准输出流

    console.log()向标准输出打印字符,

    process.stdout.write()提供了更底层的接口。

    process.stdin是标准输入流,必须先恢复流,才能从标准读入数据,并手动编写流的事件响应函数。

    1 process.stdin.resume();    //恢复流
    2 process.stdin.on('data',function (data){    //编写流的事件响应函数
    3     process.stdout.write('read from console: ' + data.toString());    //标准输出流
    4 });

    process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js 会在 下次事件循环调响应时调用 callback。

    详见:http://www.w3cschool.cc/nodejs/nodejs-global-object.html

    2.console

    console.log()

    1 console.log();    //显示一个换行的效果
    2 console.log('Hello world');
    3 console.log('byvoid%diovyb');    //byvoid%diovyb 
    4 console.log('byvoid%diovyb',1991);    //byvoid1991iovyb

     console.error():与console.log()用法相同,只是向标准错误流输出。

     console.trace():向标准错误流输出当前的调用栈。

    1 console.trace();

     运行结果为:

    1 Trace: 
    2 at Object.<anonymous> (/home/byvoid/consoletrace.js:1:71) 
    3 at Module._compile (module.js:441:26) 
    4 at Object..js (module.js:459:10) 
    5 at Module.load (module.js:348:31) 
    6 at Function._load (module.js:308:12) 
    7 at Array.0 (module.js:479:10) 
    8 at EventEmitter._tickCallback (node.js:192:40)

    二、Node.js常用工具util

    util.inherits(constructor,superConstuctor) - 实现[原型间]对象的继承

     1 var util = require('util');
     2 
     3 function Base(){
     4     this.name = 'base';
     5     this.base = 1991;
     6     this.sayHello = function (){
     7         console.log('Hello ' + this.name);
     8     };
     9 }
    10 
    11 Base.prototype.showName = function (){
    12     console.log(this.name);
    13 };
    14 
    15 function Sub(){
    16     this.name = 'sub';
    17 }
    18 
    19 util.inherits(Sub,Base);
    20 
    21 var objBase = new Base();
    22 objBase.showName();
    23 objBase.sayHello();
    24 console.log(objBase);
    25 
    26 var objSub = new Sub();
    27 objSub.showName();
    28 //objSub.sayHello();    //不能实现,不是原型链的方法,无法共享、继承
    29 console.log(objSub);

    运行结果:

    1 base 
    2 Hello base 
    3 { name: 'base', base: 1991, sayHello: [Function] } 
    4 sub 
    5 { name: 'sub' }

    util.inspect(object,[showHidden],[depth],[colors]) - 将任意对象转换为字符串的方法,通常用于调试和错误输出。

    object - 要转换的对象

    showHidden - 可选参数,如果值为true,将会输出更多隐藏信息

    depth - 表示最大的递归数,不指定默认递归2层,指定为null表示不限递归层数完整遍历对象

    color - 如果color值为true,输出格式将会以ANSI 颜色编码,通常用于在终端显示更漂亮的效果

     1 var util = require('util');
     2 
     3 function Person(){
     4     this.name = 'byvoid';
     5     this.toString = function (){
     6         return this.name;
     7     };
     8 }
     9 
    10 var obj = new Person();
    11 console.log(util.inspect(obj));
    12 console.log(util.inspect(obj,true));

    运行结果:

    util.isArray(object) - 如果给定参数“object”是一个数组返回true,否则返回false

    1 var util = require('util');
    2 
    3 console.log(util.isArray([]));    //true
    4 console.log(util.isArray(new Array));    //true
    5 console.log(util.isArray({}));    //false

    util.isRegExp(object) - 如果给定的参数 "object" 是一个正则表达式返回true,否则返回false。

    1 var util = require('util');
    2 console.log(util.isRegExp(/some regexp/));    //true
    3 console.log(util.isRegExp(new RegExp('another regexp')));    //true
    4 console.log(util.isRegExp({}));    //false

    util.isDate(object) - 如果给定的参数 "object" 是一个日期返回true,否则返回false

    1 var util = require('util');
    2 console.log(util.isDate(new Date()));    //true
    3 console.log(util.isDate(Date()));    //false
    4 console.log(util.isDate({}));    //false

    util.isError(object) 如果给定的参数 "object" 是一个错误对象返回true,否则返回false

    1 var util = require('util');
    2 
    3 console.log(util.isError(new Error()));        //true
    4 console.log(util.isError(new TypeError()));    //true
    5 console.log(util.isError({name:'error',message:'an error occured'}));    //false

    三、文件系统

    fs.readFile(filename,[encoding],[callback(err,data)]) - 异步读取文件

    filename(必选),表示要读取的文件名。

    encoding(可选),表示文件的字符编码。

    callback 是回调函数,用于接收文件的内容。

    如果不指 定 encoding,则 callback 就是第二个参数。

    例如以下程序,我们从content.txt 中读取数据,但不指定编码:

    1 var fs = require('fs');
    2 fs.readFile('content.txt',function (err,data){
    3     if(err){
    4         console.log(err);
    5     }else{
    6         console.log(data);
    7     }
    8 });

    假设content.txt 中的内容是UTF-8 编码的 Text 文本文件示例,运行结果如下:

    1 <Buffer 54 65 78 74 20 e6 96 87 e6 9c ac e6 96 87 e4 bb b6 e7 a4 ba e4 be 8b> 

    这个程序以二进制的模式读取了文件的内容,data 的值是 Buffer 对象。

    如果我们给fs.readFile 的 encoding 指定编码:

    1 var fs = require('fs');
    2 fs.readFile('content.txt','utf-8',function (err,data){
    3     if(err){
    4         console.log(err);
    5     }else{
    6         console.log(data);
    7     }
    8 });

    运行结果:

    fs.readFileSync() - 同步读取文件,如果有错误发生,fs 将会抛出异常,你需要使用 try 和 catch 捕捉并处理异常。

    fs.open(path, flags, [mode], [callback(err, fd)])

    path - 文件的路径

    flags - {

      r :以读取模式打开文件。

      r+ :以读写模式打开文件。

      w :以写入模式打开文件,如果文件不存在则创建。

      w+ :以读写模式打开文件,如果文件不存在则创建。

      a :以追加模式打开文件,如果文件不存在则创建。

      a+ :以读取追加模式打开文件,如果文件不存在则创建

    }

    文件系统,详见API:http://nodeapi.ucdok.com/#/api/fs.html

  • 相关阅读:
    C#中设置窗口在最前显示而其他窗口不能使用
    C#中关闭子窗口而不释放子窗口对象的方法
    C#窗体越界时鼠标还能回到初始坐标位置
    C#程序实现软件开机自动启动的两种常用方法
    C# 只开启一个程序,如果第二次打开则自动将第一个程序显示到桌面
    图标库网址收藏
    C# Winform打包部署时添加注册表信息实现开机自启动
    C# winform程序怎么打包成安装项目(VS2010图解)
    数据库的三级范式,涉及范式的问题
    基数排序
  • 原文地址:https://www.cnblogs.com/liuqiuchen/p/4519619.html
Copyright © 2020-2023  润新知