前言本文主要写给想了解node语言开发的小伙伴.文章可以简单的使用node进行开发,了解一些事件驱动的异步编程风格。主要分为节点背景、安装配置、模块创建参考等几个方面。建议您在阅读本文的途中亲自尝试一下。来个小例子,以便更好的掌握!背景Node.js,或Node,是一个在服务器上运行JavaScript的平台。它可以让JavaScript不受浏览器的束缚,在通用的服务器环境中运行,就像运行Python、Perl、PHP、Ruby程序一样。您可以使用Node.js轻松进行服务器端应用程序开发。Node.js几乎可以做Python、Perl、PHP和Ruby可以做的所有事情,但可以做得更好。Node.js是为开发实时网络(Real-timeWeb)应用而生的平台。从诞生之初就充分考虑了架构在实时响应和超大规模数据需求下的扩展性。这使得它摒弃了传统平台依赖多线程实现高并发的设计思路,而采用了线程、异构I/O、事件驱动的编程模型。这些特性不仅带来了极大的性能提升,也降低了多线程编程的复杂度,从而提高了开发效率。Node.js最初是由RyanDahl发起的开源项目,后来被JoyentCorporation注意到。Joyent招募了RyanDahl,因此Node.js现在由Joyent管理和维护。虽然它诞生时间不长(2009年),但它周围的经文已经形成了一个庞大的生态系统。Nodejs拥有强大灵活的包管理器(nodepackagemanager、npm),并且已经有数以万计的第三方模块,包括网站开发框架、MySQL、PostgreSQL、MongoDB数据库接口、模板语言解析、CSS生成T-形状的电子邮件、加密、图形、调试支持,甚至GUI和OSAPI工具。VMware建立的云计算平台CloudFoundry率先支持了Node.js。2011年6月,微软宣布与Joyent合作将Node.js移植到Windows,WindowsAzure云计算平台也支持Node.js。Node.js还处于快速发展阶段,相信在不久的将来它会成为流行的Web应用开发平台。从现在开始,一起探索Node.js的精彩世界吧!安装配置很容易在window上安装node。只需访问node官网,点击DownLoad链接,然后选择windowInstaller即可下载安装包。下载完成后打开,点击Next如图,即可完成安装。为了检查安装是否完成,打开命令行CMD,然后输入node。下载成功会进入节点交互模式。在MacOSX上安装Node.js,只需要访问node官网,点击DownLoad链接,然后选择MacintoshInstaller即可下载安装包。下载完成后,运行安装包,按照提示完成安装:node和npm都会安装在/usr/local/bin目录下,安装过程需要管理员权限。安装完成后,在终端输入node,回车进入node交互模式。如果提示-bash:node:commandnotfound,说明没有按照正确的方式安装完成。安装完成后需要重新安装练习进入node交互环境consolee.log('hello,node.js')output//hello,node.js1+2output//3可以进行加减乘除划分操作接下来,创建第一个应用程序,也可以称为模块!打开您常用的文本编辑器并输入varhttp=require('http');//通过require对象(指令)引用http模块//参数request代表发送请求的对象。response表示响应请求的对象http.createServer(function(req,res){//通过http对象的createServer方法创建服务器res.writeHead(200,{'Content-Type':'text/html'});//指定数据的content-type文本类型Fortext/htmlres.write('
Node.js
');//响应请求然后写入字体sizeofh1standardnode.jsres.end('HelloWorld
');//发送响应数据作为helloworld;}).listen(8888);//服务监听本地主机8888端口console.log('Serverrunningathttp://127.0.0.1:8888/');//在终端中,告诉用户服务运行在8888端口,保存为hello.js然后打开当前目录,打开命令行输入nodehello.js,会看到Server运行在http://127.0在命令行.0.1:8888/然后打开浏览器输入这个http://127.0.0.1:8888/就可以看到刚才写的响应数据了**是不是特别简单!!!!!模块的创建和引用学习node.JS必须知道的一些事情什么是模块?如何创建和加载模块?如何创建包?如何使用包管理?这次先说前两点,再说一点穿透力。观点!模块是Node.js应用程序的基础组件、文件和模块是一一对应的。换句话说,一个Node.js文件就是一个模块。此文件可能是JavaScript代码、JSON或已编译的C/C++扩展。varhttp=require('http'),其中http是Node.js的一个核心模块,内部用C++实现,外部用Javascript封装。我们通过require函数获取到这个模块,这样我们就可以使用其中的对象了。第二点!在Node.js中,创建一个模块非常简单,因为一个文件就是一个模块,我们需要关注的问题只是如何在其他文件中获取这个模块。Node.js提供了两个对象,exports和require,其中exports是模块的publicrequire接口,用于从外部获取模块的接口,即获取模块的exports对象。//创建模块//module.jsvarname;exports.setName=function(thyName){name=thyName;}exports.sayHello=function(){console.log('hello'+name)}在同一目录下创建getmodule.js//导入模块//getmodule.jsvarmyModule=require('./module');myModule.setName('zhangsan');myModule.sayHello();runnodegetmodule.js命令行输出//hellozhangsan上例中module.js使用exports对象使用setName和sayHello作为模块的访问接口,通过require('./module')在getmodule.js中,然后就可以在module.js中访问exports对象的成员函数require,不会重复加载模块,无论调用多少次require,得到的模块都是一样的,修改上面的getmodule。js//修改getmodule.jsvarhello1=require('./module');hello1.setName('zhangsan');varhello2=require('./module');hello2.setName('zhangsan2');hello1。问好();//输出为zhangsan2!因为变量hello1和变量hello2执行的是同一个实例,所以hello1.setName的结果被hello2.setName覆盖了!结果由后者决定将一个对象封装成一个模块,比如//hello.jsfunctionhello(){varname;this.setName=function(thyName){name=thyName;}this.sayHello=function(){console.log('hello'+name);}};module.exports=你好;//导出本模块的接口;如果按照export方式有exports.Hello=Hello,importrequire('./hello').Hello;根据上面的module.exports=Hello,导出和导入模块;//getHello.jsvarHello=require('./hello');你好=新的你好();hello.setName('张三');你好.sayHello();//outputhellozhangsan第三点/创建包是在modules的基础上进行更深层次的一步抽象,Node.js包类型和C/C++函数库或者Java/.Net类库。封装一个独立的功能,用于发布更新、依赖管理和版本控制。Node.js是基于CommonJS规范实现包机制,开发npm来解决包的发布和获取;node.js包是一个包含JSON格式的包描述文件package.json的目录。package.json必须在包的顶层目录,其他遵循CommonJS规范不是特别严格。第四点/包管理node.js包管理,即npm是Node.js官方提供的包管理工具。它已成为Node.js包的标准发布平台。npm提供了命令行工具,可以方便地下载、安装、升级和删除包!也可以发布和维护自己的包!npminstall(i)pagejson_name//在下载的格式末尾添加-g(--global)本地模式为全局模式npmuninstallpagejson_name//在删除的格式末尾添加-g(--global)全局模式//还有很多命令可以搜索,就不一一列举了,待续!!本来应该一起讲讲node的一些核心模块的,比如全局对象进程控制台,事件驱动事件,事件发射器错误事件继承EventEmitter等等。但是今天我实在是身体不适,请见谅,我可能会带几个放假所以提前把这个版本发出来,第一版暂时把他定位为node的探索,我会更新第二版。下一章不仅会完成这次没有提到的内容,还会带大家使用node进行web开发!最初定于一月2号!http和express安装和路由控制,比如工作原理,路由规则的创建等。什么是模板引擎?如何使用它?如何使用布局?etc.项目用到node配置文件再拿出来看看,至少知道是个什么样的流程,不一定是做什么的,但知道从哪里来的,export或者reference!这是进步!//进一步学习可参考本书学习https://www.nodebeginner.org/不要做幻想的乞丐,要做幸福的创造者!!!