首页 > 编程语言 >JavaScript(七)ES6

JavaScript(七)ES6

时间:2023-07-05 19:45:19浏览次数:48  
标签:npm ES6 异步 babel JavaScript 转码 Promise ...

Node环境

安装nvmnpmnrm

  • nvm:管理多个版本的node环境,使用nvm安装nodejs

  • npm:npm是node的包管理工具,使用nvm安装node后,就可以使用npm命令

  • nrm:管理npm的镜像源,使用npm命令安装

Babel转码器

可以将es6代码转成es5代码。从而可以在老版本浏览器执行

  • 在项目根目录下安装

    npm install --save-dev @babel/core

  • 配置文件:babel配置文件是.babelrc,用来设置转码规则和插件,存放在根目录下,使用babel第一步就是配置这个文件,文件内容

    {
    "presets":[],
    "plugins":[]
    }
  • 安装转码规则:presets字段设定转码规则,安装官方提供的规则集

    npm install --save-dev @babel/preset-env

  • 设置规则,设置.babelrc文件内容

    {
    "presets":[
    "@babel/env"
    ],
    "plugins":[]
    }

使用babel命令行转码,先安装命令行工具用于命令行转码

npm install --save-dev @babel/cli

基本用法

# 转码结果输出到控制台
npx babel example.js

# 整个目录转码: --out-dir 或 -d 输出到指定目录
npx babel src --out-dir lib

数组扩展

扩展运算符:是三个点(...),将一个数组转为用逗号分隔的参数序列(遍历数组),展开数组。

console.log(...array)

新增方法:

  • Array.from() 将类数组对象转为数组,类数组对象有:arguments、html元素集合 等

  • Array.from() 将一组值转为数组

对象的扩展

  • 属性简洁表示:对象的key,value相同时,可以省略只写一个

user={
name,
getName(){}
}
  • 属性名表达式:对象属性可以是表达式,用中括号[]括起来

let name="tname";
user={
[name]:"tom",
[1+2]:"num"
}
  • 对象的扩展运算符:用三个点(...)将对象展开

Promise对象

Promise是异步编程的一种解决方案,Promise是一个容器,用new Promise()创建实例对象,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。基本用法如下

# 1、先定义Promise对象
# resolve,reject为js定义好的函数关键字,不能变更
const promise=new Promise(function(resolve,reject)){
     // do something
   if(/*异步操作成功*/){
resolve(value); //value为成功的回调函数
}else{
     reject(error); //value为失败的回调函数
  }                  
}

# 2、使用then()方法指定resolve和reject的回调函数
promise.then(
function(value){...},//success
 function(error){...} //failure            
);

Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了。

 

Promise还可以做更多的事情,比如,有若干个异步任务,需要先做任务1,如果成功后再做任务2,任何任务失败则不再继续并执行错误处理函数。

要串行执行这样的异步任务,不用Promise需要写一层一层的嵌套代码。有了Promise,我们只需要简单地写:

job1.then(job2).then(job3).catch(handleError);

其中,job1job2job3都是Promise对象。

Promise还可以并行执行异步任务,用Promise.all()实现如下

Promise.all([p1, p2]).then(function (results) {
  console.log(results); // 获得一个Array: ['P1', 'P2']
});

Async函数

async+await实现异步操作,与Promise对象效果相同

async异步关键字,await 等待异步操作完成再执行代码(异步变同步)

async function fn(){
await ...[do something1] //等待操作1完成,在执行操作2
...[do something2]
}

Module

ES6通过export显式指定输出的代码(变量、函数、类、对象等),通过import导入

export default 导出的代码块,在import时不需要指定该代码块的名称;一个文件只能存在一个export default

// 导出
export var name="tom"; //person.js文件
export default var age=18; // 默认导出,一个文件只能存在一个
//导入
import {name} from "./person.js"
import * as p from "./person.js"
 

标签:npm,ES6,异步,babel,JavaScript,转码,Promise,...
From: https://www.cnblogs.com/yjh1995/p/17529630.html

相关文章

  • JavaScript(六)事件处理
    常见的HTML事件常见HTML事件事件描述onchangeHTML元素已被改变onclick用户点击了HTML元素onmouseover用户把鼠标移动到HTML元素上onmouseout用户把鼠标移开HTML元素onkeydown用户按下键盘按键onload浏览器已经完成页面加载事件处理方式......
  • JavaScript(五)浏览器操作
    浏览器对象windowwindow对象不但充当全局作用域,而且表示浏览器窗口。window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高。navigator:navigator对象表示浏览器的信息,最常用的属......
  • 【12.0】前端基础JavaScript之DOM
    【12.0】前端基础JavaScript之DOM【一】什么是DOM/BOM截至目前为止,我们虽然已经学会了js语法,但是还是没办法跟浏览器进行交互BOM(BrowserObjectModel)浏览器对象模型js代码操作浏览器DOM(DocunmentObjectModel)文档对象模型js代码操作标签【二】Window......
  • JavaScript
    JS变量//varletconstvar:很少使用,全局作用域let:值可以被修改const:值不能被修改,而且需要在声明时初始化数值console.log('helloworld') //这是我的第一个js代码;letbbb//声明bbb=30//赋值bbb=31//修改console.log(bbb)......
  • 单线程JavaScript为何如此高效
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址什么是js执行机制JavaScript的执行机制指的是JavaScript代码在运行时的工作方式和顺序。它涉及以下几个关键概念:单线程:JavaScript是一门单线程的编程语言,意味着它只有一个主线程用于执行代码。这意味着JavaScrip......
  • es6 iterator
    //需求使用forof便利对象并返回对象数组的值letbanji={name:"火箭一班",stus:["limuzi","nini","zhaoliying","xiena"],[Symbol.iterator](){let_this=this......
  • JavaScript发展历史(JS)
    JavaScript发展历史1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采用现有的语言,许他们直接嵌入网页。另一个是发明一......
  • es6 中Symbol
    letgame={up:function(){console.log("upmethods!")},down:function(){console.log("downmethods!")}}//es6symbol用法可以给已经封装好的方法上加上方法letmethods={up:Symbol(),down:Symbol()}......
  • 复习ES(6-11)语法之ES6中篇
    目录类ES5中的类与继承ES6中的类与继承新的原始数据类型新的数据结构SetMap字符串的扩展正则的扩展数值的扩展ProxyReflect类类是对象的模版,定义了同一组对象共有的属性和方法ES5中的类与继承定义类ES5其实并没有类的概念,是通过function构造函数来模拟一个类。在构造函数......
  • 常用的前端JavaScript方法封装
     1、输入一个值,返回其数据类型**functiontype(para){returnObject.prototype.toString.call(para)} 2、数组去重functionunique1(arr){return[...newSet(arr)]}functionunique2(arr){varobj={};returnarr.filter(ele=>{if......