繁体   English   中英

具有RequireJS的同构JavaScript

[英]Isomorphic JavaScript with RequireJS

我有一些同构JavaScript。 我在客户端使用RequireJS。

(function() {
    'use strict';

    function wrapper(require) {
      var MyDep = require('my-dependency');

      return function MyExportedFunction() {
          // ...
      };
    }

    if ((typeof exports === 'object') && module) {
        module.exports = wrapper(require); // CommonJS
    } else if ((typeof define === 'function') && define.amd) {
        define(function(require) {
            /**
             * I need to `require` dependencies 
             * in here for them to be available inside 
             * the wrapper function :(
             */
            require('my-dependency');
            return wrapper(require);
        }); // AMD
    }
}());

有没有一种方法可以避免必须在wrapper函数调用之前放置require语句?

如果我省略了require语句,RequireJS会抱怨尚未为上下文加载依赖项。

我认为这是RequireJS提前解析和识别需求依赖项的能力的不可克服的局限。

是啊,RequireJS只能处理CommonJS的形式的require ,只有当它是在传递给工厂函数直接呈现的define 如果它出现在从工厂函数调用的函数中,但在函数外部定义,则它将不起作用。 在内部,RequireJS在工厂函数的源代码上运行正则表达式。

话虽这么说,在我看来,您应该可以用以下命令替换当前define调用:

define(wrapper)

这将使用对RequireJS的require函数的引用来调用wrapper并且 RequireJS应该能够分析wrapper的来源以提取CommonJS调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM