重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Babel 是一个工具链,主要用于将采用 ECMAScript 2015+ 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情:
10年积累的成都网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有和县免费网站建设让你可以放心的选择与我们合作。
// Babel 输入: ES2015 箭头函数
[1, 2, 3].map(n => n + 1);
// Babel 输出: ES5 语法实现的同等功能
[1, 2, 3].map(function(n) {
return n + 1;
});
例如:Class and Property Decorators (Stage 1)
@frozen class Foo {
@configurable(false) @enumerable(true) method() {}
}
function frozen(constructor, parent, elements) {
return {
constructor,
elements,
finisher(constructor) {
Object.freeze(constructor.prototype)
Object.freeze(constructor)
}
}
}
function configurable(configurable) {
return decorator;
function decorator(previousDescriptor) {
return {
...previousDescriptor,
descriptor: {
...previousDescriptor.descriptor,
configurable
}
}
}
}
function enumerable(enumerable) {
return decorator;
function decorator(previousDescriptor) {
return {
...previousDescriptor,
descriptor: {
...previousDescriptor.descriptor,
enumerable
}
}
}
}
babel.config.json
(官方推荐格式)
{
"presets": [],
"plugins": []
}
.babelrc.json
{
"presets": [],
"plugins": []
}
babel.config.js
module.exports = {
"presets": [],
"plugins": []
}
@babel/preset-env
pnpm add @babel/preset-env -D
targets
: 编译目标版本,默认为{}
modules
: 是否启用 ES 模块语法到其他模块类型的转换,默认是auto
include
: 需要编译的目录,默认是[]
,例如['plugin/keys.js',/node_modules\/myPlugins/]
exclude
: 编译排除项目,默认是[]
useBuiltIns
: 按需加载 默认是entry
corejs
: 需要使用的corejs版本@babel/preset-typescript
pnpm add @babel/preset-typescript
isTSX
:开启 jsx 解析,默认为falsejsxPragma
: 替换编译 JSX 表达式时所使用的函数,默认是React
jsxPragmaFrag
:替换编译 JSX 片段表达式时使用的函数,默认是React.Fragment
allExtensions
: 默认是false其它预设请查看babel官网介绍Babel
初始化项目
npm init -y
安装依赖
pnpm add @babel/cli @babel/core @babel/plugin-transform-runtime @babel/preset-env @babel/preset-typescript @babel/runtime-corejs3 core-js -D
npm install @babel/cli @babel/core @babel/plugin-transform-runtime @babel/preset-env @babel/preset-typescript @babel/runtime-corejs3 core-js -D
yarn add @babel/cli @babel/core @babel/plugin-transform-runtime @babel/preset-env @babel/preset-typescript @babel/runtime-corejs3 core-js -D
在package.json
同级目录新建配置文件babel.config.js
,并新增如下内容
module.exports = {
presets: [
[
// babel预设
'@babel/preset-env',
{
// 使用corejs 3的版本
corejs: 3,
// 按需加载
useBuiltIns: 'usage',
// 不使用模块化 交给其它打包工具处理
modules: false
}
],
[
// typescript,
'@babel/preset-typescript',
{
isTSX: true,
allExtensions: true
}
]
],
plugins: [
[
// 只引入用到的模块
'@babel/plugin-transform-runtime',
{
corejs: 3,
helpers: true,
regenerator: true,
useESModules: false
}
]
]
};
在package.json
同级目录新建文件夹source
存放源代码文件。
// Person类
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
// 实例化一个Person类
let p = new Person('张三', 18);
console.log(p.name);
console.log(p.age);
// 两数相加
const add = (a: number, b: number): number => {
return a + b;
};
// Map类型
const map = new Map([]);
// Set类型
const set = new Set([]);
新增script脚本命令
"scripts": {
"build": "babel source/* --out-file lib/main.js"
},
执行npm run build
lib/main.js