首页 > 解决方案 > 这 requireJS 的事情让我很困惑

问题描述

嗨,我想了解这个隐写工具https://github.com/petereigenschink/steganography.js

我在我的反应项目中使用它。关于RequireJS的那一点让我很困惑。我可以把它变成一个正常的、不那么可怕的 javascript 吗?

;(function (name, context, factory) {

  // Supports UMD. AMD, CommonJS/Node.js and browser context
  if (typeof module !== "undefined" && module.exports) {
    module.exports = factory();
  } else if (typeof define === "function" && define.amd) {
    define(factory);
  } else {
    context[name] = factory();
  }

  })("steg", this, function () {}

我需要能够使用此功能或我的 App.js 文件中的任何内容。请问有什么指点吗?

这是反应开发服务器抛出的错误:编译失败。

./src/steganography.js
  Line 12:  'define' is not defined  no-undef
  Line 13:   'define' is not defined  no-undef

标签: javascriptreactjs

解决方案


由于 javascript 最初并没有包含任何执行模块的方式(即,将来自多个文件的代码链接在一起),因此已经发明了几种不同的方法来实现这一点。该代码块只是试图符合所有这些,因此无论消费者使用哪种模块方法,代码库都可以正常工作。

外部是一个立即调用的函数表达式。这是一个匿名函数,它被创建然后立即调用。在这段代码中,它的主要目的是隔离表达式中的任何变量,从而使它们不可能意外成为全局变量。

在 IIFE 内部,它有一些检查以确定正在使用哪种模块系统,以便它可以生成要导入的正确输出。


推荐阅读