Node.js学习笔记
Node.js学习笔记:
Node.js只是JavaScript的开发环境,但是不包括BOM和DOM
NODE常用API
一些简单的操作:
打开:win+R --> cmd
1、切换盘符 D:
2、改变目录:cd -->后面跟要去的目录
3、运行程序:node -->后面跟要运行的文件
4、清除:cls
在node中采用ecmascript进行编码,没有BOM和DOM,和浏览器中的JS不一样
浏览器中的JavaScript是没有文件操作能力,但是node中的JavaScript具有文件操作的能力
fs是file system的简写,是文件系统的意思
在node中如果想要进行文件操作,就必须引入fs这个核心模块
在fs这个核心模块中,就提供了所有的文件操作相关的API
例如:fs.readFile就是用来读取文件的
1、使用require方法加载fs核心模块
var fs=require(‘fs’)
2、读取文件
fs.readFile(‘读取的文件路径’, function(){});
第一个参数就是要读取的文件路径,第二个参数是一个回调函数
文件里存储的都是二进制,所以我们想要看到其中内容需要用toString()转化成字符串(eg:console.log(data.toString()))
3、写文件
var fs=require(‘fs’);
fs.writeFile(‘文件的路径和名字’,’文件内容’function(error){})
第一个参数:文件路径
第二个参数:文件内容
第三个参数:回调函数(只接受一个参数error)
可以在回调函数内插入一下代码确认是否有错误发生
if(error){
console.log(‘读取文件失败/写入失败’)
}else{
console.log(data.toString()/’’写入成功’)
}
http
使用node构建一个web服务器-->在node中,专门提供了一个核心模块:http,帮助创建编写服务器
1、加载http核心模块
var http=require(‘http’)
2、使用http.createServer()创建一个web服务器,同时返回一个server实例
var server=http.createServer()
3、服务器的作用:发请求--接受请求--处理请求--给个反馈(发送响应)
注册request请求事件,当客户端请求过来,就会自动触发服务器的request请求事件,然后执行第二个参数:回调处理
server.on(‘request’,function(request,response){
console.log(‘收到客户端的请求了,请求路径是:‘+request.url)
})
//request请求事件处理函数,需要接收两个参数
request请求对象-->请求对象可以用来获取客户端的一些请求信息,比如请求路径
response响应对象-->响应对象可以用来给客户端发送响应
response对象有一个方法:write可以用来给客户端发送响应数据,write可以使用多次,但是最后一定要使用end来结束响应,否则客户端会一直等待
response.write(‘hello!’);
reponse.end();
//res.write('hello world');
//res.end();
//上面的两行用起来比较麻烦,推荐使用更加简单的方式,直接end的同时发送响应数据。
res.end('hello world');
//响应内容只能是二进制数据或者字符串,不能是数字,对象,数组,布尔值,但是可以用json转化
res.end(JSON.stringify())
4、绑定端口号,启动服务器
server.listen(端口号数字 );
localhost、127.0.0.1 和 本机IP之间的区别:
1、localhost等于127.0.0.1,不过localhost是域名,127.0.0.1是IP地址。
2、localhost和127.0.0.1不需要联网,都是本机访问。
3、本机IP需要联网,本机IP是本机或外部访问, 本机 IP 就是本机对外放开访问的IP地址,这个网址就是与物理网卡绑定的IP地址。
Node中的JavaScript
ECMAScript:(没有DOM,BOM)
核心模块
第三方模块
用户自定义模块
核心模块
node为JavaScript提供;1很多服务器级别的API,这些API绝大多数都被包装到了一个具名的核心模块中了。
例如:文件操作中的fs核心模块,http服务构建的http模块,path路径操作模块,os操作系统信息模块
加载模块方法:
var fs = require(‘fs’)
在node中没有全局作用域,只有模块作用域,外部访问不到内部,内部也访问不到外部,默认都是封闭的
require方法有两个作用:
1、加载文件模块并执行里面的代码
2、拿到被记载文件模块导出的接口对象
在每个文件模块中都提供了一个对象:exports
exports默认是一个空对象
所有联网的程序都需要进行网络通信
计算机中只有一个物理网卡,而且同一个局域网中,网卡的地址必须是唯一的,网卡是通过唯一的ip地址来进行定位的
ip地址用来定位计算机。端口号用来定位具体应用程序。
需要联网通信的软件都必须有端口号
端口号的范围:0-65536
在计算机中有一些默认端口号,最好不要去使用,比如HTTP服务的80,我们在开发过程中使用一些最好使用ige没什么含义的数字
在服务器默认发送的数据,其实是utf-8编码的内容,但是浏览器在不知道服务器响应内容的编码情况下会按照当前操作系统的默认编码去解析,
解决办法:正确地告诉浏览器发送硌得内容是什么编码
res.setHeader(‘Content-Type’,’text/plain;charset=utf-8’)
在http协议中,Content-Type就是用来告知对方发送的数据内容是什么类型,text/plain就是普通文本