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