如何导入已导出的IIFE,ES6语法?

3

我有一个像这样的服务文件

// service.es6.js
   export default Service = (function($) {
      return { e: 5, f:3, setJQuery: val => $ = val }
   })(jQuery);

在另一个文件中,例如controller.es6.js。
// controller.es6.js
const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
const { window } = jsdom;
import * as jquery from "jquery";

const $ = require("jquery")(window);
const jQuery = $;

import * as MyService from './service.es6';

我遇到了ReferenceError: jQuery未定义的问题。

我该如何正确地导入它?

我需要将服务重写为类吗?


那是在创建一个全局的 Service 变量吗? - Bergi
是的,你绝对应该将jQuery导入您的Service模块中。这是试图使用它的模块。 - Bergi
1个回答

2

如果您不想在服务中导入jQuery(有任何特定的原因吗?),那么您可以将IIFE更改为工厂函数,如下所示:

export default Service = function($) {
  return { e: 5, f:3, setJQuery: val => $ = val }
};

import serviceFactory from "./service.js";
const MyService = serviceFactory(jQuery);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接