1.0.0 • Published 9 years ago

zdxnodemkdir v1.0.0

Weekly downloads
1
License
ISC
Repository
-
Last release
9 years ago

#node ##node简介 简单的说node就是运行在服务器端的JavaScript
nodejs 是基于Chrome javascript运行时建立的平台
nodejs是事件驱动的基于非阻塞的基于V8引擎的javascript的运行环境 1、进入官网进行下载
2、偶数版本是稳定版,奇数版本是试用版 ##安装 ###window下安装 1、安装包中一个是node.msi,一个是node.exe,.exe文件就是一个二进制文件
要想在命令行运行node必须手动的将node.exe放到全局路径下面。node.msi包含了node 要选择add to path 将node.exe放到全局路径下
安装完成之后可以使用node -v 命令检测版本;npm -v可以检测npm的版本以及是否安装成功

##npm包管理工具(node package manage) 1、为了nodejs的程序人员开发方便,提供的一个包管理工具,(可以到npm官方网站上查看),不用关心自己编写的模块或者是他人编写的模块存放到哪里,或者有什么依赖关系 ##执行第一个程序 ###交互方式运行nodejs 1、node+回车(进入到node的编译环境)
2、在这个环境下只要你输入符合nodejs语法规范的代码,回车后会立即的到相应的结果
3、可以通过ctrl+c或者输入process.exit();退出node编译环境 ###编译方式 1、创建一个js文件 2、在命令行进入文件所在目录 通过node node.js对这个js文件进行解析和编译,如果想在控制台有所输出必须在js文件中console.log()输出 ##nodejs运行环境的配置 1、phpstrom来配置nodejs的运行环境
如果用到webStrom不用进行配置,因为这个编译器已经把响应的配置文件配置好了 (1)打开ps的配置项(setting)
(2)打开插件库plugin搜索nodejs,搜索成功后点击install进行安装,安装完成会有提示
(3)打开配置项,在framework中找到node and npm (4) 设置node的作用域,和enable #nodejs语法 ##nodejs全局对象 1、在JavaScript中有一个全局对象window(直接拿来用的) 2、node中的全局对象是global ###global中的子对象 1、console
1.1console.log("var",a)在控制台输出信息 1.2console.error("error",:"输出信息有误") 1.3console.time(在程序运行之前调用,记录当前的时间信息) 1.4console.timeEnd(在程序运行之后运行) 1.5console.track(追踪程序运行)
2、exports module(见下一张)
3、progress
用于操作或者获取或者查看当前进程对的相关消息
precess.argv 是用来获取命令行的参数"执行二进制文件",”它的第一成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数 process.cwd():返回当前进程的工作目录
process.chdir(directory):改变当前工作目录
process.stdin 标准的输入流 process.stdout 标准的输出流 事件“”data process.
主动去触发自定义事件 输入流的状态 precess.pause
process.resume
0:废弃
1:验证 在验证阶段不建议去使用,随时可能废除
2 不稳定在某些平台可以使用,并且不太稳定,不建议使用时刻关注最新版
3 稳定 进入稳定阶段,即使是改动也是改动最底层的接口和性能,不影响使用
4 冻结 已经非常稳定,可以投入到项目中使用
5 锁定 很长时间内不会升级\迭代,不接受修改(除非发生重大bug)
3、require(path)引入其他模块
require.cache 记录了当前文件所引入的所有模块 require.resolve(path)将引用模块的相对路径装换成绝对路径 #模块的概念 简介:因为在js中没有模块的概念所以会存在一些问题,覆盖,变量的重用 一个模块,一个模块就是一个文件,每一个文件都是一个独立的作用域,模块下定义的所有变量和函数都是属于这个模块的。如果想在全局中使用这些变量和函数,
必须通过global来定义。(通过global定义的变量和函数属性都具有全局性) 一般我们不会使用global来定义变量,因为这样子定义的是一个全局变量,会长期存在于内存中 通过require("路径")引进模块文件
1、moudle中有一个子对象exports子对象 moudle.exports.a=a(将a发射出去;a作为exports的一个属性) 2、也可以直接通过exports exports.a=a;(其实exports对象是moudle.exports的一个复制) 其实exports===moudle.exports,能够将当前模块下的值发射出去,让引用模块来获取相应的值
moudle.exports和exports他们是引用关系,如果直接给其中的一个赋值,会影响另一个的值(因为他们指向同一个对象) ##模块(nodejs中有3类模块) ###自定义的模块 在使用自定义模块时,引入某一个模块require(./..)必须是路径,不加路径的话会以为你调用的是核心模块
这个路径可以是绝对路径也可以是相对路径;同样引入核心模块时require(文件名称) ###内置模块 ###外部模块(包)

