当前位置: 首页 > 知识库问答 >
问题:

如何使用babel和webpack将导出的函数公开到全局范围

司徒修能
2023-03-14

如何用webpack和babel编译我的代码,使导出的函数在全局范围内可用?

比如说:

export function test(){console.log('test')}

应该在window.test()下可用。

当我刚刚运行Babel-d时,我得到了我所期望的:

'use strict';

Object.defineProperty(exports, '__esModule', {
  value: true
});
exports.test = test;

function test() {
  console.log('test');
}

但是webpack的输出如下所示:

!function(e) {
  function t(r) {
    if (o[r])return o[r].exports;
    var n = o[r] = {exports: {}, id: r, loaded: !1};
    return e[r].call(n.exports, n, n.exports, t), n.loaded = !0, n.exports
  }

  var o = {};
  return t.m = e, t.c = o, t.p = "", t(0)
}([function(e, t) {
  "use strict";
  function o() {
    console.log("test")
  }

  Object.defineProperty(t, "__esModule", {value: !0}), t.test = o
}]);

end<code>测试</code>函数在全局范围内不可用。

共有2个答案

宇文学博
2023-03-14

退房:https://github.com/webpack/docs/wiki/library-and-externals#examples

通过将库输出属性设置为要包装全局变量的任何名称,您可以调用:YourLibrary.test();

module.exports = {
    entry: ['./_js/script.js'],
    output: {
       library: 'YourLibrary',
        path: __dirname,
        filename: './build/script.js'
    }
郭俊人
2023-03-14

您可以轻松地在全局窗口对象上设置属性。这将向全局范围公开您的对象。

function test() {
  console.log('test');
}

window.test = test;

如果您正在开发一段代码,该代码不表示库,而只是表示在全局范围内运行的一些操作或功能,我更喜欢使用此方法,而不是设置接受的答案中提到的库输出属性。

 类似资料:
  • 例如,我有: 有没有办法将和导出为全局函数,这样我就可以直接调用,而不是? 我的上下文是使用Rhino/Nashorn脚本引擎,我想注入一个提供全局函数的“全局”对象。

  • 如果你需要让一个工具函数在每个组件可用,可以把方法挂载到 Vue.prototype上。 注册 main.js 中 Vue.prototype.$method = function () {} 一般建议函数名使用 $ 前缀。像 vue-router 的 $route 和 $router。 使用 那么组件代码里 export default { created () { this.$m

  • 我正在尝试迁移/更新我的项目,以使用Rhino的Nashorn。我用Java实现了一些全局实用程序函数,并将其添加到目标脚本引擎的全局范围中,典型的例子是。 在Rhino中,它是通过 其实例已添加到目标范围。如果是纳肖恩,该怎么办?我找不到如何为Nashorn实现独立函数。

  • 我正在使用webpack处理和捆绑我的TypeScript模块,但我需要一些模块/块从外部可用。我该怎么做? 其他信息 代码被分成不同的目录,每个页面(/component)一个目录。每个页面都包含几个文件,每个文件都包含一个模块。它看起来像这样: 类型脚本模块的定义如下 我正在使用gulp-webpack来编译和捆绑每个页面的模块: 现在我需要从全局范围访问 以便它可以被其他(外部)组件使用。我

  • 问题内容: 我正在使用“使用严格”的函数形式,并且不希望Babel在转换后添加全局形式。问题是我正在使用一些未使用“严格使用”模式的库,并且在连接脚本后可能会引发错误 问题答案: Babel5 你会列入黑名单。例如,这是Gruntfile中的一个示例: Babel6 由于Babel 6现在已完全选择加入插件,而不是将其列入黑名单,因此您无需添加插件。如果您正在使用包含它的预设,那么我认为您必须创建

  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块