首先在搞清楚什么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. python使用浮点类型float计算后,数值不对_20180827

    在练习时,输入如下代码: 结果不准确. 原因:https://blog.csdn.net/bitcarmanlee/article/details/51179572 浮点数一个普遍的问题就是在计算机的 ...

  2. SQL Server索引总结二

    从CREATE开始 通过显式的CREATE INDEX命令 在创建约束时作为隐含的对象 随约束创建的隐含索引 当向表中添加如下两种约束之一时,就会创建隐含索引. 主键约束(聚集索引) 唯一约束(唯一索 ...

  3. linux 命令——48 watch (转)

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  4. maven操作手册

    ===Maven的安装=== http://blog.csdn.net/yang5726685/article/details/56486479 ===Maven的jar包仓库地址配置=== http ...

  5. 2018.1.4 UML 第三章 用例图

    第三章 用例图 (1)参与者 是指系统以外的需要使用系统或与系统交互的外部实体,吧阔人.设备.外部系统等. (2)参与者之间的关系 泛化关系的含义是参与者的共同行为提取出来表示成通用行为,并描述成超类 ...

  6. Python 之继承

    概要 如果要修改现有类的行为,我们不必再从头建一个新的类,可以直接利用继承这一功能.下面将以实例相结合介绍继承的用法.   新建一个基类 代码如下: class Marvel(object): num ...

  7. Spring学习记录(二)

    1.Spring中的AOP思想 aop思想:横向重复,纵向抽取. AOP(Aspect-OrientedProgramming,面向切面编程),AOP包括切面(Aspect),通知(Advice),连 ...

  8. 使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因

    公司的产品一直紧跟 .net core 3.0 preview 不断升级, 部署到 Linux 服务器后, 偶尔会出现某个进程CPU占用100%. 由于服务部署在云上, 不能使用远程调试; 在局域网内 ...

  9. CSVDE

    csvde -f C:\export_OrganizationalUnit.csv -r '(objectClass=organizationalUnit)' -l 'displayName,prox ...

  10. 避免修改Android.mk添加cpp文件路径

    手工输入项目需要编译的cpp文件到Android.mk里的缺点 1)繁琐,如果cpp文件很多,简直无法忍受 2)手工输入过程中容易出现错误 3)如果cpp文件更改名称,需要修改android.mk文件 ...