手机版

node.js入门教程

时间:2021-11-07 来源:互联网 编辑:宝哥软件园 浏览:

什么是节点?尽量用文字涵盖一切,所以我有选择地从网上拿了一些关于基本概念的东西,一些地方政策也改变了他们的认识。知道这些概念性东西的人可以选择跳过这一段。1.Node是一个服务器端的JavaScript解释器,但是我真的认为擅长JavaScript的同学通过学习Node就可以轻松拿下它,所以你错了。总结一下:不知道水深,但不浅。2.2的目标。Node旨在帮助程序员构建高度可扩展的应用程序,并编写可以同时处理与物理机器的数万个连接的代码。处理高并发和异步I/O是Node吸引开发人员关注的原因之一。3.Node本身运行的是Google V8 JavaScript引擎,所以速度和性能都很不错,看看chrome就知道了,在封装的同时,Node还提升了处理二进制数据的能力。因此,Node不仅简单地使用V8,还对其进行了优化,使其在各种环境中更加强大。(什么是V8 JavaScript引擎?请“百度知道”)4。第三方扩展和模块在Node的使用中起着重要的作用。下面还会介绍下载npm,这是一个模块的管理工具,用它来安装Node的各种软件包(如express、redis等)。)并发布为Node编写的软件包。安装节点在这里,让我们简单谈谈在window7 7和linux中安装节点。安装的时候一定要注意Python版本。很多时候,安装因为Python版本而失败。建议2.6版。如果版本较低,将出现节点安装错误。查询Python版本时,可以在终端输入:pyhton -v 1。首先介绍linux下的安装。在Linux环境下安装和使用Node非常方便。建议在Linux下运行Node。_ .我用的是Ubuntu 11.04a,安装依赖包:50-100kb/S每个包大概一分钟就可以下载安装。复制代码如下: sudo apt-get install g curl libssl-dev Apache 2-utils sudo apt-get install git-core b .在终端逐步运行命令:复制代码如下:git cl。如果一个git ://github.com/joy ent/node . git CD节点。/configure make sudo make安装成功,节点在此步骤安装成功,2M网络总共需要12分钟。注意:如果不需要git下载,也可以直接下载源代码,但是下载安装的时候要注意Node版本。Git是最方便的下载安装方式,所以推荐。2.不建议在Windows下使用Cygwin安装Node,因为真的需要很长时间,而且人品好。我的系统是win7 Ultimate Cygwin,这是一个运行在windows平台上的unix仿真环境。下载地址:http://cygwin.com/setup.exe.下载完Cygwin后开始安装。步骤:a .从互联网上选择下载安装的来源b .选择下载安装的根目录c .选择存储下载文件的目录d .选择连接方式e .选择下载的website-http://mirrors.163.com/cygwin f .麻烦就在这一步。考验角色的时候到了。的下载和安装时间不确定,但无论如何都需要很长时间(超过20分钟),偶尔安装也会失败。单击每个包前面的旋转箭头图标,选择您想要的版本。选中后,将出现一个“x”表示该包已被选中。选择要下载的包:复制代码如下:Devel包:gcc-g:c编译器gcc-mingw-g : Ming 32支持gcc 4-g:g子包的头和库。gegit:快速版本控制系统核心文件make : ' make '实用程序的GNU版本-develop 3360 OpenSSL开发环境tpkg-config:一个用于检索已安装libraries lib-develop :的信息的实用程序zlib压缩/解压缩库(开发)编辑器包:Vim : VI改进增强VI编辑器Python包:您可以将默认值切换到安装状态。Web包:wget :实用程序,通过http和ftpcu从www检索文件。Rl :多协议文件传输命令行工具最后截图,以下载zlib-dev为例:

