TypeScript 創建Windows應用商店程序

TypeScript是微軟最新推出的類型化的開源的JavaScript超級包,它提供了模塊,類,接口等特性,本質上是向Javascript添加了基於類型和基於類的面向對象編程,使Javascript可以更好的用於大型應用的開發,最終編譯生成Javascript代碼。話不多說,大家如果想了解更多信息可以點這個鏈接TypeScript,這次我們要嘗試用TypeScript來創建應用商店程序。

在此之前我假定小夥伴們已經裝好了TypeScript工具了,沒裝的可以點這個鏈接TypeScript 1.0 Tools(官方的),好了,開始吧。

打開Visual Studio,打開添加項目對話框


爲什麼TypeScript選項沒有創建應用商店程序選項,這下坑了,難道說要創建應用商店程序的夢想要泡湯了?別擔心,總有辦法的,要是直接有這個選項的話,那我再寫這篇文章豈不是很蛋疼。好吧,既然TypeScript的根是Javascript,那我們用Javascript創建一個應用商店程序。

OK,創建完成了,如果你現在添加一個TypeScript文件的話是不會起作用的,因爲項目還沒有配置編譯TypeScript,我們要對這個項目進行改造。首先卸載你當前的項目(Unload Project),


然後再編輯當前項目的項目文件。


現在我們要加點東西讓MSBuild知道當它遇到Typescript文件的時候該怎麼做(當然你的MSBuild文件夾裏得有TypeScript相關組件啊,一般是放在C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript)。我們先找到一個PropertyGroup節點,一般在37行,它有一個屬性Label="Globals",這個時候它有一個子節點是ProjectGuid,我們再給它添加一個子節點吧<TypeScriptPath>。(ProjectGuid 不要改)

  <PropertyGroup Label="Globals">
    <ProjectGuid>73e279d1-204c-41f7-8ba0-e84c8708fbb5</ProjectGuid>
    <TypeScriptPath>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\TypeScript</TypeScriptPath>
  </PropertyGroup>
其實這個<TypeScriptPath>對應的就是TypeScript組件的位置(我這裏對應C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript),下面我們爲Typescript編譯器添加默認屬性,可以看到上面那個節點下面有幾個<import>的節點,我們就把我們要添加的放在這些節點下面。

<Import Project="$(TypeScriptPath)\Microsoft.TypeScript.Default.props" />

最後我們要添加的是Typescript Debug和Release的配置,這些配置包括了許多編譯Typescript時需要執行的Tasks,將以下代碼添加至末尾。

<pre name="code" class="html">  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptRemoveComments>false</TypeScriptRemoveComments>
    <TypeScriptSourceMap>true</TypeScriptSourceMap>
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptRemoveComments>true</TypeScriptRemoveComments>
    <TypeScriptSourceMap>false</TypeScriptSourceMap>
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
  </PropertyGroup>
  <Import Project="$(TypeScriptPath)\Microsoft.TypeScript.targets" />
  <Import Project="$(TypeScriptPath)\Microsoft.TypeScript.jsproj.targets" />


TypeScriptTarget是告訴編譯器把TypeScript文件編譯成EcmeScript 5,TypeScriptRemoveComments設置是否去除註釋, TypeScriptSourceMap設置調試並可打斷點。TypeScriptModuleKind是告訴Typescript編譯器應該使用AMD 組件,當然我們也可以把它設置成CommonJS。

好了,項目文件的改造完成了,保存項目文件並重新加載項目。下面我們添加一個TypeScript文件,由於添加新項對話框裏沒有TypeScript選項,我們只能隨便選一個代碼文件把後綴名改爲.ts了,這裏我在js文件夾下添加了一個default.ts,查看這個ts文件的屬性,當你看到屬性裏的Package Action是TypeScriptCompile,那就代表我們改造成功了。 

大家有沒有注意到我的js文件夾裏有兩格名爲default的文件,只是格式不同,一個爲ts一個爲js,但它們現在是關聯起來的(當我們改造完項目文件,添加一個同名的ts文件就自動關聯了),編譯器編譯default.ts文件生成的JavaScript代碼會放在default.js中。現在default.js就相當於default.ts的javascript解釋。也許兩個文件並存看起來會有點累贅,我們可以在修改項目文件,讓他們合併在一起。在項目文件裏找到include該文件的地方,並把它替換成如下代碼。

    <Content Include="js\default.js">
      <DependentUpon>default.ts</DependentUpon>
    </Content>

看現在是不是好多了呢


下面我們再在js文件下添加一個home.ts文件,然後編譯以下項目,編譯後生成了home.ts和home.js.map文件


又一次證明了我們改造項目成功,home.js.map是home.js和home.ts關聯的關鍵,每一個ts文件最終都會生成同名的js文件,我們修改ts文件後相應的js文件最終也會被更新,這關鍵之處就在於這個.map文件了。有效文件還是home.js你可以把它包含在項目當初,可以把它們像default.ts和default.js那樣整合起來。


References: http://www.typescriptlang.org/

                       http://www.timmykokke.com/2014/04/enabling-typescript-compilation-in-windows-store-apps/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章