我正在将现有的JS应用程序(购物车+相关网站)移到Typescript。
我现在在JS文件中有很多函数来初始化不同的外部组件
// Initialize components
initBrowser();
initKnockout();
initModernizr();
initjQM();
initGoogleAnalytics();
他们设置了从window.console.log
到knockout.js
绑定,自定义Modernizr.js
测试和jQuery移动页面转换逻辑的所有内容。
我的问题是如何在Typescript模块中最好地用模块来组织和初始化这样的事情。 (我的应用很小,我只使用内部模块)
module RR
{
initBrowser();
initKnockout();
initModernizr();
initJQM();
initGoogleAnalytics();
// define functions
}
module RR
{
class AppInitializer
{
private static instance:AppInitializer = new AppInitializer();
constructor()
{
initBrowser();
initKnockout();
initModernizr();
initJQM();
initGoogleAnalytics();
}
// define functions
}
}
module RR
{
class MyApp
{
constructor()
{
init();
}
init()
{
initBrowser();
initKnockout();
initModernizr();
initJQM();
initGoogleAnalytics();
}
// define functions
}
// create the application
var MyApp = new MyApp();
}
初始化此类与特定应用程序模块或类无关的内容的好方法。
此外,我还有其他初始化函数来设置我的jQuery不显眼的初始化,例如。我的登录按钮,客户服务页面逻辑。这些功能特定于实际网站,与我之前提到的功能不同
// initialize shopping cart
initLogin();
initCustomerService();
initVideo(true);
到目前为止,我只是在一次关闭中一次性初始化了所有内容,但是我希望能够更好地组织事情,并希望得到任何建议。
答案 0 :(得分:1)
您可以使用外部模块。 Bootstrap.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文件了。代码编写方式明确,和不必要地污染window
。