babel使用入门以及使用webpack+babel来"编译"你的JS代码
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5,从而在现有的环境中执行。
这是一个开端,以后遇到问题,也会持续记录。
一、babel配置
官网有更详细的配置教程:https://www.babeljs.cn/docs/setup/#installation
我选择的是尝试CLI
1、新建一个文件夹做为项目文件夹,打开cmd,进入项目文件夹下,执行npm init(相关信息可以一路按回车,设置为默认信息),完成后会生成一个package.json文件
2、配置.babelrc文件
(1)使用命令行创建此文件,进入项目文件夹下,输入type nul>.babelrc;
(2)编写.babelrc文件内容
该文件用来配置转码规则和插件,基本格式如下:
{
"presets": [], //设置转码规则
"plugins": [] //设置插件
}
官方提供以下的规则集,可以根据需要安装:
# ES2015转码规则
npm install --save-dev babel-preset-es2015 # react转码规则
npm install --save-dev babel-preset-react # ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
npm install --save-dev babel-preset-stage-0
npm install --save-dev babel-preset-stage-1
npm install --save-dev babel-preset-stage-2
npm install --save-dev babel-preset-stage-3
然后将这些规则加入.babelrc
{
"presets": [
"es2015",
"stage-2"
],
"plugins": []
}
3、安装babel-cli
官方推荐根据单个项目进行本地安装会更好一些。
这样做有两个主要的原因:
- 同一机器上的不同的项目可以依赖不同版本的 Babel, 这允许你一次更新一个项目。
- 这意味着在你的工作环境中没有隐含的依赖项。它将使你的项目更方便移植、更易于安装。
我们可以通过以下命令本地安装 Babel CLI:
在项目目录下输入 npm install --save-dev babel-cli
安装完成之后,改写package.json文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "babel src -d lib"
//编译整个 src 目录并将其输出到 lib 目录。这里的src指的是需要转换的目录,lib指的是输出的内容的存放目录
},
在根目录下必须有src文件夹,里面存放index.js文件,存放的是ES6代码,必须有lib文件夹,这是输出的文件夹。
转码的时候就执行npm run build,即src里面的index.js就输出到了lib中,这是转码后的文件。
二、babel-polyfill
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign
)都不会转码。
举例来说,ES6在Array
对象上新增了Array.from
方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill
,为当前环境提供一个垫片。
cmd进入当前文件夹执行 npm install --save babel-polyfill
然后在index.js脚本的头部加上
import 'babel-polyfill';
// 或者
require('babel-polyfill');
三、使用webpack+babel来"编译"你的JS代码
webpack官方文档 https://webpack.docschina.org/guides/
1、在当前项目安装webpack,webpack-cli,babel-core,babel-loader
npm install --save-dev webpack npm install --save-dev webpack-cli npm install --save-dev babel-core babel-loader
2、使用配置文件
在项目的根目录创建webpack.config.js文件
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'lib'),
filename: 'index.bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
use:[
'babel-loader'
]
}
]
}
}
3、使用快捷方式运行webpack
修改package.json文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
之后在命令行运行 npm run build 运行成功之后,即可在lib文件夹中找到index.bundle.js文件,此文件即为转换之后的文件。
更多webpack插件,可以看官网,这个项目的初步的配置就完成了。
babel使用入门以及使用webpack+babel来"编译"你的JS代码的更多相关文章
- babel从入门到入门
babel从入门到入门 来源 http://www.cnblogs.com/gg1234/p/7168750.html 博客讲解内容如下: 1.babel是什么 2.javascript制作规范 3. ...
- webpack+babel+transform-runtime, IE下提示Promise未定义?
知识要求 babel的基础知识(推荐阮一峰的babel入门教程) 充分理解babel-plugin-transform-runtime与babel-runtime的作用(推荐github项目首页) w ...
- webpack+babel项目在IE下报Promise未定义错误引出的思考
低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...
- Babel插件开发入门指南
文章概览 主要包括:Babel如何进行转码.插件编写的入门基础.实例讲解如何编写插件. 阅读本文前,需要读者对Babel插件如何使用.配置有一定了解,可以参考笔者之前的文章. 本文所有例子可以在 笔者 ...
- 前端工程化-webpack(babel编译ES6)
最新版安装与普通安装 使用babel-loader编译ES6,需要遵循规范,安装babel-presets 规范列表 对应babel-loader,babel-preset安装最新版和普通版: pre ...
- react+webpack+babel环境搭建
[react+webpack+babel环境搭建] 1.react官方文档推荐使用 babel-preset-react.babel-preset-es2015 两个perset. Babel官方文档 ...
- 详解 Webpack+Babel+React 开发环境的搭建
1.认识Webpack 构建应用前我们先来了解一下Webpack, Webpack是一个模块打包工具,能够把各种文件(例如:ReactJS.Babel.Coffeescript.Less/Sass等) ...
- WEBPACK & BABEL 打包项目
本文首发于 BriFuture's Blog. 最近在用 Vue 重写之前的一个项目 Compass,这个项目以前是用 QML + JavaScript 在 Qt 平台上搭建的.这是我本科毕设时做的一 ...
- npm+webpack+babel+react安装
npm+webpack+babel+react安装 1.首先要安装 Node.js, Node.js 自带了软件包管理器 npm 2.在项目文件目录下生成package.json # 进入项目目录$ ...
随机推荐
- Openwrt 远程调试
此文已由作者吴志勐授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文以自己的程序WFD为例: 1,为路由器固件刷上gdbserver 在宿主端,使用make menucon ...
- Day14 作业
1,整理今天的博客,写课上代码,整理流程图. 2,用列表推导式做下列小题 (1) 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2) 求(x,y)其中x是0-5之间的偶数,y是0- ...
- 数组序列化serialize
1,数据在网络中是以字符串形式传输,这样如果传输的是数组,首先将数组内容拼接成字符串进行发送,接收方拿到字符串,没法将其还原为数组.因此在网络传输的时候,为了保证数据类型的不丢失,先序列化,再发送. ...
- 关于finecms v5 会员头像 任意文件上传漏洞分析
看到我私藏的一个洞被别人提交到补天拿奖金,所以我干脆在社区这里分享,给大家学习下 本文原创作者:常威,本文属i春秋原创奖励计划,未经许可禁止转载! 1.定位功能 下载源码在本地搭建起来后,正常登陆了用 ...
- webstorm 调出project
Alt+1就能弹出窗口面板. 视图-工具窗口-Project 删除项目 Click File > Close project From Recent projects, select pr ...
- RabbitMQ交换机规则实例
RabbitMQ Exchange分发消息时根据类型的不同分发策略有区别,目前共四种类型:direct.fanout.topic.headers .headers 匹配 AMQP 消息的 header ...
- VUE 项目刷新路由指向index.html
背景描述: VUE 项目经过 npm run bulid 生成静态文件上传到服务器后,当我们切换路由并刷新页面,nginx 服务器会报 502 或者 404 错误. 原因分析: 我猜测是因为在 VUE ...
- jmeter测试计划配置
用户定义的变量: 测试计划上可以添加用户定义的变量.一般添加一些系统常用的配置.如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量,因为不方便启用和禁用,一般是直接添加用户自定义变量组 ...
- SQL 高效的万能分页存储过程
代码如下: USE [Blog] IF OBJECT_ID('Proc_Paging', 'P') IS NOT NULL --删除同名存储过程 DROP PROC Proc_Paging GO CR ...
- 小A老师的学习法
3.13