Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Babel transpiles 'import' to 'require', but 'require isn't useable in ecma5

It was my understanding that use Babel allows you to use ecma6 javascript in an ecma5 environment by transpiling. When I use 'import' however, the 'import' is transpilied to 'require'. 'require' isn't ecma5 and requires the library 'require.js'. Therefore you can't use 'import/ export' without additional dependencies, is this correct?

like image 933
Brad Woods Avatar asked Jul 03 '16 03:07

Brad Woods


People also ask

What can I use instead of require in JavaScript?

Use Import Instead of Require in Node App.

Does node js need Babel?

And many frameworks today use Babel under the hood to compile their code. For example, Node can't use ES6 import and export statements and some other cool features of ES6 syntax without the help of a compiler like Babel.

What's Babel for in JavaScript?

Babel is a JavaScript compiler Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.

What is Interoprequiredefault?

_interopRequireDefault(): An ES6 CommonJS module is used as is (if it has a default export then it has a property named default). A normal CommonJS module becomes the value of the property default. In other words, in the later case, the module's exports become the default export.


1 Answers

Yes, Babel is just intended for translating new language features to be compatible with modern javascript engines. Babel doesn't compile to require.js module import syntax. Rather it uses the CommonJS module syntax as used by Node.js. So you could run the code directly without further build dependencies in Node.js.

As it operates on single files at a time and is a straight forward translation, it doesn't make any decisions as to how you want to include the source code of those other files into the current one.

That said, if you are going to use it in browser, you will need a build system or bundler that supports CommonJS modules statements:

  • See https://babeljs.io/docs/setup/#installation for a list of many typical build configurations
  • Browserify and Webpack are two of the most popular ones in the Javacript ecosystem
  • These systems 'bundle' your javascript code by injecting files wherever 'require' is referenced and thus typically produce one output js file which you can run in ecma5
like image 93
Dennis Shtatnov Avatar answered Oct 03 '22 08:10

Dennis Shtatnov