node学习前的准备-node.js初级

Posted henu_GM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node学习前的准备-node.js初级相关的知识,希望对你有一定的参考价值。

Nvm的安装:

        对于node来说,他有太多的版本了,而在各个项目的开发中,各种node版本都可能应用,所以要运行这些不同版本的项目,能够快速切换本机node的版本是很重要的,Nvm的作用就是完美的管理我们本地的node版本,达到快速切换的效果

        详细安装过程搜其他相关博客。

ES6语法:

首先要会用 let 来代替var

var的缺点:

1、var声明的变量有预解析,容易造成逻辑混乱,可以先在前面使用,再在后面声明。

2、var 可以重复定义同一个变量,造成逻辑错误,第二吃重新定义变量应该是修改,而不是定义

3、var 用在for循环条件中,会造成for循环的污染问题

4、var 声明的变量没有块级作用域

let的优点:

1、let声明的变量没有预解析,不会有变量提升

2、let不可以重复定义同一个变量

3、let在for循环中不会污染

4、let声明的变量有块级作用域

        其次,要学会用const定义常量,要知道,用const来定义常量,修改时就会报错,而如果是用const来定义了一个对象,由于对象是引用式变量,const固定不可修改的只是这个变量指向的地址,而这个对象里面的属性是可以改变的

解构语法

        1、对象解构:

let obj = {
    name: "nodejs",
    age:11,
    email:"1841113974@qq.com"
};

// 取出所有属性并赋值:
// let name  = obj.name;
// let age  = obj.age;
// let email  = obj.email;

// 现在只需要(等效于上面的写法):
// let {name, email, age} = obj;  //{ }中的变量名和obj的属性名一致   完全解构

// 部分解构
// let {name} = obj;     // 部分解构

//解构之后重命名   
let {name:itsName} = obj;     解构之后重命名为itsName

        2、数组解构:

let arr1 = [10, 20, 30];

let [a, b, c] = arr1;

console.log(a);  //10
console.log(b);  //20
console.log(c);  //30

// 部分解构
let [d] = arr1;
console.log(d);  //10

let [ , ,f] = arr1;
console.log(f);  //30


// 复合解构
let arr2 = [1, 2, [10, 20, 30]];
let [ j, k, [x, y, z]] = arr2;
console.log(j);  //1
console.log(k);  //2
console.log(x);  //10
console.log(y);  //20
console.log(z);  //30

        3、字符串解构:

let string1 = "xyz";

let [a,b,c] = string1;
console.log(a);  //x
console.log(b);  //y
console.log(c);  //z


string1[1] = "Y";
console.log(string1);  // xyz    无法修改
console.log(string1[1]);  // y

模板字符串:

var userInfo = {
    id: 1,
    name: 'andy',
    email: 'gogery@163.com'
}

// 需求:希望把对象拼接为字符串: the userId is xxx, my name is xxx, my email is xxx;

// es6 提供一个语法表示一个字符串,使用的标识符是 反引号;
// 以前定义字符串使用的: '' ""
// 1. 允许换行 2. 允许在模板字符串里面直接使用变量
var tmpl = `the userId is ${userInfo.id}, 

my name is ${userInfo.name},

string is ${infos}
 
 my email is ${userInfo.email}`;
// `` 反引号 数字键 1旁边的键,需要是 shift  + `
console.log(tmpl);

函数形参的默认值:

// ES6 做法,代码简洁易阅读
function func(x = 1){ // 注意当 x 为 undefined 时 x 赋值为 1
    console.log(x);
}
func();

function fun(name = 'nodejs', age = 12){
    console.log(name, age);
}
fun();   // 'nodejs', 12
fun("xiaoming", 15);    //"xiaoming", 15

函数参数的结构赋值:

function func({name, age}){       //{name, age} = obj     解构
    console.log(name, age);
}

let obj = {
    name:"nodejs",
    age:"11",
    email:"nodejs@163.com",
};
func(obj);     // 输出结果: nodejs 11


// 注意:
// func(); //相当于传了一个null   {name, age}=null 就会报错
// func({});  //不会报错,输出:undefined undefined

解构赋值,指定参数的默认值:

function func2({name="nodejs", age=11} = {}){    //指定默认值
    console.log(name, age);
}
func2();  //nodejs 11

rest参数/剩余参数:

rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

且rest参数之后不能再有其他参数

function func( a, b ,...rest){  // 把剩余的参数都交给rest
    console.log(rest);
}

func(10, 20, 30, 50, 60);



function func2(...rest){   //rest 接收所有参数作为一个数组
    console.log(rest);
}
func2(60, 70, 80, 90);

扩展运算符:

// 1、基本理解
let arr1 = [10, 20, 30];

function func(a, b, c){
    console.log(a,b,c)
}

func(...arr1);  //等效于:func(10,20,30);     输出结果10 20 30

// 2、合并数组
let arr2 = [40, 50, 60];
let newArr = [...arr1,...arr2];  // 等效于 [ 10, 20, 30, 40, 50, 60 ]
console.log(newArr);    //[ 10, 20, 30, 40, 50, 60 ]

// 3、合并对象
let obj1 = {
    name:"nodejs",
    age:"11",
};
let obj2 = {
    email:"nodejs@163.com",
};
let newObj = {...obj1,...obj2}; // 等效于{ name: 'nodejs', age: '11', email: 'nodejs@163.com' }
console.log(newObj);    //{ name: 'nodejs', age: '11', email: 'nodejs@163.com' }

// 4、es6中另一个合并对象的方法
let newObj2 = Object.assign({},obj1,obj2);  // 把第二个及第二个以上的参数都合并到第1个上面去。
console.log(newObj2);   //{ name: 'nodejs', age: '11', email: 'nodejs@163.com' }

箭头函数:

// function func(){
//     console.log("hello");
// }

// 以上代码使用箭头函数书写为:
var func = () => {
    console.log("hello");
};

func();

到此,学习node之前的准备工作已经完成,主要都是一些es6的语法。

以上是关于node学习前的准备-node.js初级的主要内容,如果未能解决你的问题,请参考以下文章

教程|使用 Node.Js 开发服务器

学习React前的准备工作

node.js 常用模块(初级)

PHP 或 Rails 前的 Node.JS

Node.js学习准备篇

Node.js 入门教程 :准备