javascript - 如何使用 babel 跨 Javascript 文件访问变量?

标签 javascript module global-variables ecmascript-6 babeljs

我正在尝试将我的代码从 ES5 迁移到 ES6 并使用 babel。我在代码中大量使用了模块模式,因此如果我有一个像 apple 这样的模块,我会这样做:

var appleModule = (function() {
    var yummy = true;
    var eat = function() { }

    return { "eat": eat }
})();

然后在不同的文件中访问 appleModule。但是,从这里移动所有内容时:

<script type="text/javascript" src="/scripts/apple.js"></script>
<script type="text/javascript" src="/scripts/banana.js"></script>

为此:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.25/browser.js"></script>
<script type="text/babel" src="/scripts/apple.js"></script>
<script type="text/babel" src="/scripts/banana.js"></script>

我无法再访问不同文件中的 appleModule。我收到一个 ReferenceError 说它不存在。 babel 和 ES6 如何跨文件访问变量?

最佳答案

请实际阅读 babel-browser 的文档

Not intended for serious use
Compiling in the browser has a fairly limited use case, so if you are working on a production site you should be precompiling your scripts server-side. See setup build systems for more information.

您不应该在生产环境中那样使用 babel-browser。甚至在开发中也不行,真的。

相反,为您的代码设置一个正确的构建步骤来转换和捆绑您的代码。

您甚至不必像那样创建自己的模块

a.js

var yummy = true;
var eat = function(){};

export var eat;

b.js

import {eat} from './a.js';

关于javascript - 如何使用 babel 跨 Javascript 文件访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33314611/

相关文章:

c - 重新定义全局变量

c++ - extern 在命名空间中如何工作?

python - 如何在没有队列的情况下更改多处理中的类值?

javascript - 在 JS 的循环中返回一个随机数,但从不相同

module - 无法从 node_modules typescript 导入 react-tap-event-plugin

android - 如何通过链接(而不是复制)使应用程序使用其自身文件夹之外的模块?

Magento - 无法保存自定义模块的角色资源

javascript - 识别 slider 范围的最小值和最大值

JavaScript 重定向不起作用

javascript - querySelector 与 getElementById