zoukankan      html  css  js  c++  java
  • node.js核心模块

    全局对象 global 是全局变量的宿主

    全局变量
    在最外层定义的
    全局对象的属性
    隐士定义的变量(未定义直接赋值的变量)

    当定义一个全局变量时 这个变量同时也会成为全局对象的属性 反之亦然

    注意:
    Node.js中你不可能在最外层定义变量 因为所有用户代码都是属于当前模块的 而模块本身不是最外层上下文


    process
    process.argv 是命令行参数数组 第一个元素是node 第二个元素是脚本文件名称 第三个开始是每个元素的运行参数
    例子
    //argv.js
    console.log(process.argv);
    执行命令 node argv.js 1991 name=byvoid --v "Carbo Kuo"
    输出
    [ 'node',
    '/home/byvoid/argv.js',
    '1991',
    'name=byvoid',
    '--v',
    'Carbo Kuo'
    ]

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

    Node.就是适合I/O密集型应用 而不是计算密集型应用 因为一个node.js进程只有一个线程 因此在任何时刻都只有一个事件在执行
    如果这个事件占用大量的CPU时间 执行事件循环中的下一个事件就要等待很久 node.js的一个编程原则就是尽量缩短每一个事件的执行时间


    console
    console.log()
    接受一个参数 直接打印字符串
    两个参数时 第二个参数替换掉占位符
    console.log("abc"); //"abc";
    console.log("abc%cba") //"abc%cba";
    console.log("abc%cba", 1991)//"abc1991cba";

    console.error() 用法同上 只是向标准错误流输出
    console.trace() 向标准错误流输出当前的调用栈

    常用工具的util

    util.inherits(constructor, superConstrutor);
    是一个实现对象间原型继承的函数
    只继承自原型上的函数 构造函数内部的不继承
    console.log不打印原型中定义的函数


    util.inspect(object, [showHidden], [depth], [colors]);
    用于将任意对象转换成字符串方 通常用于调试和输出错误
    至少接受一个 object参数
    showHididen true 时将会输出更多隐藏信息 参数可选
    depth 表示最大递归的层数 如果对象很复杂 你可以指定层数以控制输出信息的多少 不指定默认递归2层 null表示不限制次数
    color true 输出格式将会以ANSI颜色编码 通常用于终端显示更漂亮的效果

    其他自行百度

    事件驱动evnets
    events 模块只提供了一个对象 events.EventEmitter
    EventEmitter的核心就是事件反射与事件监听器功能的封装

    常用API
    EventEmitter.on(event, listener); 为指定事件注册一个监听器 接受一个字符串event 和一个回调函数listener
    EventEmitter.emit(event, [arg1], [arg2], [...])发射event事件 传递若干个可选参数到事件监听器的参数表
    EventEmitter.once(event, listener); 为指定事件注册一个单次见监听器 即监听器最多只会触发一次 触发后立即解除该监听
    EventEmitter.removeListener(event, listener) 移除指定事件的某个监听器 listener必须时该事件已经注册过的监听器

    EventEmitter.removeAllListener([event]) 移除所有事件的所有监听器 如果指定event 则移除指定事件的所有监听器


    EventEmitter error事件 一般要为发射error事件的对象设置监听器 避免遇到错误后整个程序崩溃


    文件系统fs
    所有的fs模块操作都提供了同步和异步的两个版本

    fs 函数定义和功能

    fs.readFile(fileName, [encoding], [callback(err, data)]);
    参数介绍
    fileName 读取的文件名
    encoding 表示文件的编码格式
    callback 回调函数 用于接收文件 如果定义了encoding data为编码之后的字符串 未定义data将会以buffer形式表示二进制的数据

    fs.readFileSync(fileName, [encoding]);
    返回结果是一个data
    如果文件未找到 将会抛错
    同步需要用try{}catch(e){console.log(e)};

    fs.open(path, flags, [mode], [callback](err, fd));
    是POSIX open函数的封装 类似于C语言的fopen函数
    参数
    path文件的路径
    flags可以是以下值
    r 以读取模式打开文件
    r+ 以读写模式打开文件
    w 以写入模式打开文件 如果文件不存在则创建
    w+ 以读写模式打开文件 如果文件不存在则创建
    a 以追加模式打开文件 如果文件不存在则创建
    a+ 以读取追加模式打开文件 如果文件不存在则创建
    mode 参数用于创建人间时给文件指定权限 默认 0666
    回调函数传递一个文件描述符fd 非负整数 表示操作系统内核为当前进程所维护的打开文件的记录表索引

    fs.read(fd, buffer, offset, length, position, [callback(err, bytesRead, buffer)]);
    是POSIXread函数的封装 相比readFile提供了更底层的接口
    功能:从指定的文件描述符fd中读取数据并写入buffer指向的缓存区对象
    参数介绍
    offset buffer的写入偏移量
    length 要从文件中读取的字节数
    position 是文件读取的起始位置 值为null 则会从当前文件指针的位置读取
    回调函数传递的bytesRead 和 buffer 分别表示读取的字节数 和缓存区对象

    一般来说 非必要不要使用这俩种方式读取文件 因为它要求你手动管理缓存区和文件指针 尤其是不知道文件大小 很麻烦


    HHTTP服务器
    http.createServer(callback(req, res));
    req 请求对象 res 响应对象

    ?????????????疑惑?????????????

    1: process.nextTick(callback) 怎么就减少事件的执行时间了
    2: fs.open()怎么使用


    负载均衡 四部交换机 dns轮转 不能用session 只能用cookie 有的cookie不支持

  • 相关阅读:
    URL传递的参数是UTF-8编码,在打开的页面正常显示(GB2312)的方法
    JS windows.open打开窗口并居中
    一个tomcat如何部署多个项目运行
    redis 服务配置开机自启动
    解决端口被占用问题
    MySQL中concat以及group_concat的使用
    java 使用OpenOffice文件实现预览
    eclipse安装maven插件
    数据库三范式
    mysql 查询的字段值太长显示不全 group_concat
  • 原文地址:https://www.cnblogs.com/liuxiankun/p/8126254.html
Copyright © 2011-2022 走看看