nodejs
什么是nodejs
1.运行在服务端的软件
2.后端程序的辅助软件
在哪里可以下载nodejs
下载软件:
官方网站:
https://nodejs.org/en/
下载历史版本:
https://nodejs.org/zh-cn/download/releases/
建议:不建议使用最新版本
下载完成后傻瓜式安装
下载完成以后,双击软件包,进行安装,按win键+R 出现一个运行窗口 输入cmd 进入dos命令
在dos命令中输入 node-v 如果出现 版本号,表示安装成功
然后输入 npm -v 查看npm版本 npm是安装软件的 类似于 苹果中的应用商店 安卓中的安卓市场
nodejs能干什么
-
可以解析js代码
-
可以搭建http服务 (搭建服务器)
-
操作数据库
nodejs的特点:
-
单线程操作(一个服务员服务多个客户) node是单线程的
-
定义:客户端发送的每一个请求,都会交给node服务器,node服务器,对应的创建一个进程去解决你的请求
-
缺点:不稳定,一旦出问题不好解决
-
优点:单兵作战能力强
-
-
多线程操作(多个人服务多个人)
-
定义:客户端发送的每一个请求,都会交给服务器,单独的每一个请求都会创建一个进程去解决你的请求
-
缺点:占用资源大,单兵作战能力差
-
有点:稳定相对会好一些
-
基于事件驱动
-
事件:用户的操作,当鼠标或者是键盘对文档(docuemnt)进行操作的时候,会调用指定的程序去执行
-
button div p img 找对象 绑定事件 调用对应的方法
-
事件驱动:用户操作过程中达到的指定的效果(产生事件后,会产生什么样的效果)
-
具有强大的npm包管理工具
npm 就是下载软件及服务
我们需要安装一下软件的时候,需要在dos命令行中输入: npm install 软件包名
使用nodejs执行我们的js代码
1.需要创建一个扩展名为 xxx.js文件
2.在cmd中将路径切换到项目的目录 cd 命令 切换目录 dir 查看当前目录中的多有文件及目录
3.在使用node执行 js文件的时候,需要在dos命令窗口中 输入 node js文件 在js文件中的console.log 不会打印到浏览器的控制台,会在黑窗口中看到
1.node基本格式
// node 可以搭建http服务器
// 1.引入http模块
var http=require('http')
// 2.创建一个http服务
var server=http.createServer(function(req,res){
// 服务端要告诉客户端,传输完毕,无需等待
res.end('over')
})
// 3.设置监听端口
server.listen(8090)
/*
访问方式:
在访问服务器的时候,需要先启动服务器,在cmd中 输入node js 文件(服务文件),会发现没有报错
就表示服务已经启动
在浏览器上输入:localhost(本机) ip 127.0.0.1
访问服务器的时候:主机:端口号 localhost:8090
注意:如果改了服务的代码,必须重新启动服务
*/
2.获取请求数据
// 1.引入http服务
var http=require('http')
// 引入url模块
var urll=require('url')
// 创建http服务
var server=http.createServer(function(req,res){
// 请求报文--》客户端告诉服务端的信息
// req -> request (请求报文)
// res -> response(相应报文)
// 1.获取请求方法
console.log('---------------1-----------------');
var method=req.method;
console.log(method);
// 2.获取请求路径
console.log('---------------2-----------------');
var url=req.url;
console.log(url);
// 3.获取请求头信息
console.log('---------------3-----------------');
var header=req.headers;
console.log(header);
console.log('---------------4-----------------');
// 4.获取header中的host的值
var host=header.host;
console.log(host);
// 参数:url地址参数 http://域名.com?键=值&键=值&.......
/*
5.获取url地址中的参数
需要引入一个模块 url 模块
因为在这个模块中有一个方法 parse方法
参数1:要解析的url地址
参数2:为true 会把解析的结果变成对象
*/
//http://localhost:8090/?name=libai&age=19
console.log('---------------5-----------------');
var par=urll.parse(url,true)
console.log(par.query);
console.log(par.query.age);
res.end()
})
// 3.设置监听
server.listen(8090);
3.设置请求信息
//1.引入 http服务
var http=require('http')
// 引入url模块
var urll=require('url')
// 2. 创建http服务
var sever=http.createServer(function(req,res){
// 相应报文的设置
// 设置相应头
res.setHeader('name','lisi');
// 设置状态码
res.statusCode=400;
//在network 中的headers中的Status Code: 400 Bad Request
// 服务端返回给客户端
res.write(`
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<meta charset="utf-8"/4
</head>
<body>
<h1>我是服务端返回的一级标题</h1>
</body>
</html>
`)
// res.write('memeda')
res.end()
})
// 3.设置监听端口
sever.listen(8090)
4.加载静态资源
var http=require('http')
var fs=require('fs')
var sever=http.createServer(function(req,res){
// 如何加载静态资源
// 静态资源
// html文件 css js img 。。。。
// 如果想要加载静态资源想要引入静态资源模块(fs)
// 1.fs(加载资源模块)
var fs=require('fs')
/*
2.获取url
读取静态资源
语法格式:
fs.readFile(参数1,参数2)
参数1:静态资源的文件路径+文件
参数2:是一个匿名函数
函数
参数1:err(错误)
参数2:data(数据)
*/
// 获取url:例如 http://localhost:8090/index login reg
var url=req.url;
console.log(url);
if(url=='/static'){
console.log('holo ');
// 加载静态资源
fs.readFile('./static.html',function(err,data){
// 判断是否有错误
if(err){
res.write(`
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<h4>404<br/>Not Found
The requested URL /asdfasdf was not found on this server.</h4>
</body>
</html>
`)
res.end();
}else{
res.write(data)
res.end()
}
})
}
// 加载css
if(url=='/css'){
fs.readFile('./public/css/static.css',function(err,data){
console.log(data);
if(err){
res.write('404')
res.end()
}else{
res.write(data)
res.end()
}
})
}
// 加载img
if(url=='/img'){
fs.readFile('./public/images/1.jpg',function(err,data){
if(err){
res.write('404')
res.end()
}else{
res.write(data)
res.end();
}
})
}
})
sever.listen(8090)
5.加载html中的文件 走第二分支的方法
var http = require("http");
var fs = require("fs");
server = http.createServer(function(req,res){
//获取url
var url = req.url;
console.log(url);
//通过url路径,根据路径是什么,加载不同的静态资源
if(url == '/static2'){
//加载static2.html页面
//console.log(url);
fs.readFile("./static2.html",function(err,data){
if(err){
res.write('404');
res.end();
}else{
res.write(data);
res.end();
}
})
}else{
//console.log(url);
var p = '.'+url;// public/images/1.jpg
console.log(p);
fs.readFile(p,function(err,data){
if(err){
res.write("404");
res.end();
}else{
res.write(data);
res.end();
}
})
}
})
server.listen(8090)