浅析nodejs
- node版本管理
- windows <---> nvmw
- linux <---> nvm
- 发布自己的npm包 --->npm package manager
- 先创建一个文件
- 创建package.json npm init -y
- npm adduser 先添加一个用户,注册登录到npmjs.org网站
- npm whoami 查看当前用户是哪一个
- npm publish 发布 注:每次发布都要改一下版本号
- 可以到npmjs网站查看npm包
- a.js ---> module.exports = People require('a.js')
- require('./myPackage') 通过包引入js 默认找到index.js 规范的话myPackage文件夹下会有一个package.json文件
- global.global 还是指向global
- console
- 类 log、info、warn、timeEnd、time、trace(打印调用堆栈)、assert(断言 测试用 assert(false,msg) 为false则打印msg )、dir、error、
- 实例 -->console类标准输出和标准错误的实例
- 调试
- node debug test.js
- node-inspector 安装
- npm install node-inspector -g
- which node-inspector 查找在哪个目录下
- node-debug test.js
- node-inspector --web-port=9990
- node-inspector --web-port=9990 & 后台运行
- node --debug test.js 开始调试
- node --debug-brk test.js 结束调试
- 工具:webstorm
- 配置run node
- file-setting 搜索node 找到Node.js and NPM 配置Node interpreter: B:\soft\nodejs\node.exe
- js文件内右键 run hello.js就可以
- 配置提示补全
- configure... 下载核心模块
- 安装好了之后,相同位置会出现 Edit usage scope 点击 配置node相关
nodejs和javaScript异同 - 配置run node
- 同:数据类型定义、语法结构、内置对象
- 异:顶层对象 js:windows node:global
- 异:var a = 100 js可以window.a 访问到 node global.a undefined
- 模块
- 一个文件就是一个模块,每个模块都有自己的作用域
- __filename:当前模块文件被解析过后的绝对路径 属于当前模块作用域内 非全局 文件的
- __dirname:当前模块所在目录解析后的绝对路径 属于当前模块作用域内 非全局 文件夹的
- 模块加载系统
- require('js文件')
module.export = '模块' - 两个模块之间的var变量不能互相访问,想在一个模块之中访问另一个模块中的变量
- 把变量作为global对象的一个属性(不推荐,尽量减少全局变量)
- 使用模块对象module:保存和当前模块有关的一些信息
- module有一个子模块:exports:把一个模块中的局部变量进行提供访问
- module.export.a = a
- 在模块作用域内,还有一个内置的模块对象:exports,其实就是module.exports
- module.exports===exports //true
- module.exports 和 exports的区别:
- module.exports 初始值为一个空对象 {}
- exports 是指向的 module.exports 的引用
- require() 返回的是 module.exports 而不是 exports
- 如果 module.exports = [1,2,3] //exports和module.exports的指向关系已经断开了,export.a = 200 添加的a属性就不能反应在 module.exports 上。反过来同理。
- require('js文件')
- process:全局对象 a模块和b模块是相同的 使我们可以对当前运行的程序的进程进行访问和控制
- buffer:更好的操作二进制数据的类
- buf.write(要写入的字符串,从buffer对象中的第几位开始写入,写入的字符串的长度,写入的字符串的编码方式)
- buf.toString(编码方式,第几位开始,结束位(不包含))
- FileSystem
- var fs = require('fs')
- fs.open(要打开的文件的路径,打开文件的方式(读,写),设置文件的模式(读/写/执行 4/2/1 ),回调(err(文件打开失败的错误保存在err里面,如果成功err为null),fd(被打开文件的标识,与setTimeout返回的标识类似))) 异步的
- fs.openSync(要打开的文件的路径,打开文件的方式(读,写),设置文件的模式(读/写/执行 4/2/1 )) 同步的
- fs.read(fd(通过open成功打开一个文件的编号),读取到buffer对象,把读取的内容填充到buffer对象起始的位置,填充到buffer中内容的长度,文件的第几位开始读取(可为null),回调(err,buffer长度,buffer对象)) 异步的 也有同步版本
- fs.write(fd(通过open成功打开一个文件的编号),要写入的buffer对象,把写入的内容填充到buffer对象起始的位置,填充到buffer中内容的长度,文件的第几位开始写入(可为null),回调(err,写入的buffer长度,写入的buffer对象)) 异步的 也有同步版本
- fs.write(fd(通过open成功打开一个文件的编号),字符串, 文件中的写入的位置,编码,回调(err,写入的buffer长度,写入的buffer对象)) 异步的 也有同步版本
- fs.close(fd,回调) 关闭 异步的 也有同步版本
- fs.writeFile(filename,内容(可buffer可字符串),回调) 文件 有覆盖 无新建 异步的 也有同步版本
- fs.appendFile(filename,内容(可buffer可字符串),回调) 将内容加到文件后边 文件无新建 异步的 也有同步版本
- fs.exists(filename,回调(isExists(true/false))) 检查文件是否存在 异步的 也有同步版本
- 同步写法实例:
- fs.readFile(filename,读取模式,回调(err,data(buffer对象))) 异步的 也有同步版本
- fs.unlink(filename,回调(err ) 删除的方法 异步的 也有同步版本
- fs.rename(oldName,newName,回调) 异步的 也有同步版本
- fs.stat(filename,回调) 读取文件状态信息 异步的 也有同步版本
- fs.watch(所要监听的文件,回调(变化的事件名,文件名))
- fs.mkdir(path,模式,回调) 创建文件夹 异步的 也有同步版本
- fs.readdir(目录,回调(err,fileList)) 读取文件夹 异步的 也有同步版本
- HTTP
- var http = require("http") 创建一个服务
- 通过http模块下的createServer创建并返回一个web服务器对象 var server = http.createServer();
- server.listen(); 开启服务器的工作 端口号 默认监听所有网卡过来的数据
- server.address()
- server.on('error',function(err){ }) 监听错误信息
- server.on('listening',function(){ }) 监听
- server.on('request',function(req , res){ res.writeHead(200,'OK',{'content-type':'text/html;charset=utf-8'}); res.write('hello');res.end() //告诉服务器已经完成,必须最后且调用 }) 监听 也可以写在createServer回调里面
- server.on('response',function(){ }) 监听
- url url.parse()
- post get
如若喜欢,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!