别人写好的模块 ##魔术常量 1、dirname (当前运行文件的目录) 2、filename(指当前运行的文件) ##buffer模块 buffer是一个基础类型,所以有固定长度放在栈中的,所以读取速度比较快
var buffer=new Buffer(10)
输入数字表示buffer的长度是10个字节 输入字符串 var buffer=new Buffer("abc") 输入数组 var buffer=new Buffer([1,2,3]) 数组的内容的类型不能随便写 以二进制的方式将buffer中的内容读取出来buffer.toString()方法 ##fs(文件模块) 官网参考笔记:http://www.runoob.com/nodejs/nodejs-fs.html ###方法 0、获取文件信息
fs.stat(path,callback)
path:要读取文件的路径
callback:回调函数,有两个参数callback(error,stats)
stats:表示读取文件之后会产生一个stats类的实例返回给callback。由此我们可以通过stats类中属性和方法来获取文件的信息
返回的stats可以调用stats.isFile()stats.isDirectory()来判断是文件还是路径
1、打开文件
异步方式打开fs.open(path,flag,[mode],callback)
path:要打开的文件的路径
flag:打开文件的方式
mode:权限
callback(error,id):有两个参数,error(文件不存在的时候会报错),id:文件标识符 2、读取文件
异步读取文件fsobj.read(fd, buffer, offset, length, position, callback)
fd:通过open方法得到的文件标识符
buffer:数据写入的缓冲区
offset:缓冲区写入的写入偏移量
length:要从文件中读取的文件偏移量
position:开始读取的位置,position为null就从文件的当前指针开始读
callback:回调函数,有三个参数,error,bytesRead,buffer。error错误信息,bytesRead读取的字节数,buffer缓存区对象
3、写入文件
之前的方法是比较底层的方法
fs.write(fd,buffer,offset,length,[,position],callback)
fd:文件标识符
buffer:要写入的内容
offset:要写入“写入文件”的什么位置 length: 要写的字节数
position:写入内容的什么位置开始写
callback:回调函数 4、写入文件 fs.writeFile(file,data[,options],callback)
它会把原来文件中的内容替换成写入的文件 file:文件的名字或文件的路径(当然也可以是buffer)
data:string|buffer
options:设置选项
创建文件并写入内容
5、追加内容 appendFile
如果文件存在,往里面追加内容,如果不存在和writeFile一样
6、修改文件的名字
fs.rename(oldPath,newPath,callback)
oldPath:原文件名字
newPath:新名字
7、删除文件
fs.unlink(path,callback)
8、读取文件
fs.readFile(filePath,[,option],callback)
filePath:要读取的文件名
8、拷贝文件
把a文件中的内容复制到b文件中可以自己编写
function copy(filename){ var fs=require("fs"); var index=filename.indexOf("."); var basename=filename.slice(0,index); var lastname=filename.slice(index); var newfilename=basename+"(1)"+lastname; fs.readFile(filename,function(err,data){ if(err){ console.log("出错"); }else{ fs.writeFile(newfilename,data,function(error){ if(error) { console.log("出错") } }) } }) }
操作路径 1、创建路径
fs.mkdir(path,[,mode])
path:路径名
2、删除路径
fs.rmdir(path,callback)
path:要删除的路径名

##node的版本升级步骤 1、npm install -g n
2、n ###补充 对文件的操作一系列操作是一个连贯的过程,不能分开来执行 var a=e=>b;(EC6中的函数符号,a:函数名,e:参数,b函数体 var a=e=>{},可以解决this的指向问题)