Node与REPL

这几个月,搜芽前端团队搞了Reactjs+Redux项目,在很多时候,比如部署,都需要使用Node,苦于我的肤浅,于是决定补一下功课。最近都会记录一些 Node相关的笔记。

Node 的优势

  • 应用程序可以很容易地扩展,因为执行一个单线程并不会有非常大的开销
  • 无需诉求于多线程开发,却达到了节约又能高效使用资源的目的。换句话说,你不必创建一个线程安全的应用程序。

全局变量在 Node 中是非常危险的,特别是你忘记 var关键字的时候。

REPL

REPL(read-eval-print-loop)Node的一个交互式组件。在 REPL环境下输入的任何内容都由底层的 V8 Javascript引擎进行处理。

一些操作技巧

  • _(下划线) 可以调用上一个表达式
  • 上下键仍然可以快捷输入历史命令, Tab 键自动补全
  • 可以使用重复的 .(点) 来处理多行表达式,如:
    >var test = function() {
    ...return val = x * y  
    ...};
    undefined
    
  • 退出 REPL环境的方式有:
    • Ctrl + C两次
    • Ctrl + D
    • .exit

REPL 命令

  • .break

    如果多行输入发生混乱不知道当前位置时,使用 .break会重新开始。不过会丢失之前输入的多行内容。

  • .clear

    重置语境并清空所有表达式。该命令可以使你重头再来。

  • .exit

    退出 REPL

  • .help

    显示所有可用的REPL命令。

  • .save

    将当前REPL会话保存至文件

  • .load

    将文件加载到当前会话

定制 REPL

首先需要引入 REPL 模块:

var repl = require('repl');

通过在repl对象上调用 start方法创建新的 REPL

repl.start([prompt], [stream], [eval], [useGlobal], [ignoreUndefinded]);

所有参数都可选。

  • prompt Default is > 默认值为 >
  • stream 默认值为process.stdin
  • eval eval的默认值是 async
  • useGlobal 默认值为 false, 新建一个语境而不是使用全局对象。
  • ignoreUndefinded 默认值为 false。 不要忽略undefined的返回值。

所以让REPL在表达式无返回值时不输出undefined可以这样实现:

repl = require('repl');
// 设置 `ignoreUndefinded` 为 `true` , 启动 `REPL`
repl.start('>', null, null, null, true);
0%