Contents
  1. 1. 1.利用typeof区分数据类型
  2. 2. 2.利用Boolean()转化数据类型
  3. 3. 3.Node.js尝试路径
  4. 4. 4. 客户端向 http 发送请求
    1. 4.0.1. a. http.request 使用 get 方法
    2. 4.0.2. b. 利用http.get()方法实现同样的效果
    3. 4.0.3. c. 利用response实现
  • 5. 5.文件操作
  • 6. 命令集锦
  • 1.利用typeof区分数据类型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var a;
    var b = 12;
    var c = 'node.js';
    var d = true;
    var e = function() {
    }
    var f = null;
    var g = {
    num: 12
    }
    var arr = [a,b,c,d,e,f,g];
    for(var i = 0, max = arr.length; i < max; i++ ){
    console.log(typeof arr[i])
    }

    输出结果为:

    1
    2
    3
    4
    5
    6
    7
    undefined
    number
    string
    boolean
    function
    object
    object

    可以看出null 和object都返回了object,这是因为null实际上是一个空对象指针,当一个变量只声明未赋值时都只返回object

    2.利用Boolean()转化数据类型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var a;
    var b = null;
    var c =0;
    var d ='';
    var e = NaN;
    var arr = [a,b,c,d,e];
    for(var i=0, max = arr.length;i<max;i++){
    console.log(Boolean(arr[i]))
    }

    结果如下:

    1
    2
    3
    4
    5
    false
    false
    false
    false
    false

    需要注意的是:空字符串,0,null,undefined,NaN都将转化为false,其他则会转化为true。

    3.Node.js尝试路径

    例如:某个模块的绝对路径是home/hello/hello.js,在该模块中导入其他模块,写法为require(“me/first”),Node.js会依次使用一下路径

    1
    2
    3
    /home/hello/node_modules/me/first
    /home/node_modules/me/first
    node_modules/me/first

    4. 客户端向 http 发送请求

    a. http.request 使用 get 方法

    首先,我写了一个在请求http相应的页面,打开浏览器输出hello node

    1
    2
    3
    4
    5
    6
    var http = require('http');
    http.createServer(function(request, response){
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello Wrold\n');
    }).listen(5000);
    console.log('Server running at http://localhost:5000/');

    然后再新建一个文件,http.request 使用 get方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const http = require('http');
    let reqData = '';
    http.request({
    'host': '127.0.0.1',
    'port': '5000',
    'method': 'get'}, function(res){
    res.on('data', function(chunk){
    reqData += chunk;
    });
    res.on('end', function() {
    console.log(reqData);
    });
    }).end();

    同时运行,结果会在命令行输出 hello node

    b. 利用http.get()方法实现同样的效果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const http = require('http');
    let reqData = '';
    http.get({
    'host': '127.0.0.1',
    'port': '5000'
    }, function(res) {
    res.on('data', function(chunk) {
    reqData += chunk;
    });
    res.on('end', function(){
    console.log(reqData);
    })
    }).end();

    c. 利用response实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    const http = require('http');
    let reqData = '';
    let option= {
    'host': '127.0.0.1',
    'port': '5000'
    };
    const req = http.request(option);
    req.on('response', function(res) {
    res.on('data', function(chunk) {
    reqData += chunk;
    });
    res.on('end', function() {
    console.log(reqData);
    });
    });

    5.文件操作

    一个文件对象有:
    root : 根目录(磁盘名)
    dir: 完整目录
    base: 路径最后一个部分(肯是文件名或者文件夹名,是文件名时带拓展名)
    ext: 拓展名
    name: 文件名(不带拓展名)
    stats类中方法有:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    stats.isFile()
    //如果是标准目录就返回true,如果是目录,套接字,符号连接或者设备就返回false
    stats.isDirectory()
    //如果是目录就返回true
    stats.isBlockDevice()
    //如果是块设备就返回true,大多数块设备都存放在unix系统下
    stats.isCharacterDevice()
    //如果是字符设备就返回true
    stats.isSymbolicLink()
    //如果是符号连接就返回true == fs.1stat()
    stats.isFIFO()
    如果是FIFO(unix中的一种特殊类型的命令管道)就返回true
    stats.isSocket()
    //如果是unix套字就返回true

    fs.stat()、fs.1stat()、fs.fstat()都将返回文件的一些特征信息,如文件的大小、创建时间和权限。
    写文件的两种方式:

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

    var fs = require('fs');
    //使用string写入文件
    fs.appendFile('message.txt', 'string---data to append!', 'utf8', (err) => {
    if (err) throw err;
    console.log('the data was appended to file')
    });

    //使用bufffer写入文件
    fs.appendFile('message.txt', 'buffer---data to append!', (err) => {
    if (err) throw err;
    console.log('the data was appended to file')
    })

    使用CSV中的stream来读取、解析和转换CSV文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33

    var csv = require('CSV');

    var generator = csv.generate({ seed: 1, columns: 2, length: 20 });
    var parser = csv.parse();
    var transformer = csv.transform(function (data) {
    return data.map(function (value) { return value.toUpperCase() });
    });
    var stringifier = csv.stringify();

    generator.on('readable', function () {
    while (data = generator.read()) {
    parser.write(data);
    }
    });
    //解析生成的额csv文件
    parser.on('readable', function () {
    while (data = parser.read()) {
    transformer.write(data);
    }
    });
    //将CSV文件转换txt文件
    transformer.on('readable', function () {
    while (data = transformer.read()) {
    stringifier.write(data);
    }
    });

    stringifier.on('readable', function () {
    while (data = stringifier.read()) {
    process.stdout.write(data);
    }
    });

    命令集锦

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    npm init -y   
    //系统使用默认值生成package.json文件
    npm install underscore
    //安装js工具库
    安装命令 + -S
    //安装包的记录会在package.json的dependencies
    安装命令 + -dev
    //安装包的记录会在package.json的devDependencies
    url.parse()
    //解析urrl地址,返回url对象
    url.format()
    //接受一个url对象为参数,返回完整的url地址
    url.ressolve(from, to)
    //接受base url ,href url 像url解析,返回完整的url
    querystring.parse();
    //查询字符串反序列化为一个对象;类似ISON.parse()
    querysstring.stringify()
    //对象反序列化为一个字符串;类似JSON.stringify
    util.inspect();
    //返回一个对象反序列化为字符串
    util.format()
    //返回使用占位符格式化的字符串,类似c语言的printf
    util.log()
    //在控制台输出,类似console.log;带有时间戳
    path.join()
    //将所有的参数连接起来,返回一个路径
    path.extname()
    //返回路径参数的扩展名,无扩展时返回空字符串
    path.parse()
    //将路径解析为一个路径对象
    path.format
    //接受一个路径对象为参数,返回一个完整的路径地址(路径字符串)
    dns.resolve()
    //将一个域名解析为一个指定类型的数组
    dns.lookup
    //返回第一个被发现的ipv4或者ipv6的地址
    dns.reverse
    //通过ip解析域名
    Contents
    1. 1. 1.利用typeof区分数据类型
    2. 2. 2.利用Boolean()转化数据类型
    3. 3. 3.Node.js尝试路径
    4. 4. 4. 客户端向 http 发送请求
      1. 4.0.1. a. http.request 使用 get 方法
      2. 4.0.2. b. 利用http.get()方法实现同样的效果
      3. 4.0.3. c. 利用response实现
  • 5. 5.文件操作
  • 6. 命令集锦