环境只是在最后几个步骤之后构建的,但是现在还不是安装Node的时候,需要在Cywgin的ASH模式下执行rebaseall。以下步骤:a. cmd命令行b .进入cygwin安装目录下的bin子目录c .运行ash进入shell模式d ./rebase all-v . e .没有错误就关闭命令行窗口。现在是下载和安装Node的时候了。启动Cygwin.exe后输入:复制代码如下: $ wget http://nodejs.org/dist/node-v0.4.12.tar.gz$ tar xfnode-v0.4.12.tar.gz $ cdnode-v 0 . 4 . 12 $。/Configure$ make$ make install3。直接下载node.exe文件,直接去nodejs.org下载。听说有不稳定的问题。但是,如果你只是想先了解windows下的Node,我个人觉得这个方法比安装一个Cygwin要好得多。注意:本来不想写关于安装Node的,但是为了本文的全面性写了一下。没想到写了这么久.茶几上写着“Hello World”——为什么每次看到这句话我都会觉得有些激动和不解.首先创建一个hello.js文件,在文件中复制以下代码:复制代码如下: var http=require(' http ');函数(req,res) { res.writeHead(200,{ ' Content-Type ' : ' text/plain ' });RES . end(' Hello World \ n ');}).听(1337,' 127 . 0 . 0 . 1 ');console.log('服务器运行于http://127 . 0 . 0 . 1:1337/');代码:a .全局方法require()用于导入模块。通常,require()方法的返回值直接赋给一个变量,这个变量可以直接在JavaScript代码中使用。require('http ')是将系统预置的http模块b. http.createServer作为一个模块加载的方法,目的是创建并返回一个新的web服务器对象,并将回调绑定到服务来处理请求。c .通过HTTP.listen()方法,HTTP服务器可以位于特定的端口监视器中。不用说,任何了解firebug的人都应该知道Node已经实现了这个方法。注意:如果你想知道具体的细节,请查看文档cnodejs.org/cman/all.html#http.createServer.然后运行Node服务器并执行hello.js代码。如果成功启动,您将在console.log()中看到文本。有一幅画是真实的:

除了Node本身提供的API,还有很多第三方模块,大大提高了开发效率。npm是Node的包管理器,可以用来安装所需的包,并发布为nodejs编写的包。官网地址:npmjs.org安装只需在终端写一行代码:复制代码如下: curl http://npmjs.org/install.sh | shnpm安装节点扩展包也是一行代码:复制代码如下:npm安装包名称//示例:npm install express注意:如果模块安装时域名有误,请清除缓存npm缓存清理或重启计算机。了解Node的模块概念在Node中,不同的功能组件被划分为不同的模块。应用程序可以根据自己的需要选择和使用合适的模块。每个模块都公开了一些常见的方法或属性。模块的用户可以直接使用这些方法或属性,不需要知道内部的实现细节。除了Node本身提供的API之外,开发人员还可以利用这种机制将应用拆分成多个模块,提高代码的可重用性。1.如何使用该模块?在Node中使用模块非常方便。在JavaScript代码中,可以直接使用全局函数require()加载模块。在刚才的“Hello World”例子中,require('http ')可以加载系统预置的http模块;模块名称以“”开头。/',例如,require('。/myModule.js’)用于将my module . js模块加载到与当前JavaScript文件相同的目录中。2.如何自己开发模块?刚刚介绍了使用require()导入模块时,模块名称以'开头。/'是我自己开发的模块文件。需要注意的是JS文件的系统路径。代码封装了模块内部的处理逻辑,一个模块通常会公开一些公共的方法或者属性给其他人使用。模块的内部代码需要公开这些方法或属性。3.举一组简单的例子。首先,创建一个模块文件,如myModule。JS,然后一行代码console.log ('hidarlen '。),然后创建一个test.js文件,导入这个js文件,执行node查看结果

