首先在搞清楚什么NodeJs之前,我们先来聊聊JavaScript,只要做过开发的人都应该知道JavaScript是目前最为流行的前端(客户端)脚 本语言,JavaScript在Web项目中的使用率可以说是99%以上,不夸张的举个例子:"现在你打开的100个网页中,有99个都使用了 JavaScript"。 那么为什么JavaScript这么火,其实原因非常非常的简单,JavaScript出现赋予网页新的生命力,从一开始它只为表单验证而生,到现在百万 亿的网站使用JavaScript来做的各种效果及人性化的功能,估计用一本书也很难写完JavaScript在前端所做的贡献和地位。

 
    看到上面JavaScript的介绍,很多人肯定会说,看来JavaScript这门语言很优秀,所以才会有这么多的人来使用,没错,对于一个真正懂 JavaScript(高手)的人来说,这门语音确实很不错,但是对于普通的JavaScript使用者来说,JavaScript是一个很难驾驭的东西 (如果不是为了完成Boss某个功能的要求,很少有人愿意使用)。它过于的灵活,虽然一个东西灵活是好事情,但是如果一个东西灵活到你都无法驾驭了(例 如:有多少人知道function在JavaScript代表什么?很多人会说不就是代表一个函数嘛?“哈哈,太年轻”),你就会觉得这对于使用者来说并 不是一件好事情,不过这些我看来这正是它为何最终能走向后端开发的原因。对于后端千变万化的功能来说,或许一个灵活的语言,能让我们写出更灵活的代码。
   
    进入我们的正题,JavaScript以前只是作为一门前端脚本语言,一门语言的运行,是需要执行环境,就如同我们的Java代码,它需要运行在JVM 中。JavaScript也不例外,JavaScript的执行环境是什么耐?没错就是我们的客户端浏览器(IE,FF,Chrorme....)。之所 以我们把它成为了称为前端(客户端)脚本语言,就是因为它的运行环境。终于有一天,有一个位和我一样热爱JavaScript的美国程序员Ryan Dahl,他决定使用JavaScript做一些更加有意义的事情,给予JavaScript在开发中所处的新定位,使用JavaScript作为后端(服务器)编程语言来做开发,我的天,这个想法简直就是疯了(如同一只狗,有一天对着猫说:"我要开始抓老鼠了"。猫嘲讽的说道:"呵呵,就你,能行吗?")。“那么问题来了?真正的问题来”,当然这个问题并不是按照剧情一样问:"挖掘机技术哪家强?" Ryan Dahl可没有兴趣思考这样的问题。 要让JavaScript的作为后端(服务器)编 程语言,那么必须就要先要脱离JavaScript目前的执行环境客户端浏览器。Ryan Dahl想到了一个好点子,使用Google Chrome开源浏览器V8引擎为基础搭建了一个新的JavaScript执行环境(注意这里说的只是使用的浏览器执行JavaScript的引擎,并非 是我们使用浏览器客户端),并且在V8引擎中基础上添加了服务器编程语言应该有的功能,如文件系统,模块,包,操作系统API,网络通信等,由此一个新的 平台产生名为NodeJs。
 
     NodeJs  = JavaScript执行环境+JavaScript扩展的功能。 简单理解NodeJs就是一个可以让JavaScript脱离浏览器还能执行的平台,并且这个平台对JavaScript功能进行了增强。
    
     相关资源:
            http://nodejs.org/
    
关注作者:
   

