Typescript - 加载不导出的模块

时间:2014-03-26 18:32:49

标签: javascript requirejs typescript multipage

我刚开始使用打字稿,我正在尝试设置一个多页面的amd应用程序。

与requirejs团队提供的setup保持内联我有一个包含所有requirejs配置的common.ts文件,例如:

// common.ts
require.config({
    paths: {
        'backbone': 'lib/backbone'
        , 'jquery': 'lib/jquery'
        , 'underscore': 'lib/underscore'
    }
});

然后我使用以下脚本标记加载requirejs:

<script data-main="http://blah/page1.js" src="http://blah/require.js"></script>

根据针对多页面应用程序的requirejs建议的指示,然后我从blah / page1.js中加载common.ts,这就是我开始遇到麻烦的地方。

导入commont.ts文件的正确方法是什么?

我没有跟import requireConfig = require('common');好运,因为我没有从common.ts输出任何东西。

然而,当我尝试导出任何内容时,即使是来自common.ts的虚拟值,它最终会将require.config()调用包装在模块定义函数中,该函数会破坏requirejs的内容。

我尝试使用/// <reference path="common.ts"/>加载它,但当然失败了

我还尝试删除import声明,只是调用require('common'),但无法使用Could not find symbol 'require'进行编译

是否有某些方法可以加载common.ts,即使它没有导出任何东西?

3 个答案:

答案 0 :(得分:1)

你不能import一个文件,除非你export某个文件中的某些内容而你不能export来自某个文件而没有将它包装在define中为amd编译。

答案 1 :(得分:0)

对于任何其他人再次提出这个问题,跟进@basarat's answer(基本上,我试图做的事情是不可能的)我已经能够通过添加我的requirejs配置设置来解决我的问题(例如根据{{​​3}}中提供的说明,在我的html模板文件中内联的内容。

所以,我的html看起来像:

<script>
     var require = {
          paths: {...}
          , shims: {...}
     };
</script>

<script src="scripts/require.js"></script>

不理想,但现在似乎已经完成了工作。

答案 2 :(得分:-1)

您不应将requires配置文件作为外部模块加载。您应该使用data-main并将其指向此文件。有关示例,请参阅http://youtube.com/watch?v=KDrWLMUY0R0

这个文件应该是应用程序的主要入口点