【问题标题】:How to import an exported IIFE, ES6 syntax?如何导入导出的 IIFE、ES6 语法?
【发布时间】:2017-09-07 07:52:21
【问题描述】:

我有一个这样的服务文件

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

在另一个文件中,例如控制器.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 is not defined

如何正确导入?

我是否必须将服务改写为类?

【问题讨论】:

  • 这是在创建一个全局的Service 变量?
  • 是的,您绝对应该将 jQuery 导入您的服务模块。那就是试图使用它的人。

标签: javascript ecmascript-6 es6-modules


【解决方案1】:

如果您不想在服务中导入 jQuery(任何特殊原因?),那么您可以将 IIFE 更改为工厂,例如:

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

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

【讨论】:

    猜你喜欢
    • 2019-04-13
    • 2019-08-22
    • 2016-10-25
    • 2016-03-24
    • 2018-01-15
    • 2016-05-24
    • 1970-01-01
    • 2020-10-21
    相关资源
    最近更新 更多