大前端
大前端
1、vscode安装
2、Node.js
类比jvm

快速入门
Node 实现请求响应
//导入模块的方式 require
const http = require('http');
//1:创建一个httpserver服务
http.createServer(function(request,response){
//浏览器怎么认识hello server!!
response.writeHead(200,{'Content-type':'text/html'});//告诉浏览器将
//以text/html的方式去解析hello server这段数据
//给浏览器输出内容
response.end("<strong>hello server!!!</strong>");
}).listen(8888);
console.log("你启动的服务是:http://localhost:8888");
//2:监听一端口8888
//3:启动运行服务node httpserver.js
//4:在浏览器访问http://localhost:8888
Nodejs操作mysql数据库
安装mysql依赖
npm install mysql
//1: 导入mysql依赖包, mysql属于第三方的模块就类似于 java.sql一样的道理
var mysql = require("mysql");
// 1: 创建一个mysql的Connection对象
// 2: 配置数据连接的信息
var connection =mysql.createConnection({
host:"127.0.0.1",
port:3306,
user:"root",
password:"123456",
database:"testdb"
});
// 3:开辟连接
connection.connect();
// 4: 执行curd
connection.query("select * from user",function(error,results,fields){
// 如果查询出错,直接抛出
if(error)throw error;
// 查询成功
console.log("results = ",results);
});
// 5: 关闭连接
connection.end();
// 最后一步:运行node db.js 查看效果
新建数据库testdb和表user
3、ES6
3.1 let和const
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//let和const解决
//1:var的变量穿透的问题
//2:常量修改的问题
for (let i = 0; i < 5; i++) {
console.log(i);
}
//这里就造成变量穿透 用let替代var就会报错
console.log(i);
var PI = Math.PI;
PI = 100;
console.log(PI);
</script>
</body>
</html>
在实际开发和生产中,如果是小程序,uniapp或者一些脚手架,可以大胆的使用let和const
但是如果你是web开发,建议大家还是使用var,因为在一些低版本的浏览器还是不支持let和const
3.2 模板字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//字符串会牵扯到动态部分
var person = {
name : "飞哥",
address : "广东学相伴",
link : "https:www.kuangstudy.com"
};
let address = "我是"+person.name+",正在"+person.address+"讲课,讲课的内容会上传到官网:"+person.link+"平台上";
console.log(address);
//ES6的语法模板字符串语法
let address2 = `我是${person.name},正在${person.address}讲课,讲课的内容会上传到官网:${person.link}"平台上`;
console.log(address2);
</script>
</body>
</html>
3.3 函数默认参数和箭头函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//函数默认参数
function sum(a=100,b=100){
return a + b;
}
var result = sum(100,100);
console.log(result);
</script>
</body>
</html>
箭头函数 ★
在未来的开发项目中,比如小程序,uniapp,一些常见的脚手架大量使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//箭头函数
var sum = function(a,b){
return a + b;
}
//改进1
var sum = (a,b)=>{
return a + b;
}
//改进2
var sum = (a,b)=>a + b;
//改进3
var sum = (a,b)=>a + b;
//1.去掉function
//2.在括号后面加箭头
//3.如果逻辑代码仅有return可以直接省去,如果你有逻辑体,就不能省略
//4.如果参数只有一个,可以把括号也省去
var arr = [1,2,3,4,5,6];
var newarr = arr.map(obj=>obj*2);
console.log(newarr);
</script>
</body>
</html>
3.4 对象初始化简写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let info = {
title : "广东学相伴",
link : "https://www.kuangstudy.com",
go : function(){
console.log("我骑着小蓝车来公司上班");
}
};
//ES6 简写
//因为对象是以key:value存在
//1.如果key和value的名字一致,可以只定义一次即可
//2.如果value是一个函数,可以把`:function`全部去掉,只剩下()即可
var title = "广东学相伴";
var link = "https://www.kuangstudy.com";
let info2 = {
title,
link,
go(){
console.log("我骑着小蓝车来公司上班");
}
};
console.log(info2);
console.log(info2.title);
console.log(info2.link);
info2.go();
</script>
</body>
</html>
对象简写案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="">
<p>账号:<input type="text" id="account"></p>
<p>密码:<input type="text" id="password"></p>
<p><input type="button" value="登录" id="loginbtn"></p>
</form>
<script>
//document.getElementById("loginbtn").onclick = function(){}
$("#loginbtn").on("click",function(){
var account = $("#account").val();
var password = $("#password").val();
var params = {account,password};
//执行异步请求
$.ajax({
type:"post",
url:"xxx",
data:params,
success(){
}
})
})
</script>
</body>
</html>
3.5 对象解构
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var title = "广东学相伴";
var link = "https://www.kuangstudy.com";
let info2 = {
title,
link,
go(){
console.log("我骑着小蓝车来公司上班");
}
};
//通过.的方式
console.log(info2);
console.log(info2.title);
console.log(info2.link);
info2.go();
//通过[]的方式
console.log(info2);
console.log(info2["title"]);
console.log(info2["link"]);
info2["go"]();
//ES6对象解构--快速获取属性和方法的形式
var {title,link,go} = info2;
//还原代码
//var title = info2.title;
//var link = info2.link;
console.log(title,link);
go();
</script>
</body>
</html>
3.6 对象传播操作符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//对象传播操作符
var person = {
name : "学相伴",
address : "广东",
link : "https://www.kuangstudy.com",
phone : 1234567,
go(){
console.log("开始上班了");
}
}
//解构出来
var {name,address,...person2} = person;
console.log(name);
console.log(address);
console.log(person2);
</script>
</body>
</html>

