###上午总结
1.如何使用node打开javascript文件
1.打开文件所在的路径(可以手动输入或者打开文件所在的位置
然后按shift与鼠标右键)
2.node 文件名 (文件名.js || 文件名都可以)
3.回车就可以执行
.没有bom和dom
//在node中采用ecmascript进行编码 //没有bom和dom //和浏览器中的js不一样
3.为什么要有node?
解释:"Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞
(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用 V8 引擎,
同样,Node.js 实现了类似 Apache 和 nginx 的web服务,让你可以通过它来搭建基于
JavaScript 的 Web App。"
1.NodeJS被设计用来解决服务端阻塞问题
2.node可以直接运行javascript文件
4.node有什么作用?
1.在node中,我们的js具有操作文件的功能,而在浏览器中js不具有
(1)读文件操作
let fs = require('fs');
fs.readFile('文件路径(必选)','编码(可选)','回调函数(必选)')
回调函数(error,data)
成功
error null
data 数据
失败
error 错误对象
data undefined
成功的情况下:
let fs = require('fs'); fs.readFile('./01test.txt',function(error,data){ console.log(data);//<Buffer e5 95 a6 e5 95 a6 e5 95 a6 ef bc 8c e4 bd a0 e5 a5 bd e5 95 8a ef bc 81 ef bc 81 ef bc 81> console.log(error);null console.log(data.toString());可以打印文件的内容 })
失败的情况下:
let fs = require('fs'); fs.readFile('../001.txt',function(error,data){ console.log(data);//undefined console.log(error); // [Error: ENOENT: no such file or directory, open 'D:\前端学习new00\node\001.txt'] { // errno: -4058, // code: 'ENOENT', // syscall: 'open', // path: 'D:\\前端学习new00\\node\\001.txt' // } })
2.node 的写文件操作
成功
error null
失败
error 错误对象
fs.writeFile('./我是写入的.txt','很高兴遇见你!!!',function(error){
console.log(error);
第一个参数:写入文件的位置以及文件的名称和类型
第二个参数:要写入的内容
第三个参数:回调函数,只有一个形参
})
3.node 可以构建一个web服务器
4.一个核心模块:http
http:帮助创建一个服务器
(1)加载http模块
var http = require('http')
(2)使用 http.createServer()方法创建一个web服务器
返回一个Server实例
var server = http.createServer()
(3)服务器的功能
(1)提供服务:对 数据 的服务
(2)发请求
(3)接受请求
注册 request 请求事件
当客户端请求,自动触发服务器的request请求事件
然后执行函数 这两个参数皆为对象
function(request,response)
response对象的方法response.write()
response.end()
可以多次使用,但是最后一定要是用end来结束响应
简便方法:response.end('写入要响应的内容')
server.on('request',function(){ })
常见问题:
(1)根据请求的不同路径,返回不同的请求内容
(2)响应内容只能是二进制数据或者字符串
解决方法:JSON的方法
(4)处理请求
(5)给反馈(发送响应)
(4)绑定端口号,启动服务器
sever.listen(端口号,function(){})
5.node的一些小知识点
1.浏览器是不认识node代码的会报错,例如:let fs = require('fs');
2.核心模块
node为javascript提供了很多服务器级别的api,这些api绝大多数都被包装到了一个具名的
核心模块中。
3.如何使用node加载多个js脚本
解决:在一个js文件中引入其他的脚本文件
以 "./"或"../"开始都行
例:require('相对路径');
4.node没有全局作用域,只有模块作用域,也就是每个require是一个作用域
5.重点
1.在服务器端默认发送的数据是以utf-8编码的
2.但是浏览器不知道你是不是utf-8编码的
3.浏览器在不知道服务器响应内用的编码的情况下会按照当前
操作系统的默认编码去解析
4.中文操作系统的默认是gbk
解决方法:req.setHeader("Content-Type","text/plain";charset = utf-8)(req为一个形参名)
"text/html"
6.require()方法的作用
1.加载文件模块并执行里边的代码
2.拿到被加载文件模块导出的接口对象
require()引用其他文件时默认会返回一个空对象
###下午总结
Node中的javascript
+Ecamscript
(1)变量
(1)方法
(1)数据类型
(1)内置对象
(1)array
(1)object
(1)data
(1)Math
+模块系统
(1)在Node中没有全局作用域的概念,有模块作用域
(2)模块是封闭的
(2)外部无法访问内部,内部也无法访问外部
(2)在Node中只能通过require方法引入js文件
(3)重点:在每个模块中都提供了一个对象 -——exports
(1)该对象默认是一个空对象
(2)你可以手动挂载一些模块内部的变量函数等,
之后你就可以被外部的模块所引用
+核心模块
(1)由nodejs提供的
+http:帮助创建一个服务器
+端口号
ip地址定位计算机
端口号定位具体的应用程序
+Content-Type
+通过网络发送文件
+本质上讲发送的是文件的内容