仅实施FormulaJS客户端?

时间:2014-09-16 12:24:56

标签: javascript requirejs

我可以帮助实施FormulaJS - 仅限客户端。我有一个excel文件,其中有几个公式要转换为javascript。

FormulaJS文档说使用requireJS但我无法正确实现它。我收到以下错误:

未捕获错误:模块名称" lib / compatibility"尚未加载上下文:_。使用require([]) http://requirejs.org/docs/errors.html#notloaded

这是我的文件标题:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Calc tests</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/requirejs-master/require.js"></script>
<script type="text/javascript" src="js/formula.js-master/index.js"></script>


<script type="text/javascript" src="js/what-income.js"></script>
</head>

<body>



</body>
</html>

干杯

1 个答案:

答案 0 :(得分:1)

你问过一个有自己答案的问题:

  

如果错误消息包含Use require([]),那么它是顶级的   需要调用(不是在define()调用中的require调用)   使用异步,回调版本的require来加载代码:

require(['foo'], function (foo) {
    //foo is now loaded.
});

因此,您的代码中可能包含node.js需要的样式,而不是callback version of require to load the code

我认为这是 js/formula.js-master/index.js 路径中的内容:

var categories = [
  require('./lib/compatibility'),
  require('./lib/database'),
  require('./lib/engineering'),
  require('./lib/logical'),
  require('./lib/math-trig'),
  require('./lib/text'),
  require('./lib/date-time'),
  require('./lib/financial'),
  require('./lib/information'),
  require('./lib/lookup-reference'),
  require('./lib/statistical'),
  require('./lib/miscellaneous')
];

for (var c in categories) {
  var category = categories[c];
  for (var f in category) {
    exports[f] = exports[f] || category[f];
  }
}

如果您更好地查看代码,您会看到:

var compatibility = require('./lib/compatibility');

其nodejs样式为require且不是 异步 ,而如果您想使用RequireJS,则应执行以下操作:

require(['./lib/compatibility'], function (compatibility) {
    //your code goes here
});

最后的结论是,您使用的是错误的require库。什么是正确的?

幸运的是,有一个在浏览器中使用nodejs模块非常有用: Browserify

您可以找到演示 here ,有人说:

  

浏览器未定义 require 方法,但 Node.js 可以。同    Browserify 您可以使用相同的方式编写使用require的代码   你会在Node中使用它。