栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

ES6核心特性(一)

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ES6核心特性(一)

一、前言

ES6 虽提供了许多新特性,但我们实际工作中用到频率较高并不多,根据二八法则,我们应该用百分之八十的精力和时间,好好专研这百分之二十核心特性,将会收到事半功倍的奇效。接下来将会三篇文章着重介绍这些核心特性。

如果你想了解解构赋值,箭头函数以及展开运算符,请猛戳 ES6核心特性(二)

如果你想了解数组常见的遍历方法及其使用场景,请猛戳ES6核心特性(三)

二、开发环境配置

这部分着重介绍:babel 编译ES6语法,如何用webpack和rollup实现模块化。

1.babel 为啥需要babel?

ES6 提供了许多新特性,但并不是所有的浏览器都能够完美支持。下图是各个浏览器对ES6兼容性一览表(以export为例)

由上图可知,有些浏览器对于ES6并不是很友好,针对 ES6 的兼容性问题,很多团队为此开发出了多种语法解析转换工具(比如babel,jsx,traceur 等),可以把我们写的 ES6 语法转换成 ES5,相当于在 ES6 和浏览器之间做了一个翻译官。其中Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

如何配置babel?
·首先要先安装node.js,运行npm init,然后会生成package.json文件
·npm install --save-dev babel-core babel-preset-es2015 babel-preset-latest
·创建并配置.babelrc文件//存放在项目的根目录下,与node_modules同级
·npm install -g babel-cli
·babel-version

Babel的配置文件是.babelrc,存放在项目的根目录下。该文件用来设置转码规则和插件,具体内容如下:

//.babelrc文件
{
    "presets": ["es2015", "latest"],
    "plugins": []
}
验证配置是否成功
·创建./src/index.js
·内容:[1,2,3].map(item=>item+1);
·运行babel./src/index.js

运行后得到以下部分,说明已经成功配置了babel

"use strict";
[1, 2, 3].map(function (item) {
  return item + 1;
});
2.webpack 为啥要使用WebPack?

现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的Javascript代码和一大堆依赖包,模快化工具就应运而生了,其中webpack 功能强大深受人们喜爱。
Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的Javascript文件。

如何配置webpack?
·npm install webpack babel-loader --save-dev
·创建并配置 webpack.config.js//webpack.config.js文件与package.json同级
·配置 package.json中的scripts
·运行 npm start
//配置 webpack.config.js  针对.js结尾的文件除了node_modules都用babel解析
module.exports = {
    entry: './src/index.js',
    output: {
 path: __dirname,
 filename: './build/bundle.js'
    },
    module: {
 rules: [{
     test: /.js?$/,
     exclude: /(node_modules)/,
     loader: 'babel-loader'
 }]
    }
}
//配置 package.json中的scripts
"scripts": {
    "start": "webpack",
    "test": "echo "Error: no test specified" && exit 1"
  }
3.rollup

Rollup 是一个 Javascript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序。通过它可以让你的 bundle 最小化,有效减少文件请求大小,与webpack不同的是,rollup功能单一,但没有冗余代码。既然这两者各有千秋,那我们应该如何选择?对于打包一个项目的整个应用的话,webpack更适合,对于类库的打包,使用 Rollup效率更高。

如何配置rollup?
·npm init
·npm i rollup rollup-plugin-node-resolve rollup-plugin-babel babel-plugin-external-helpers babel-core babel-preset-latest  --save-dev
·配置.babelrc//与src同级
·配置rollup.config.js//与src同级
·修改package.json的scripts
·运行npm start
//.babelrc文件中
{
    "presets": [
 ["latest", {
     "es2015": {
  "modules": false
     }
 }]
    ],
    "plugins": ["external-helpers", "babel-plugin-transform-regenerator"]
}
//配置rollup.config.js
import babel from 'rollup-plugin-babel'
import resolve from 'rollup-plugin-node-resolve'
export default {
    entry: 'src/index.js',
    format: 'umd',
    plugins: [
 resolve(),
 babel({
     exclude: 'node_modules
var basicNum = 0;
var add = function (a, b) {
    return a + b;
};
export { basicNum, add };

import { basicNum, add } from './math';
function test(ele) {
    ele.textContent = add(99 + basicNum);
}

如上例所示,使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。为了给用户提供方便,让他们不用阅读文档就能加载模块,就要用到export default命令,为模块指定默认输出。

// export-default.js
export default function () {
  console.log('foo');
}

上面代码是一个模块文件export-default.js,它的默认输出是一个函数。
其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。

// import-default.js
import customName from './export-default';
customName(); // 'foo'

上面代码的import命令,可以用任意名称指向export-default.js输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时import命令后面,不使用大括号。

未完待续
To be continued...

七、参考文章 ES6笔记(一):ES6所改良的javascript“缺陷” 在 ES6 中 改良的 5 个 Javascript “缺陷” ECMAscript 6 入门之模块化
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/241554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号