目录
前言
学习NodeJS的意义
-
1.
了解客户端浏览器与服务端后台的交互过程
,可以在以后的前端开发工作中与后台人员之间的沟通更加容易理解-
虽然以后工作中不一定用的上nodejs,但是通过对服务端开发的了解,能够让你在日常工作中与公司后台人员之间的沟通变得更加轻松
-
-
2.了解服务端开发的一些特性,可以在以后的工作中,当我们前端与后台交互出现bug问题时,能够更快速的定位bug是出现在自己的客户端还是别人的服务端。
-
作为一名前端人员,如果对后台不了解,那么以后在与后台交互的开发中有可能明明是后台的问题,但是由于自身对后台的不了解再加上前期的经验不足,导致解决问题的时间增加(加班)。
-
-
3.了解服务端开发的过程,可以为以后的职业发展打下一定的基础(全栈工程师)
01-nodejs入门
1.2-什么是nodejs
-
1.Node.js官网地址:Node.js
-
1.Node 是一个构建于 Chrome V8引擎之上的一个Javascript 运行环境
-
Node
是
一个运行环境
,作用是让js拥有开发服务端的功能
-
-
2.Node使用事件驱动、非阻塞IO模型(异步读写)使得它非常的轻量级和高效
-
Node中绝大多数API都是异步(类似于ajax),目的是提高性能
-
-
3.Node中的
NPM
是世界上最大的开源库生态系统(类似于github)-
NMP官网:npm
-
1.3-Node.js环境安装
1.3.1-如何确认当前电脑是否已经安装了Node环境
-
打开终端,输入
node -v
, -
如果能看到版本号则说明当前电脑已经安装Node环境,
-
如果提示
Node不是内部或外部命令
,则表示未安装-
一旦安装了node,则会自动一并安装
npm
-
1.3.2-npm介绍与cnpm安装
-
1.npm
-
全称node package manager
-
官方推出的包管理工具
-
不需要额外安装,安装node之后自带
-
因为服务器不在国内,所以有时候安装特别慢,甚至无法成功
-
-
2.npm指向淘宝镜像
-
配置npm指向淘宝镜像
npm config set registry https://registry.npm.taobao.org/
-
不想用淘宝的,再设置回原来的就可以了: npm config set registry https://registry.npmjs.org
-
-
3.cnpm
-
全称china node package manager
-
非官方推出的包管理工具
-
需要额外安装:
npm install -g cnpm --registry=https://registry.npm.taobao.org
-
国内安装特别快,不需要翻墙(如果特殊情况无法安装,也可使用npm)
-
安装成功之后,通过
cnpm -v
查看
-
1.3-如何运行Node.js程序
-
1.REPL:交互解释器
-
Node运行环境的另一种叫法,作用是解析执行js代码
-
用法
-
第一种方式:直接双击打开 node.exe,然后写js代码
-
第二种方式:
-
先在终端先执行node,进入node环境
-
然后写js代码
-
-
-
-
2.使用终端命令
node [js文件路径]
开始运行js文件-
(1)其实当我们在终端执行Node命令时,并不是我们终端去编译解释js代码,而是电脑会自动打开Node安装包中Node.exe应用程序来打开js文件
-
Node.exe是一个类似于终端的应用程序,没有界面(CLI程序:command-line interface,命令行界面)
-
Node.exe工作环境称之为REPL环境,也就是交互式解释器
-
-
(2)REPL才是真正解释执行我们js代码的解释器
-
3.nodemon
-
node开发之友,当你的js文件发生变化的时候,nodemon会自动帮你启动node程序
-
-
安装:
npm install -g nodemon
-
使用:
nodemon [js文件名]
-
1.4-服务端js与客户端js区别
-
1.客户端JS由三部分组成
-
ECMAScript:确定js的语法规范
-
DOM:js操作网页内容
-
BOM:js操作浏览器窗口
-
-
2.服务端JS只有ECMAScript
-
因为服务端是没有界面的
-
在nodejs中使用dom与bom的api程序会报错
-
-
02-ES6语法新特性介绍
1.1-变量声明let与const
/*
1.学习目标 : 掌握ES6新增两个关键字 let 与 const
* let 与 const的作用是声明变量,类似于ES5的var关键字
2.学习路线(对比法学习)
(1) 复习ES5的var关键字两个特点
(2) 介绍ES6的let与const关键字的两个特点
(3) 介绍let与const的区别 与 注意点
*/
/* 1.ES5语法变量特点 */
// 1.1 变量会提升
console.log(num);//undefined
var num = 10;
// 1.2 没有块级作用域
for (var i = 1; i < 5; i++) {
console.log('循环内' + i);
};
console.log('循环外' + i);//5
/* 2.ES6新增两种变量声明方式(let与const),类似于var
(1).不会提升
(2).有块级作用域
*/
// (1)如果打印undefined,说明提升了 (2)如果报错,说明没有提升
// console.log(a);//报错
// let a = 10;
// (2)如果打印5,说明没有块级作用域 (2)如果报错,说明有块级作用域
for(let j = 1;j<5;j++){
console.log(j);
};
// console.log(j);
/* 3.let与const区别
* 注意点:ES6中变量不能重复声明,否则会报错
*/
//let声明:变量,允许修改
let a = 10;
a = 20;
// let a = 30;//程序报错,不允许重复声明
console.log(a);
//const声明:常量,只可以声明的时候赋值一次,之后无法修改
const b = 100;
// b = 200;//程序报错
console.log(b);
1.2-解构赋值语法
-
解构赋值语法 : 其实就是变量赋值语法的简写形式
1.2.1-对象的解构赋值
/*
1.学习目标:掌握对象的解构赋值语法
* 解构赋值本质 就是 变量赋值语法的简写形式
2.学习路径 : 对比法学习(ES5与ES6对比)
(1)取出 对象的属性值 赋值给 变量
(2)取出 变量的值 赋值给 对象的属性
(3)设置 解构赋值语法 的默认值
*/
//解构赋值语法 : 其实就是变量赋值语法的简写形式
//1:取出 对象的属性 赋值 给变量
let obj = {
name:'张三',
age:18,
sex:'男'
};
/* ES5 */
// let name = obj.name;
// let age = obj.age;
// let sex = obj.sex;
// console.log(name,age,sex);
/* ES6 */
/* a.这行代码本质:声明三个变量 name,age,sex。取出右边obj对象对应的属性名赋值给左边的变量*/
// let {name,age,sex} = obj;
// console.log(name,age,sex);
/* b.由于obj对象没有score属性,所以变量score的值为undefined。 */
// let {name,score} = obj;
// console.log(name,score);
/* c. sex:gender 的含义 : let gender = obj.sex */
// let {name,sex:gender} = obj;
// console.log(name,gender);
//2:取出变量的值 赋值给对象的属性
// let name = '李四';