编程高手解读什么是NodeJs?的更多相关文章

  1. Java7编程高手进阶读书笔记—集合框架

    定义:Java集合框架API是用来表示和操作集合的统一框架,它包含接口.实现类.以及帮助程序员完成一些编程的算法 作用: ●编程更加省力,提高城程序速度和代码质量 ● 非关联的API提高互操作性 ● ...

  2. MFC、C++ 、Windows编程高手

    cnblogs: DoubleLi 1. DoubleLi  白手起家Win32SDK应用程序 http://www.cnblogs.com/lidabo/p/3450178.html#_Toc309 ...

  3. Java并发编程详解读书笔记(一)

    一.线程介绍 讲线程之前得先了解进程(Peocess),现在的操作系统基本都支持多任务的进行,举个场景:有许多的程序员们喜欢边coding边听点轻音乐.这时计算机就是做并行任务,也就是有多个进程在同时 ...

  4. Java7编程高手进阶读书笔记--final学习

    这段时间终于有了一些自己的时间,在网上淘了一本书把java学习下,顺便记下每日的学习心得 工作快两年多了,才知道基础的东西永远看的时候都有一个新的体验,今天中午看了下final,把自己炒的代码贴在这以 ...

  5. NodeJS的异步编程风格

    NodeJS的异步编程风格 http://www.infoq.com/cn/news/2011/09/nodejs-async-code NodeJS运行环境因其支持Javascript语言和异步编程 ...

  6. Java网络编程和NIO详解开篇:Java网络编程基础

    Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...

  7. javascript开发后端程序的神器nodejs

    目录 简介 nodejs的历史 nodejs简介 nodejs的运行环境 process 终止进程 env argv CLI交互 exports模块 nodejs API nodejs的框架 简介 j ...

  8. C算法编程题(七)购物

    前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...

  9. 如何成为python高手

    本文是从 How to become a proficient Python programmer 这篇文章翻译而来. 这篇文章主要是对我收集的一些文章的摘要.因为已经有很多比我有才华的人写出了大量关 ...

随机推荐

  1. spring-framework-3.0.2RELEASE之后为啥没有依赖包了?

    缘起:莫莫接到新任务要学习spring mvc,于是在网上找了个demo文档跟着一起做.这个是学习的网址: http://www.open-open.com/doc/view/a6462d9a2e2b ...

  2. Android stutdio2.2 启动模拟器出现“/dev/kvm is not found.”解决方法

    第一次启动avd,Android stutdio会自动安装Intel HAXM,而且表面看是成功的,再次启动会出现“/dev/kvm is not found.”,这说明Intel HAXM没有安装成 ...

  3. spring的struts简单介绍

    之前一段时间学习了springmvc+mybatis+spring框架,突然对之前的struts东西有点陌生, 所以这里简单记录下温故而知新的东西吧. 1.  首先建立一个Dynamic Web Pr ...

  4. badboy页面脚本发生错误,解决方案

    1.参考网址:https://jingyan.baidu.com/article/e9fb46e17537797520f76645.html?from=qqbrowser061108 本人亲自测试,方 ...

  5. Bezier贝塞尔曲线的原理、二次贝塞尔曲线的实现

    Bezier曲线的原理 Bezier曲线是应用于二维图形的曲线.曲线由顶点和控制点组成,通过改变控制点坐标可以改变曲线的形状. 一次Bezier曲线公式: 一次Bezier曲线是由P0至P1的连续点, ...

  6. select into outfile

    语法格式如下: SELECT [列名] FROM table [WHERE 语句]         INTO OUTFILE '目标文件' [OPTION];   FIELDS TERMINATED ...

  7. netbackup :nbu备份 Hyper-V 遇到快照错误(状态码 156)

    遇到快照错误(状态码 156) 下表介绍与 NetBackup 状态码 156 有关的 Hyper-V 问题. 表:状态码 156 的可能原因 状态码 156 的原因 说明及推荐操作 NetBacku ...

  8. jstree前端设置默认选中项

    $("#jstree").on("loaded.jstree", function (event, data) { var currDeptId = crm.g ...

  9. LeetCode949-给定数字能组成的最大时间

    问题: 给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间. 最小的 24 小时制时间是 00:00,而最大的是 23:59.从 00:00 (午夜)开始算起,过得越久,时间 ...

  10. TP5 发送邮件代码

    发送邮箱邮件方法 /** * 系统邮件发送函数 * @param string $tomail 接收邮件者邮箱 * @param string $name 接收邮件者名称 * @param strin ...