基于typescript模块的应用程序的通用vs应用程序初始化

基于typescript模块的应用程序的通用vs应用程序初始化,typescript,Typescript,我正在将我现有的JS应用程序(购物车+关联网站)移到Typescript 我现在在JS文件中有一大堆函数来初始化不同的外部组件 // Initialize components initBrowser(); initKnockout(); initModernizr(); initjQM(); initGoogleAnalytics(); 他们设置了从window.console.log到knockout.js绑定、自定义modernizer.j

我正在将我现有的JS应用程序(购物车+关联网站)移到Typescript

我现在在JS文件中有一大堆函数来初始化不同的外部组件

    // Initialize components
    initBrowser();
    initKnockout();
    initModernizr();
    initjQM();
    initGoogleAnalytics();
他们设置了从
window.console.log
knockout.js
绑定、自定义
modernizer.js
测试和jQuery移动页面转换逻辑的所有内容

我的问题是,在Typescript模块中,我应该如何最好地用模块组织和初始化这样的事情。(我的应用程序很小,只使用内部模块)

选项1:没有初始化所有内容的“类”的模块 选项2:具有“静态初始值设定项”类的模块 选项3:初始化所有内容并仅创建一次的单个应用程序对象 备选案文4:。。。。。。你的想法。。。。。 初始化与特定应用程序模块或类不相关的东西的好方法是什么

此外,我还有其他init函数来设置jQuery的非干扰初始化,例如我的登录按钮、客户服务页面逻辑。这些功能是特定于实际网站的,与我前面提到的功能不同

    // initialize shopping cart
    initLogin();
    initCustomerService();
    initVideo(true);
到目前为止,我只是在一个单独的闭包中一次初始化了所有内容,但我希望今后能更好地组织工作,并希望得到任何建议

您可以使用外部模块<代码>引导.ts:

// Load components
import initBrowser = require('./initBrowser');
import initKnockout = require('./initKnockout');
import initModernizr = require('./initModernizr');
import initjQM = require('./initjQM');
import initGoogleAnalytics = require('./initGoogleAnalytics');

// Initialize components
initBrowser();
initKnockout();
initModernizr();
initjQM();
initGoogleAnalytics();
这样,您就不必担心JavaScript文件的排序问题。在编写代码时,顺序是明确的,您不会不必要地污染
窗口


要了解有关外部模块的更多信息:

我喜欢您的第三个选项。无论应用程序的大小,它似乎都更合适。这让你可以选择添加一个界面,以防你想添加单元测试/模拟。已经看过了:-)顺便说一句,你在这些视频上做得很棒。我需要坐下来看着他们。我确实注意到那个视频中有一个特定的遗漏,那就是如何让VisualStudio将模块编译成一个.js文件。只需单击
将JavaScript输出合并到一个文件中
就可以了,但我花了半个下午的时间才弄明白如何进行。我没有足够大的文件来保证一个外部加载程序,所以我希望IDE编译成一个文件。也许这是一个新功能,但我希望它能出现在那个视频中以节省我的时间:)我意识到你不使用Visual Studio,也许现在这是一个新功能,但我发现这个复选框让我的生活变得轻松多了it@Simon_Weaver谢谢:)。仅供参考如果您使用该功能,请注意您需要一个
\u参考
文件来管理TypeScript文件的组合顺序。PS:
grunt ts
可以为您创建它
module RR 
{
    class MyApp
    {    
        constructor()
        {
           init();             
        }

        init()
        {
            initBrowser();
            initKnockout();
            initModernizr();
            initJQM();
            initGoogleAnalytics(); 
        }

        // define functions
     }

     // create the application
     var MyApp = new MyApp();

}
    // initialize shopping cart
    initLogin();
    initCustomerService();
    initVideo(true);
// Load components
import initBrowser = require('./initBrowser');
import initKnockout = require('./initKnockout');
import initModernizr = require('./initModernizr');
import initjQM = require('./initjQM');
import initGoogleAnalytics = require('./initGoogleAnalytics');

// Initialize components
initBrowser();
initKnockout();
initModernizr();
initjQM();
initGoogleAnalytics();