-
一、简单介绍
(1)为什么学node
1.使自己更全面,有大局观
2.提升话语权
3.升职加薪的筹码
(2)node的作用和应用
1.脱离浏览器运行js
2.后台api编写
3.webpack、gulp、npm等
4.中间层:服务器中负责IO读写的中间层服务器
(3)学习node前置知识:HTML+CSS+JS
(4)node优势
1.便于前端开发入门
2.性能高
3.利于前端代码整合
二、开始入门
(1)环境搭建和运行
1.官网下载安装
2.检测安装成功:node -v
3.运行xxx.js
node xxx.js
(2)npm包管理(管理第三方插件、库)
传统方式:<script src="jquery.js"></script>
npm方式
npm init //初始化,创建package.json
npm install //xxx,安装包,node_modules目录
npm uninstall //xxx,删除包
cnpm代替npm:全局安装cnpm(淘宝NPM镜像)
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm常用命令
npm update xxx //升级
npm install //安装package.json中所有依赖
查看全部 -
let http = require('http');
let url = require('url');
let querystring = require('querystring');
let fs = require('fs');
let user = {
admin: 123456
}
http.createServer((req, res) => {
let path, get, post
if (req.method == 'GET') {
let { pathname, query } = url.parse(req.url, true);
path = pathname;
get = query;
complete();
} else if (req.method == 'POST') {
let arr = [];
path = req.url;
req.on('data', buffer => {
arr.push(buffer)
});
req.on("end", () => {
post = querystring.parse(Buffer.concat(arr).toString());
complete();
})
}
function complete() {
if (path == '/login') {
res.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
})
let { username, password } = get;
if (!user[username]) {
res.end(JSON.stringify({
err: 1,
msg: '用户名不存在'
}))
} else if (user[username] != password) {
res.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
})
res.end(JSON.stringify({
err: 1,
msg: '密码不正确'
}))
} else {
res.end(JSON.stringify({
err: 0,
msg: '登陆成功'
}))
}
} else if (path == '/reg') {
res.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
});
let { username, password } = post;
if (user[username]) {
res.end(JSON.stringify({
err: 1,
msg: '用户已经存在'
}))
} else {
user[username] = password;
res.end(JSON.stringify({
err: 0,
msg: '注册成功'
}))
}
} else {
fs.readFile(`www${path}`,(err,data)=> {
if(err){
res.end('404');
}else{
res.end(data);
}
})
}
}
}).listen(8080)
查看全部 -
Node的作用和应用 1. 2. 3.查看全部
-
process
process.env:返回计算机的环境变量
Process.argv:获取各个参数,返回数组
查看全部 -
全局模块:
何时何地都能访问,不需要引入
process 全局变量
process.env 能返回项目运行所在环境的一些信息。
process.argv 参数数组 (能轻松愉快的接收通过命令执行node程序时候所传入的参数)
查看全部 -
node的优势
1、便于前端开发入门
2、性能高
3、利于前端代码整合
查看全部 -
POST请求
(1)数据放在body中进行传输(2)容量大:<2G(3)多段数据
思路:引入querystring模块,创建数组获取buffer多段数据并用concat拼接,querystring.parse(data)获取json
let http = require('http')
let querystring = require('querystring') //引入querystring模块
http.createServer((req, res) => {
let result = []
//Node.js中定义了Buffer类,专门用来存放二进制数据的缓存区
req.on('data', buffer => {
result.push(buffer)
})
req.on('end', () => {
//console.log(result);
let data = Buffer.concat(result).toString();
console.log(querystring.parse(data))
})
}).listen(8080)
查看全部 -
自定义模块
一、require
1.如果有路径就去路径里面找
const mod1=require('./mod')
2.没有的话就去node_modules那里面找
const mod1=require('mod')
3.再去node的安装目录里面找
二、exports和module
1.值
导出:exports.a=1;exports.b=2;let c=3;
使用:mod1.a mod1.b mod1.c
2.对象
导出:module.exports={a:1,b:2}
使用:mod1.a mod1.b mod1.c
3.函数
导出:module.exports=function(){}
使用:mod1()
4.类
导出:module.exports=class{
constructor(name){this.name=name}
show(){console.log(this.name)}
}
使用:let p=new mod1('myname');p.show()
查看全部 -
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>我是后台</h1>
</body>
</html>
查看全部 -
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./jquery.min.js"></script>
</head>
<body>
用户名:<input type="text" id="username"><br>
密码:<input type="text" id="password"><br>
<button id="login">登录</button>
<button id="reg">注册</button>
<script>
$('#login').click(function(){
$.ajax({
url:"/login",
data:{
username:$("#username").val(),
password:$("#password").val()
},
dataType:"json",
success(res){
if(res.err){
alert(res.msg)
}else{
alert("登录成功");
location.href = "admin.html"
}
}
})
})
$('#reg').click(function(){
$.ajax({
url:"/reg",
method:"post",
data:{
username:$("#username").val(),
password:$("#password").val()
},
dataType:"json",
success(res){
if(res.err){
alert(res.msg)
}else{
alert("注册成功")
}
}
})
})
</script>
</body>
</html>
查看全部 -
接口设计
什么是接口(API):不同功能层之间的通信规则称为接口
参数
返回值
查看全部 -
http模块
let http = require('http')//http 模块引入
let fs = require(‘fs’) //读写模块引入
http.createServer(req,res)=>{//创建http服务
console.log(req.url); //监听请求的路径
fs.readFile(`./${req.url}`,(err,data)=>{ //读取文件(路径,回调)
if(err){
res.writeHeader(404)
res.end('404 not found')
}else{
res.end(data)
}
})
}).listen(8888)
查看全部 -
POST 总结
查看全部 -
GET 总结
查看全部 -
npm init //初始化 npm install xxx //安装 npm i xxx //简写 安装 npm uninstall xxx //删除 npm un xxx //简写 删除 cnpm //国内的npm npm update xxx //更新
查看全部
举报