NodeJS&ES6第一天
Docker知识回顾
Docker
容器化技术
遇到问题:
不同环境中的软件不一致的问题,导致相同的代码在不同的环境执行的效果不一致。
解决方案:
虚拟化技术(VMWare WorkStation)
虚拟机中挂载系统,系统中把需要的软件都安装好,可以将镜像拷贝给别人。
遇到问题:
(1)耗内存[挂载的系统] (2)启动速度慢[每次都要重新将系统启动起来]
Docker就是解决上述问题
Docker的概念
组件:
镜像 软件安装包
容器 安装好的软件
Docker服务端 Mysql的服务[后台进程]
Docker的客户端 输入相关的操作命令
Docker的远程仓库 Maven的远程仓库
Docker的宿主机 Docker服务端运行所在的服务器
Docker的相关命令
启动Docker服务
systemctl start|stop|status|restart docker
Docker的镜像
docker images
docker search imagesName
docker pull imagesName[:version]
docker rmi imagesName/imagesID
docker rmi `docker images -q`
Docker的容器
docker ps 当前运行的容器
docker ps -a 查询所有的容器
docker ps -l 查询最后一次运行的容器名
docker rm containerName/containerId
docker rm `docker ps -a -q`
docker inspect containerName
根据镜像创建容器
守护式
docker run -id --name=containerName -p 宿主机Port:容器Port -v 宿主机目录:容器目录 imagesName[:version]
交互式
docker run -it --name=containerName -p 宿主机Port:容器Port -v 宿主机目录:容器目录 imagesName[:version] /bin/bash
守护式--->交互式
前提是,容器必须要启动的状态才能进入
docker start|stop|restart containerName
docker exec -it containerName /bin/bash
交互式--->守护式
exit
Docker安装具体的容器
Mysql Tomcat Redis Nginx
docker run -id --name=mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 imagesName[:version]
Docker-compose的使用
匹配操作容器列表。 docker-compose.yml配置相关的内容。
Docker的备份和迁移
container--->images
docker commit imagesName
images--->tar包
docker save -o imagesName xxxx.tar
tar包--->images
docker load -i xxxx.tar
images--->container
守护式/交互式
DockerFile的使用
容器centos上安装JDK1.8
宿主机---->centos容器---->JDK1.8
(1)JDK安装包
(2)JDK安装包上传到宿主机
(3)将宿主机上的安装包拷贝到容器中
docker cp .....
(4)容器中解压
(5)容器中配置环境变量
(6)将容器转换成镜像
docker commit ...
目标:File文件把要操作的步骤记录下来,运行一个这个文件就自动把镜像创建好。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Wm3zgYs-1603890380338)(assets/1572141507862.png)]
NodeJS和ECMASCRIPT6
NodeJS的概述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8yIsEZTh-1603890380343)(assets/1572143774858.png)]
NodeJS可以解析javascript
exports:导出
require:到入
NodeJS的web服务端开发
//引入内置http模块
var https = require("http");
//http.createServer().listene(8888);
https.createServer(function(request,response){
//业务操作
response.writeHead(200,{"Content-Type":"application/json;charset=utf-8"})
response.end("{'id':1,'name':'张三'}");
}).listen(9999);
console.log("服务运行在http://localhost:9999");
如何接收页面传递过来的参数?
//引入内置http模块
var https = require("http");
var url = require("url");
//http.createServer().listene(8888);
https.createServer(function(request,response){
//业务操作
response.writeHead(200,{"Content-Type":"application/json;charset=utf-8"});
// console.log(request.url);
// console.log(url.parse(request.url,true));
var params = url.parse(request.url,true).query;
for(var key in params){
console.log(key);
console.log(params[key]);
}
response.end("{'id':1,'name':'张三'}");
}).listen(9999);
console.log("服务运行在http://localhost:9999");
npm init:将自己创建的项目,纳入Node的管理–
package.json —>类似于maven的pom.xml,其中记录了当前项目运行所依赖的前端插件
node_modules -->存放的就是当前项目运行所依赖的前端插件
node_modules目录中存放的内容过大,不利于项目的迁移,所以可以只拷贝node_modules之外的所有文件,然后拷贝完成后,在对应的目录中执行 npm install,就会根据package.json的依赖自动联网下载所需要的前端插件,下载完成以后,才能去运行。、
npm / cnpm / nrm
全局安装 -g
局部安装
Webpack
问题:
html用别人写好的一些内容,需要到入对应js/css文件
有没有一个办法可以将所有的js/css文件都统一变成一个js文件,好处1.导入只需要到入一次 2.安全
webpack.config.js
var path = require("path");
module.exports = {
//入口文件
entry: "./src/main.js",
output: {
//路径
path: path.resolve(__dirname, "./dist"),
filename: "bundle.js"
}
}
打包CSS
npm/cnpm install style-loader css-loader --save -dev
webpack.config.js
var path = require("path");
module.exports = {
//入口文件
entry: "./src/main.js",
output: {
//路径
path: path.resolve(__dirname, "./dist"),
filename: "bundle.js"
},
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
}
]
}
}
webpack可以将js/css/images…打包成一个文件。
【单页面应用】:整个项目中只有有一个页面出现。好处:不进行页面跳转,用户的体验到很提升很多
(Ajax+JSON)
ES6(ECMAScript6) 认识新语法
声明一个变量
var : 全局变量
let : 局部变量
const : 常量
数组
<script type="text/javascript">
var arr = [1,2,3];
const [x,y,z] = arr;
alert(x);
alert(y);
alert(z);
</script>
对象
<script type="text/javascript">
var arr = {"id":1,"name":"张三","hoby":["篮球","足球","羽毛球"]};
const {id,name,hoby} = arr;
alert(id);
alert(name);
alert(hoby);
</script>
获取对象中指定的值
<script type="text/javascript">
var arr = {"id":1,"name":"张三","hoby":["篮球","足球","羽毛球"]};
const {hoby,...obj} = arr;
alert(hoby);
alert(JSON.stringify(obj));
</script>
箭头函数
=>
数组中的map函数
<script type="text/javascript">
var arry = ["1","2","3","4","5"];
//注意: 如果箭头函数=>为加大括号代表返回该值,如果加了大括号,需要显示的return结果
var arrys = arry.map((s)=>{
//业务操作完成后,将结果返回
return parseInt(s)+5;
});
for(var i = 0 ; i < arry.length; i++){
//业务操作
arry[i] = parseInt(arry[i])+5;
}
console.log(arrys);
console.log(arry);
</script>
对象的扩展方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7nft4I4l-1603890380346)(assets/1572165707527.png)]
数组的扩展方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIXjPxQL-1603890380349)(assets/1572166029130.png)]
babel
将高版本的ES6的语法翻译成ES5能识别的语法。
import[ES6] ,require[ES5] export
默认导出:
export default{
method(){
},
method2(){
},
method3(){
}
}
import xxxx from “./export.js”
NodeJS是干什么的?
npm/cnpm/nrm作用是什么?
webpack的作用?
ES6的语法