whitekyo / backbone-demo

backbone例子
0 stars 1 forks source link

nodeJS #5

Open whitekyo opened 10 years ago

whitekyo commented 10 years ago

什么是NodeJS JS是脚本语言,脚本语言都需一个解析器才能运行。对于写在HTML页面的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS。NodeJS就是一个解析器。 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许环境提供的内置对象和方法做一些事情。例如运行在浏览器中的js的用途是操作DOM。而运行在NodeJS中的js的用途是操作磁盘文件或搭建HTTP服务器。

Node的优越性 实现高性能Web服务器,它首先看重的是事件机制和异步IO模型的优越性,而不是JS

模块 在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。在编写每个模块时,都有require、exports、module三个预先定义好的变量可供使用。 require reuqire函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径,或者绝对路径,另外,模块名中的.js扩展名可以省略。 exports exports对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过require函数使用当前模块时得到的就是当前模块的exports对象 module 通过module对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。

二进制模块 虽然一般我们使用JS编写模块,但NodeJS也支持使用C/C++编写二进制模块。编译好的二进制模块除了文件扩展名是.node外,和JS模块的使用方式相同。虽然二进制模块能使用操作系统提供的所有供,拥有无限的潜能,但对于前端同学而言编写过于困难,并且难以跨平台使用。

包(package) JS模块的基本单位是单个JS文件,但复杂的模块往往由多个子模块组成,为了便于管理和使用,我们可以把多个子模块组成的大模块称做包,并把所有子模块放在同一个目录里。 当模块的文件名是index.js,加载模块时可以使用模块所在目录的路径代替文件路径。

package.json 如果想自定义入口模块的文件名和存放位置,就需要在包目录下包含一个package.json文件,并在其中指定入口模块的路径

NPM NPM是随同NodeJS一起安装的包管理工具,能够解决NodeJS代码不熟上的很多问题,常见的使用场景有以下几种: 1.允许用户从NPM服务器下载别人编写的三方包到本地使用 2.允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用 3.允许用户将自己编写的包或命令行上传懂啊NPM服务器供别人使用。 下载好之后,argv包就放在工程目录下的node_modules目录中,因此在代码中只需要通过require('argv')的方式就好,无需指定三方包路径

whitekyo commented 10 years ago

JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供二进制数据的操作。除了可以读取文件得到Buffer的实例外,还能直接构造。 var bin = new Buffer([0x68,0x65,0x6c,0x6f]); bin[0] // 0x68 var str = bin.toString('utf-8') // hello

buffer与字符串有一个重要区别。字符串是只读的,并且对字符串的任何修改得到的都是一个新字符串,原字符串保持不变。至于Buffer,更像是可以做指针操作的C语言数组。

如果想要拷贝一份Buffer,得首先创建一个新的Buffer,并通过.copy方法把原Buffer中的数据复制过去。这个类似申请一块新的内存,并把已有内存中的数据复制过去。

whitekyo commented 10 years ago

数据流 当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS通过各种Stream来提供对数据流的操作

NodeJS通过fs内置模块提供对文件的操作。fs模块提供的API基本上可以分为以下三类: 1.文件属性读写 2.文件内容读写 3.底层文件操作 fs模块的所有异步API都有对应的同步版本,用于无法使用异步操作时,或者同步操作更方便时的情况。同步API除了方法名末尾多了一个Sync之外,异常对象与执行结果的传递方式也有相应变化。

操作文件时难免不与文件路径打交道。NodeJS提供了path内置模块来简化路径相关操作,并提升代码可读性。 path.normalize 将传入的路径转换为标准路径 path.join 将传入的多个路径拼接为标准路径。该方法可避免手工拼接字符串的繁琐,并且能在不同系统下正确使用相应路径分隔符。

lukechou commented 9 years ago

Thanks a lot for brief introduction about the nodeJs,which is very helpful for me to have a preliminary know about the it. Wish the soure would be increasing and updating.