一 环境
1 官网node.js的下载
下载 官网 选择适合的版本 http://nodejs.cn/download/
2 下载安装完成以后 测试 node -v npm -v
二 什么是NodeJS?
2.1 NodeJS 是基于Chrome V8引擎的 JavaScript 运行环境(可以在服务器上运行 JavaScript)
第一个Node.js程序
2.2 在Node里面最常使用的匿名函数
匿名函数 :由名可知,匿名函数就是没有名字的函数
//有名函数
function helloWorld() {
console.log("hello1");
}
helloWorld();
//匿名函数
function helloWorld2(anoymousFunction) {
anoymousFunction();}
helloWorld2(function(){ console.log("hello2") })
//有名
function helloWorld() {
console.log("hello1");
}
helloWorld();
//匿名函数
function helloWorld2(anoymousFunction) {
anoymousFunction();}
helloWorld2(function(){ console.log("hello2") })
2.3 Node.js在服务器启动
引入模块:模块是Node.js 应用程序的基本组成部分,可以理解为java里面的导入包
const http = require('http');
//1 导入模块http
//2 创建httpServlet服务
http.createServer(function(request,response){
response.writeHead(200,{'Content-type':'text/html'});//浏览器如何去解析接收到的数据
response.end("<h1>hello Server</h1>"); //传输给服务器的数据
}).listen(8888); //3 监听端口8888
console.log("证明node在服务器启动")
2.4 EventEmitter 事件触发与事件监听器功能
添加监听对象以后如果事件被触发以后会执行
案例
var EventEmitter = require('events').EventEmitter;
var event =new EventEmitter();
event.on('some_event',function () {
console.log('some_event 事件触发');
})
setTimeout(function () {
event.emit('some_event');
},1000);
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent', function(arg1, arg2) {
console.log('listener1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2) {
console.log('listener2', arg1, arg2);
});
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');
2.5 Stream 流事件
无论是学 java还是Node Stream是绕不开的 可以对比学习
案例 先输入流 再输入流
//写入流
var fs = require("fs");
var data = 'mayongtong';
// 创建一个可以写入的流,写入到文件 input.txt 中
var writeStream =fs.createWriteStream("input.text");
// 使用 utf8 编码写入数据
writeStream.write(data,'UTF8');
// 标记文件末尾
writeStream.end();
// 处理流事件 --> finish、error
writeStream.on('finish',function () {
console.log("写入完成");
})
writeStream.on('error',function (err) {
console.log("写入失败")
})
console.log("程序执行完毕");
// 创建可读流
var readerStream = fs.createReadStream('input.text');
// 设置编码为 utf8。
readerStream.setEncoding('UTF8');
// 处理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {
data += chunk; //chunk(Buffer对象)相当于buffer.toString() + buffer.toString()
});
readerStream.on('end',function(){
console.log(data);
});
readerStream.on('error', function(err){
console.log(err.stack);
});
console.log("程序执行完毕");
2.6 node 去连接数据库Mysql
2.6.1 先导入mysql的依赖包
var mysql= require('mysql');
2.6.2 创建一个mysql的Connection对象
var connection=mysql.createConnection({
host:"127.0.0.1",
port:3306,
user:"root",
password:"123456",
database:"data" //本地数据库
})
2.6. 3 开辟连接
connection.connect();
connection.query("select * from classafter",function (error,result) {
if(error) throw error;
console.log("results = ",result);
} );
//查询语句后面的函数是 非阻塞代码 意思是 不需要等待语句执行完,这样就可以在执行语句同时执行接下来的代码,大大提高了程序的性能。
console.log("程序执行结束!");
connection.end( );
源码放git需要的自取 https://gitee.com/Ma2321035705/node.git