【问题标题】:Implementing FormulaJS client side only?仅实现 FormulaJS 客户端?
【发布时间】:2014-09-16 12:24:55
【问题描述】:

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

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

未捕获的错误:尚未为上下文加载模块名称“lib/compatibility”:_。使用要求([]) 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>

干杯

【问题讨论】:

    标签: javascript requirejs


    【解决方案1】:

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

    如果错误信息中包含 Use 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');
    

    它具有require 的nodejs 样式并且不是async,而如果你想使用RequireJS,你应该这样做:

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

    最后的结论是,你使用了错误的 require 库。哪个是正确的?

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

    你可以找到演示here,据说是这样的:

    浏览器没有定义 require 方法,但 Node.js 有。和 Browserify 您可以编写使用 require 的代码,其方式与 你会在 Node 中使用它。

    【讨论】:

    • 感谢您的帮助!如果没有成功,我会尝试 Browserify 并回发。
    • 谢谢,是的,它确实有效!经过一天又 1/2 的工作,在 Mac OsX 上安装 Browserify 时出错。
    • 是的,开始使用 node 模块一直是一个痛苦的过程,但随着您的深入,它会变得更容易。我绝对会推荐你给 Yeoman 一个去你的脚手架过程,这真的很有帮助。
    • @user3744945 检查这个generator ,这可以加快使用 browserify 的速度,还可以帮助您跟上最新的做法。
    • @user3744945 我想知道这是不是一个有用的答案,你会接受吗:)
    猜你喜欢
    • 2010-12-19
    • 2010-11-08
    • 2022-11-04
    • 2013-04-02
    • 2011-08-27
    • 2018-03-02
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多