现在,Node社区中有许多第三方模块。希望更多的人通过学习Node加入这个大家庭,为Node社区做贡献。先谢谢大家,我们继续。4.举一个更深层次的例子。在本例中,将介绍私有和共享。首先用下面的代码创建一个myModule.js:复制代码如下:var name=' Darrenthis.location='北京';this . show log=function(){ console . log(' Hi Darren . ')};代码中有三种类型:私有属性、共享属性和共享方法。然后创建一个test.js并执行9504.163.com。

结果的亮点清楚地告诉我们,我们不能在模块外得到私有方法,所以是未定义的。共享属性和共享方法的声明需要以这个关键字作为前缀。Node能做什么及其优势Node的核心思想是:1。不堵塞;2.单线程;3.事件驱动。在当前的web应用中,客户端和服务器之间的一些交互可以看作是基于事件的,因此AJAX是页面及时响应的关键。每次发送请求(无论请求的数据有多小),它都会在网络中来回传递。服务器必须响应这个请求,通常是启动一个新的进程。访问此页面的用户越多,发起的请求就会越多,就会出现内存溢出、逻辑交织导致冲突、网络瘫痪、系统崩溃等问题。Node的目标是提供一个构建可扩展网络应用的方案。在hello world示例中,服务器可以同时处理许多客户端连接。节点和操作系统之间有一个契约。如果创建了新链接,操作系统将通知节点,然后进入睡眠状态。如果有人创建了一个新的链接,它(节点)执行一个回调,每个链接只占用非常小的(内存)堆栈开销。举一个简单的异步调用例子,准备test.js和myMydule.js,_。将以下代码复制到test.js中并执行:复制代码如下: var fs=require(' fs ');fs.readFile('。/myModule.js ',函数(err,data){ if(err)throw err;console.log('成功');});console . log(' async ');

