introduce

    Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

    • Node.js不是JS应用、而是JS运行平台(JavaScript runtime )
    • 构建在Chrome’s V8 JavaScript engine之上
    • event-driven, non-blocking I/O model简单点讲就是每个函数都是异步的,所以lightweight and efficient
    • 网站(如express/koa等)
    • im即时聊天(socket.io)
    • api(移动端,pc,h5)
    • http proxy(淘宝首页)
    • 前端构建工具(grunt/gulp/bower/webpack/fis3…)
    • 写操作系统(NodeOS)
    • 跨平台打包工具(以前叫Node-WebKit现在叫nw.js,electron)
    • 命令行工具(比如cordova)

    http://stackshare.io/nodejs/in-stacks

    • 前端熟悉的语言,學習成本低
    • 都是JS,可以前后端复用
    • 体质适合:事件驱动、非阻塞I/O
    • 适合IO密集型业务
    • 执行速度也不差
    • 模块丰富,npm非常庞大、强大

    NPM作为Node的模块管理和发布工具,作用与Ruby的gem、Python的pypl或setuptools、PHP的pear和.Net的Nuget一样。在当前前端工程化极速狂奔的年代,即使不做nodejs的开发,也需要学习和使用NPM的,谁叫grunt/gulp、bower、yeoman这一堆的工具都通过NPM发布呢?!

    • http
    • net
    • path

    nodejs以包的形式组织程序模块,而包的定义却十分简单——包含文件内容符合规范package.json文件的目录或归档文件。并通过@来唯一标识每个包。