【问题标题】:requirejs define a module can not get the return valuerequirejs定义一个模块无法获取返回值
【发布时间】:2017-05-31 03:49:23
【问题描述】:

当我导入外部链接时,我无法获取导出值 js 文件 (main.js) 作为 requirejs 的依赖项,请参阅代码。

console.log(m) //未定义

但是我将模块“t”定义为内部依赖,它可以获得返回 值,见代码。

console.log(n) //测试

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>

    <script src="https://cdn.bootcss.com/require.js/2.3.3/require.min.js" ></script>

	<script type="text/javascript">
            define("t",["main"],function(m){
            	console.log(m) //undefined
            	
            	return "test";
            	
            });
            require(["t"],function(n){
            	console.log(n) //test
            	
            });
        </script>
</body>
</html>

这里是main.js:

define("m",[],function(){

    return "test";
})

那有什么问题呢?

【问题讨论】:

  • 因为当你定义t时,你并没有在定义的函数中传递一个变量来代替m
  • 定义t时如何传递变量,如果我将模块'm'更改为'main',它可以工作。模块名称必须与文件名相同吗? define("main",[],function(){ return "test"; })

标签: javascript requirejs


【解决方案1】:

像这样定义你的 main.js 模块,它应该可以正常工作:

define([],function(){

    return "test";
});

您的 HTML 将是:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>

  <script src="https://cdn.bootcss.com/require.js/2.3.3/require.min.js"></script>

  <script type="text/javascript">
    requirejs.config({
      baseUrl: '/', // set proper base path


      paths: {

        "main": "...path to main js...."

      }


    });

    define("t", ["main"], function(m) {
      console.log(m) 

      return "test";

    });

    require(["t"], function(n) {
      console.log(n) //test

    });
  </script>
</body>

</html>

这是一个有效的pen

【讨论】:

  • Txs,它有效。有没有办法在不改变main.js的情况下解决?
  • @user1841488:如果你给你的模块一个与配置中的名称匹配的名称,它应该可以正常工作。即“主要”
猜你喜欢
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多