• 我理解的Node.js


    我理解的Node.js

    看到很多同事写了关于Node.js的Blog.也就跟着学习了一下。作为一个初级入门者,学习后将我的理解总结如下:

    • Node 是一个命令行工具。
    • Node 可以使JS的代码在服务端运行。
    • 编写的Js 可以在V8中执行。
    • Node 提供了一组API 访问网络和文件系统。

    1.Node只是是一个工具,提供Js在服务端执行,如同Java,Ruby,PHP,不要想用Node去解决所有的事情。

    2.Node并行运行,可以同时做几个任务(Task),显然因为Node是并行执行多个任务显然他是多线程的。这个后面我们去学习下Node的Source,看看他是如何实现这个并行运行的机制的。

    For example,如图1,2:

                        图1

                        图2

    以上代码给Node执行一个读取一个写入的Task,一旦处理结束回调会被触发。注意一次只有一个回调触发,直到这个回调执行完。其他回调排队等候,因为是异步执行的所以回调没有执行顺序。图2只是一个截图,大家可以自己动手写个小代码体会一下就明白了。

    3.单线程/事件循环机制使Node不用担心代码会同时访问同一个数据结构。(Node文档原文摘抄)

     Ps:但是实践中明显Node是支持多线程的,是不是通过线程安全去实现的?这个还需要深入理解。

    4.Node有些什么优势?

    • 执行效率,Web应用中,等待Db查询的结果是一个耗时点,通过之前的并行处理机制,它可以一次执行所有的查询(异步),节约最慢的那个查询的执行时间。
    • 基于Js,前后端共享代码,都是Js写的。
    • V8的执行效率,Node宣传中说的提供经可能接近于本地系统I/O的执行效率。

    除了第一点可以自己验证,后面两点都是网上资料所述的,第二点可以理解,第三点这个有点宣传的意思,挨下来准备找个测试工具试一把。其他优势欢迎大家补充。

    5.什么情况下适合用Node?

    学习了Node后肯定会在项目上到处寻找可以使用到它的地方,在讨论技术实现的时候会想怎么把它塞进去,否则不是白学了嘛^-^首先我觉得先要理解低响应时间和高并发重要吗?项目规模多大?显然在大型项目上要运用Node的话考虑的问题还会更多,如库资源,Node本身存在的Bug等等,需要仔细评估。

    6.目前使用Node的站点汇总:

    http://cnodejs.org

    http://www.plurk.com/top

    国外的我就不贴了,感谢祖国~

    结尾,通过对Node的学习,目前来看Node近似80%相似度如08年那会非常火的一款基于Java的服务端框架(商业级),该框架源码是Java的支持Js作为脚本执行,同样具有并行处理机制,实现原理基本一致。作者是一位Node的入门级初学者,上述内容限于水平有不足之处,欢迎大家拍砖指正,我会汇总后修改的,本文文体有些口语化请包涵。 

    转载时,请注明本文来源:www.cnblogs.com/tmywu  

    作者: 老鱼678

    mail:tommywu23@126.com

     
     
    分类: Node.js
    标签: NodeNode.js
  • 相关阅读:
    PID 不能控制哪些系统?
    矩阵正定、负定、半正定、半负定
    KKT条件(不等式约束优化)
    腾讯OCR身份证正面识别
    小程序
    tomcat相关
    linux安装tomcat
    linux防火墙
    nginx操作
    Clean Code
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3020377.html
Copyright © 2020-2023  润新知