Как установить Babel и использовать ES6 локально в браузере?

Итак, я следую учебнику, чтобы узнать ES2015 здесь:

http://k33g.github.io/2015/05/02/ES6.html

Но я не нашел этот файл на основе этого учебника:

node_modules/babel-core/browser.js

Где я могу получить browser.js? Потому что после выполнения:

npm install babel-core

есть 2 browser.js в node_modules\babel-core

1 node_modules\babel-core\lib\api\register\browser.js
2 node_modules\babel-core\lib\api\browser.js

Кого я должен копировать?

Ответ 1

Так как babel 6.2.0 browser.js был удален.

Следуя Babel documentation, у вас есть два варианта:

1. Используйте babel-standalone:

Это автономная сборка Babel для использования в средах Node.js, включая браузеры. Это замена babel-browser и используется в официальном Babel repl

2. Свяжите свой собственный файл:

Используйте пакет, такой как browserify/webpack, и требуйте непосредственно модуль babel-core npm и убедитесь, что правильно настроили браузер или webpack, чтобы избежать ошибок из-за чистых зависимостей node и т.д.

Пример конфигурации с помощью webpack (я оставил только один конкретный):

{
    ...
    module: {
      loaders: [
        ...
        {
          loader: 'json-loader',
          test: /\.json$/
        }
      ]
    },
    node: {
      fs: 'empty',
      module: 'empty',
      net: 'empty'
    }
}

Затем в вашем коде:

import {transform} from 'babel-core';
import es2015 from 'babel-preset-es2015';
import transformRuntime from 'babel-plugin-transform-runtime';

...
transform(
        /* your ES6 code */,
        {
          presets: [es2015],
          plugins: [transformRuntime]
        }
      )
...

Обратите внимание, что плагины и пресеты должны быть необходимы из кода и не могут быть переданы как строка.

Ответ 2

Трансляция в браузере была удалена из Babel 6, однако Daniel15 создал автономную сборку для использования в "не-w630 > .js средах, включая браузеры" здесь:

https://github.com/Daniel15/babel-standalone

Все, что вам нужно сделать, это добавить эту ссылку на свою страницу: <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.4.4/babel.min.js"></script>

И затем убедитесь, что вы используете атрибут script type="text/babel" в своих ссылках на другие файлы script.

Ответ 3

Пример async/await с использованием независимого бабеля!

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Standalone Async/Await Example</h1>
<!-- Load Babel -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.14.0/babel.min.js"></script>
<script type="text/babel" data-presets="es2017, stage-3" data-plugins="syntax-async-functions">
/* Output of Babel object */
console.log('Babel =', Babel);

var users = { '123' : { name : 'Joe Montana'} };
process();
async function process()
{
	var id = await getId();	
	console.log("User ID: "+id);
	
	var name = await getUserName(id);	
	console.log("User Name: "+name);
}
function getId()
{
	return new Promise((resolve, reject) => {
		setTimeout(() => { console.log('calling'); resolve("123"); }, 2000);
	});
}
function getUserName(id)
{
	return new Promise((resolve, reject) => {
		setTimeout(() => { console.log('requesting user name with id: '+id); resolve(users[id].name); }, 3000);
	});
}
</script>
</body>
</html>

Ответ 4

Вам нужно использовать browser.js из babel-browser пакета: https://babeljs.io/docs/usage/browser/

И лучше всего использовать компиляцию на стороне сервера.

Ответ 5

попробуй это

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>
<script type="text/babel" data-presets="es2015,stage-2">
    const res = await axios.get('https://api.hnpwa.com/v0/news/1.json')
    console.log(res)
</script>