`
Josh_Persistence
  • 浏览: 1653652 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Node JS: < 一> 初识Node JS

阅读更多

      目前,Node.js是在前端页面开发中十分受欢迎的,它是一套用来编写高性能网络服务器的JavaScript工具包,要求本文的阅读对象为有一定Javascript和其他开发语言基础的读者。

  什么是Node.js

   Node是一个Javascript运行环境(runtime)。实际上它是对GoogleV8引擎(应用于Google Chrome浏览器)进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。例 如,在服务器环境中,处理二进制数据通常是必不可少的,但Javascript对此支持不足,因此,V8.Node增加了Buffer类,方便并且高效地 处理二进制数据。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各环境下更加给力。

  发展历史

  2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。

  2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。

  2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。

  2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。

  2011年7月,Node.js在微软的支持下发布Windows版本。

  初识Node.js

  要开始使用Node.js的,必须先了解Node.js和传统的服务器端脚本环境(如:PHP,Python和Ruby的,等等)之间的差异。

  相信大部分读者都已经对ajax编程十分熟悉了,其中ajax中的a(asynchronous)指的是异步编成,所以在node.js世界中,一切的方法都是异步执行的,因此比如你需要程序中阅读一个操作系统中的文件,则必须指定一个回调方法,则在读取完这个文件后,则会执行这个回调方法的内容。

  下面,就Node.js跟其他语言来做个小的对比,读者可以可以看出其中的端倪。因为Node.js不是服务器运行环境,它实际上是在服务端运行的javascript,因此在性能上是十分高效的。下面是Node.js编写的一个小程序代码:

var i, a, b, c, max;
max = 1000000000;
var d = Date.now();
for (i = 0; i < max; i++) {
    a = 1234 + 5678 + i;
    b = 1234 * 5678 + i;
    c = 1234 / 2 + i;
}
 而相同的PHP代码如下:
$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;
$start = microtime(true);
for ($i = 0; $i < $max; $i++) {
$a = 1234 + 5678 + $i;
$b = 1234 * 5678 + $i;
$c = 1234 / 2 + $i;
}
var_dump(microtime(true) - $start);

  下面的表是两者对比的性能列表,以微秒为单位,如下:

Node JS初学者指南之基础介绍篇

  在命令行执行这两个应用程序,所以没有服务器端的延迟执行。对每个应用分别测试10次,取平均值,结果。如果循环的次数比较少,则php的速度快点,但这种优势,随着迭代次数的增加而减少,会发现都比nodejs慢了!

  可以看到Node.js速度是很快,但必须正确地使用它。下面介绍Node.js中几个重要的概念:

  Modules模块

   Node.js使用Module模块去划分不同的功能,以简化应用的开发。Modules模块有点象C语言中的类库。每一个Node.js的类库都包含 了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可 以很容易的创建http和tcp/udp的服务器。

  要在程序中使用模块是十分方便的,只需要如下:

  在这里,引入了 http类库,并且对http类库的引用存放在http变量中了。这个时候,node.js会在我们应用中搜索是否存在node_modules的目录, 并且搜索这个目录中是否存在http的模块。如果node.js找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,制定模块的 位置,比如:

  var myModule = require('./myModule.js');

  模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用export是对象去实现,比如如下代码:

var PI = Math.PI;
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};

  上面的代码中,创建了PI这个变量,这个变量只能在同一个模块中被访问,并且用exports分别将两个方法area和circumference对外暴露出去了,因此在其他模块中可以访问。

  尽量避免使用全局变量

   Node.js是使用Google的V8 JavaScript引擎。因此,我们应该遵循的最佳实践去进行客户端的开发。比如,我们应该尽量避免将所有东西都放在全局变量中。然而,这并不总是可能 的。在node.js中,要声明全局变量的话,甚至可以省略var关键字,这样你可以很容易地创建一个全局变量的函数,比如:

  globalVariable = 1;

  globalFunction = function () { ... };

  但是尽可能的话,还是应该少在Node.js中到处使用全局变量。

  Node.js的安装

  下面介绍下Node.js的安装,首先在nodejs.org的网站上根据操作系统下载相关的安装包,对于linux下的安装,可以如下进行:

  sudo apt-get update

  sudo apt-get install node

  或者:

  sudo aptitude update

  sudo aptitude install node

  Node.js就会在sid库,现在可以将它们增加到sources来源列表中

  sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list

  但要注意的是,在完成安装后,需要移走/etc/apt/sources.list.d/sid.list

1
2
分享到:
评论
2 楼 ssy341 2013-07-02  
几次了解nodejs,都没太弄懂,看来这是个知识积累的过程,慢慢来~
1 楼 javatozhang 2013-07-02  
希望lz持续更新

相关推荐

    01-初识 Node.js 与内置模块

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许开发者使用 JavaScript 编写服务端应用程序,而不仅仅局限于客户端浏览器。 - **官方网站**:[https://nodejs.org/](https://nodejs.org/) - **...

    初识 Node.js-3课时 课件 源码.zip

    这个"初识 Node.js-3课时 课件 源码.zip"文件显然是一个关于 Node.js 入门教程的压缩包,包含了三课时的课程内容以及源代码,适合初学者学习理解和实践。 ### 第一课时:Node.js 简介 在第一课时中,你可能会学习...

    02-初识 Node.js 模块化

    ### 02-初识 Node.js 模块化 #### 模块化基本概念 - **模块化的定义**: - 模块化是一种软件设计技术,它将一个复杂的系统分解为更小、更易管理的部分,即“模块”。 - 在现实世界中,模块化的例子比比皆是,...

    Node.js-《Node.js调试指南》

    在初识Node.js调试时,`console.log()`是最常用也是最基础的工具。通过在代码中插入`console.log()`语句,我们可以打印出变量的当前值,以追踪代码执行过程中的状态。 二、使用`debug模块` Node.js有一个名为`debug...

    03 初识 Node.js -Express

    ### 03 初识 Node.js - Express #### 1.1 Express 简介 - **Express** 是一个基于 **Node.js** 平台,快速、开放且极简的 Web 开发框架。 - **通俗理解**: Express 类似于 Node.js 内置的 http 模块,主要用于创建...

    05初识 Node.js-ev-api-server

    Node.js作为一种流行的JavaScript运行时环境,非常适合用于构建高性能的API服务器。本章节将介绍如何使用Node.js及其生态系统来搭建一个简单的API服务器,包括项目初始化、配置跨域访问、表单数据解析、路由管理以及...

    07Nodejs WEB服务器 静态文件托管、 GET POST路由 EJS模板引擎1

    在本课程中,我们将深入探讨Node.js在构建WEB服务器方面的应用,主要涉及四个核心概念:静态文件托管、路由、EJS模板引擎以及GET和POST请求。这些知识点对于任何想要利用Node.js开发高效、动态的WEB应用程序的人来说...

    前端开发Vue基础篇:Day01 初识Vue.pdf

    Vue.js是当前前端开发领域中非常流行的一个JavaScript框架,它主要用来构建用户界面,属于渐进式框架。渐进式框架的意思是,开发者可以将Vue作为应用的一部分,逐步地添加到现有的项目中,而无需一开始就将所有代码...

    04初识 Node.js-数据库与身份认证

    ### 04初识 Node.js-数据库与身份认证 #### 数据库的基本概念 数据库是用于组织、存储和管理数据的一种重要工具,在当前信息化社会中扮演着核心角色。无论是出行记录、消费历史还是浏览过的网页等内容,都可以被视...

    Node.js Web开发实战-(共14章)PPT.rar

    第1章 初识 Node.js.ppt 第2章 Javascript基础.ppt 第3章 Node.js基础入门.ppt 第4章 异步编程与包管理.ppt 第5章 http模块.ppt 第6章 Web开发中的模板引擎.ppt 第7章 Node.js中的文件操作.ppt 第8章 认识express...

    Node-js-First-project:使用password.js在node-js中进行用户身份验证

    **Node.js初识与用户身份验证** 在编程领域,Node.js是一个基于Chrome V8引擎的JavaScript运行环境。它以其异步、非阻塞I/O模型而著名,这使得它非常适合用于构建高性能的网络应用,尤其是实时的、数据密集型的Web...

    Hello-World-Node-JS

    《初识Node.js:从"Hello World"开始》 在编程世界中,"Hello World"是每个新手程序员的必经之路,它标志着编程之旅的启程。本文将围绕"Hello World"这一主题,深入探讨使用JavaScript语言在Node.js环境下进行Web...

    node-978-1-7895-3839-7:Node.js 设计模式 [视频]

    《Node.js设计模式 [视频]》是一门专为JavaScript开发者准备的高级课程,它深入探讨了如何在Node.js环境中应用和实现各种设计模式...无论你是初识Node.js,还是希望深化对这个平台的理解,这门课程都将提供宝贵的指导。

    NodeJS学习(黑马)

    【初识 Node.js】 Node.js 是一种基于 Google Chrome V8 JavaScript 引擎的开源、跨平台的 JavaScript 运行环境。它的出现使得开发者能够利用 JavaScript 语言进行服务器端编程,打破了传统的前端与后端的界限。...

    Web前端开发技术-初识JavaScript.pptx

    JavaScript的发展历程伴随着Web技术的进步,从最初简单的表单验证,到如今广泛应用于大型Web应用程序、桌面应用、移动应用甚至服务器端的Node.js环境中。它支持多种框架和库,如React、Angular、Vue.js等,这些工具...

Global site tag (gtag.js) - Google Analytics