实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//java ---后台
//数据格式: var userPage = {pages:10,users:[{},{}],pageNo:1,total:100}
//异步请求
// $.post("/user/search",function(res){
// res = {pages:10,users:[{},{}],pageNo:1,total:100}
var userPage = {pages:10,users:[{},{}],pageNo:1,total:100};
var {users,...userPage2} = userPage;
//})
</script>
</body>
</html>
3.7 数组Map
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//要对arr数组每个元素*2
let arr = [1,2,3,4,5,6,7];
//传统的方式
let newarr = [];
for (let i = 0; i < arr.length; i++) {
newarr.push(arr[i]*2);
}
console.log(newarr);
//map --自带的循环,并且会把处理的值回填对应的位置
var newarr2 = arr.map(ele=>ele * 2);
console.log(newarr2);
//map处理对象的数据
var users = [{age:10,name:"小学"},{age:12,name:"小相"},{age:15,name:"小半"}];
var newusers = users.map(function(ele){
ele.age = ele.age + 1;
ele.check = true;
return ele;
});
console.log(newusers);
</script>
</body>
</html>
3.8 数组Reduce
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var arr = [1,2,3,4,5,6,7,8,9,10];
var result = arr.reduce(function(a,b){
return a + b;
})
console.log("result = ",result);
</script>
</body>
</html>
4、NPM包管理器
类似于java的maven,用来快速构建nodejs工程,安装和依赖第三个模块,比如npm install mysql redis等等
快速构建nodejs工程
-
npm init (-y)
-
得到package.json 这个文件里的内容如下
{ "name": "npmpro", //工程名 "version": "1.0.1", //版本 "description": "我是一个node工程", //描述 "main": "index.js", //入口js "scripts": { //运行脚本 "test": "echo \"Error: no test specified\" && exit 1" }, "author": "\"学相伴\",", // 开发者 "license": "ISC" // 授权协议 }类似于pom.xml
-
快速安装和依赖第三方模块
-
npm install xxxx 或者 npm i xxx模块名
-
安装的模块放到node_modules文件夹中
-
导入模块用require
-
node xxx.js 运行过程,js是可以省去的,终止的 命令行crtl+c
-
模块和package.json有什么关系?
-
"dependencies": { "jquery": "^3.5.1", "mysql": "^2.18.1", "redis": "^3.0.2", "vue": "^2.6.12" } -
通过npm install xxx 会记录在package.json这个文件中,实现复用
-
通过npm install 可以直接把package.json所依赖的模块全部自动下载下来,这样就可以避免重复下载模块
-
-
安装很慢怎么办 (镜像)
npm install -g cnpm --registry=https://registry.npm.taobao.org
-
卸载
npm uninstall vue jquery
5、Babel
安装
cnpm install -g babel -cli
babel --version

浙公网安备 33010602011771号