所谓异步,每个人都应该期望运行时会先显示‘异步’,然后显示‘成功’。节点是非阻塞的。当一个新的请求到达服务器时,它不需要单独为这个请求做任何事情。节点只是等待请求发生,如果有请求的话就处理它。Node更擅长处理小请求和基于事件的I/O,Node不仅仅是一个Web服务的框架,它可以做更多的事情,比如它可以是Socket服务,可以是基于文件,然后可以是基于比如子流程,然后在内部,它是一个非常完整的事件机制,包括一些异步和非注入的解决方案,而且不局限于网络层。同时,即使作为Web服务,它也可能提供更多可以深入服务核心的功能,比如Node使用的Http Agent,这意味着它可以深入服务核心做一些功能。事件流概念:由于Node采用事件驱动的模式,它里面的很多模块会生成各种事件,模块可以添加事件处理方法。所有能够生成事件的对象都是事件模块中EventEmitter类的实例。代码是全世界通用的语言,所以我们还是用代码说话:复制代码如下: var events=require(' events ');var发射器=新事件。event emitter();emitter.on('myEvent ',function(msg){ console . log(msg);});发射器。发射器(' myEvent ',' Hello World ');简单分析这一段:1。使用require()方法添加事件模块,并将返回值赋给变量。2.新事件。EventEmitter()创建一个事件触发器,即事件模块中EventEmitter类的一个实例。3.on(事件,侦听器)用于向事件事件添加事件处理方法。听者4。emit(事件,[arg1],[arg2],[.])方法用于生成事件。使用提供的参数作为侦听器函数的参数,按顺序执行侦听器列表中的每个侦听器函数。EventEmitter类中的方法都与事件的生成和处理相关:1。addListener(事件,侦听器)和on(事件,侦听器)都将一个侦听器添加到指定事件2的侦听器数组的末尾。一次(事件,侦听器)此方法为事件添加一次性侦听器。侦听器在第一次触发事件时执行,稍后将被移除。3.移除监听器(事件,监听器)此方法用于从指定事件的监听器数组中移除监听器。4.Emit(事件,[arg1],[arg2],[.】)刚才已经提到了。在Node中,有各种各样的数据流,Stream是由不同对象实现的抽象接口。比如对HTTP服务器的请求是一个流,类似于stdout(标准输出);包括文件系统、HTTP请求和响应、TCP/UDP连接等。流可以是可读的、可写的,也可以是可读和可写的。所有流都是事件发射器的实例,因此可以生成不同的事件。可读流主要产生以下事件:1 .数据读取流中的数据时触发此事件。2.end当流中没有要读取的数据时,会触发此事件。3 .错误读取数据时触发此事件。4.close当流关闭时,会触发此事件,但并非所有流都会触发此事件。(例如,通过连接进入的HTTP请求流不会触发“关闭”事件。还有一个特殊的fd事件,当流中接收到文件描述符时触发。只有UNIX流支持此功能,其他类型的流不会触发此事件。相关文档:http://cnodejs.org/cman/all.html#events_'s强大的文件系统文件系统模块节点中的文件系统模块用于操作本地文件系统。文件的输入输出由标准的POSIX函数封装。使用require('fs ')访问此模块。的所有方法都提供异步和同步方法。fs模块中提供的方法可用于执行基本的文件操作,包括读取、写入、重命名、创建和删除目录以及获取文件元数据。每种操作文件的方法都有两个版本:同步和异步。

异步操作的版本使用回调方法作为最后一个参数。操作完成后,将调用回调方法。回调方法的第一个参数始终保留为操作期间可能发生的异常。如果操作成功,则第一个参数的值为null或未定义。同步版本的方法名是相应异步方法后的同步后缀。例如,异步rename()方法的同步版本是renameSync()。下面列出了fs模块中的一些常用方法,这些方法都只介绍了异步操作的版本。test.js和myModule.js文件准备好了吗?将以下代码复制到test.js中并执行一个副本。代码如下: var fs=require(' fs ');fs.unlink('。/myModule.js ',函数(err){ if(err)throw err;console.log('已成功删除my module . js ');});如果没有报错,myModule.js就会被删除,就这么简单

这只是一个简单的例子。如果你感兴趣,自己试试,实践真理。由于篇幅原因,例子不多。_学习节点总结:1。对于一个对linux命令和shell几乎一无所知的人来说,这段时间我对linux了解了很多;Vim真的是一个强大的编辑器,不用鼠标的感觉真的很好。有一件事对我很重要。在linux下编程很酷,尤其是在团队中,使用windows,安装更健康。2.了解一个成功的服务器端JavaScript框架——Node,以及使用它的一些优点和方法。这篇文章是最好的总结。当然,这只是开始。我想对大家说:1。我不得不劝阻这里的一些人。如果你对后台技术了解不够,或者还没有接触过服务器语言、I/O知识,也没有后台处理流程的概念,那么.Node不是一种适合入门的服务器技术。为什么这么说:a .重点是中文的例子和文章比较少,系统学习起来会比较麻烦,所以在使用的过程中总有一种不成熟的感觉,主要是我对它不熟悉造成的。国内使用Node的公司不多,当然国外也不少,图片来自cnodejs.org: 3。对于还没有进入这样梦想的公司有一些遗憾,但生活应该是这样的,有波折,有起伏,这正是我所需要和期待的.那么新的生活应该继续,做自己的舵手,把握自己的方向,让过去过去。

B.对于没有经验的朋友来说,node并不容易上手,从最简单的“Hello world”(了解各种运行环境和安装细节需要一点点努力)就可以看出来。不要比较jQuery库,因为处理的东西不一样,学习的成本也不一样——所以不建议做初学者的服务器技术。如果你想学习一门服务器端语言PHP和Python,这是一个不错的选择,因为:很多书,很多例子,很多框架,很多手,容易理解,容易构建.c .以上是我个人的善意建议。因为水平有限,请大家多多指教,希望发发慈悲。2.我不会拿Node的编写规范和具体技巧出丑,我自己写Node的代码也不多,但是面向对象的编程思想到处都是好的。3.希望这篇文章能对大家学习Node有所帮助。

版权声明:node.js入门教程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。