Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
浏览器中的JavaScript
Node.js中的JavaScript
Node.js是构建与 Chrome的V8引擎的JavaScript 运行环境
Node.js uses an event-driven,non-blocking I/O model that makes it lightweight and efficient.
Nodejs package ecosystem,npm,is the largest ecosystem of open source libraries in the world.
Web 服务器后台
命令行工具
对于前端开发工程师来将,接触node最多的是它的命令行工具
自己写的很少,主要是使用别人第三方开发的
B/S编程模型
模块化编程
@import()
一样来引用加载JavaScript脚本文件Node常用API
next
就可以了node --version
node -v
nodemon是一个基于Node.js开发的一个第三方命令行工具,我们使用的时候需要独立安装:
npm install --global nodemon
安装完毕之后,使用:
node app.js
#使用nodemon
nodemon app.js
只要是通过 nodemon app.js启动的服务,则它会监视你的文件变化,当文件发生变化的时候,自然帮你重启服务器。
node 文件名
执行对应的文件node.js
来命名,而且最好不要使用中文来命名。补充:
浏览器中的JavaScript是没有文件操作的能力的
但是,Node中的JavaScript具有文件的操作能力
响应内容只能是二进制数据或者字符串
上述,均可转换成二进制或者字符串(通过JSON.stringify()方法)
// 浏览器中的JavaScript是没有文件操作的能力的
// 但是Node中的JavaScript具有文件操作的能力
// fs是file-system的简写,就是文件系统的意思
// 在Node中如果想要进行文件操作,就必须引入fs这个模块
// 在fs这个核心模块中,就提供了所有的文件操作现相关的API
// 例如: fs.readFile就是用来读取文件的
// 1. 使用require方法加载fs核心模块
var fs = require('fs');
// 2. 读取文件 第一个参数就是要读取的文件路径
// 第二个参数是一个回调函数
// error 读取失败,error就是错误对象,读取成功,error就是null
// data 如果读取成功,data就是读取到的数据 读取失败,error就是错误对象
fs.readFile('./data/hello.txt', function(error,data){
// 文件中存储的其实就是二进制数据 0 1
// 这里为什么看到的不是0和1呢?原因是二进制转为16进制了
// 但是无论是二进制还是16进制,人类都不认识
// 所以我们可以通过toString方法把其转为我们能认识的字符
if(err){
console.log('读取文件失败');
}else{
console.log(data.toString());
});
}
var fs = require('fs');
// 第一个参数:文件路径
// 第二个参数:文件内容
// 第三个参数:回调函数
fs.writeFile('./data/writeFile.txt','大家好,我是写入的内容',function(error){
if(error){
console.log('写入失败了');
}else{
console.log('文件写入成功');
}
});
// 使用Node非常轻松的构建一个web服务器
// 在Node中专门提供了一个核心模块,http
// http这个模块职责就是帮助创建编写服务器的
// 1. 加载http核心模块
var http = require('http');
// 2. 使用http.createServer()方法创建一个web服务器
// 返回一个Server实例
var server = http.createServer();
// 3. 服务器作用? 提供服务:数据服务
// 浏览器发请求——接收请求——处理请求——给个反馈(发送响应)——注册request请求事件
// 当客户端请求过来,就会自动触发服务武器的request请求事件,然后执行第二个参数:回调处理
server.on('request',function(){
console.log('收到客户端的请求了');
});
// 4. 绑定端口号,启动服务器
server.listen(8888,function(){
console.log('服务器启动成功了,可以通过http://127.0.0.1:3000/ 来进行访问');
});`
// 使用Node非常轻松的构建一个web服务器
// 在Node中专门提供了一个核心模块,http
// http这个模块职责就是帮助创建编写服务器的
// 1. 加载http核心模块
var http = require('http');
// 2. 使用http.createServer()方法创建一个web服务器
// 返回一个Server实例
var server = http.createServer();
// 3. 服务器作用? 提供服务:数据服务
// 浏览器发请求——接收请求——处理请求——给个反馈(发送响应)——注册request请求事件
// 当客户端请求过来,就会自动触发服务武器的request请求事件,然后执行第二个参数:回调处理
server.on('request',function(){
console.log('收到客户端的请求了');
});
// 4. 绑定端口号,启动服务器
server.listen(8888,function(){
console.log('服务器启动成功了,可以通过http://127.0.0.1:3000/ 来进行访问');
});
var http = require('http');
// 1. 创建Server
var server = http.createServer();
// 2. 监听request请求事件,设置请求处理函数
server.on('request',function(req,res){
// console.log('收到请求了,请求的路径是:'+ req.url);
// res.write('hello world');
// res.end();
// 上面的方式比较麻烦,推荐使用更简单的方式,直接end的同时
//res.end('hello node.js');
// 根据不同的请求路径发送不同的响应结果
// 1. 获取请求的路径
// req.url 获取到的是端口号之后的那一部分路径
// 也就是说所有的url都是以 / 开头的
// 2. 判断路径处理响应
var url = req.url;
/*switch (url) {
case '/':
res.end('index page');
break;
case '/login':
res.end('login page');
break;
default:
res.end('404 not fund page');
break;
}*/
if(url === '/products'){
var products = [
{
name: '苹果',
price: 2222
},
{
name: '栗子',
price: 3333
},
{
name: '桃子',
price: 4444
}
]
res.end(JSON.stringify(products));
}
});
// 3. 绑定端口号,启动服务
server.listen(8000,function(){
console.log('服务器启动成功,可以访问了!');
});
fs
核心模块http
模块path
路径操作模块os
操作系统信息模块var fs = require('fs');
var http = require('http');
Node中,模块有三种:
在Node中,没有全局作用域,只有模块作用域
require方法有两个作用: