2015-09-10 218 views
4

我是一個Typescript初學者,我有Java開發經驗,我想知道什麼是在打字稿中推薦的文件結構 - 尤其是涉及到模塊。typescript推薦的模塊項目結構

可以說我有幾個模塊:ui.dashboard,ui.models,util.events,util.common。

每個模塊可以包含幾類,在Java - I將具有以下文件結構(其中<base>是基礎包的項目例如,com.my.app):

src/<base>/ui/dashboard/<file per class> src/<base>/ui/models/<file per class> src/<base>/util/events/<file per class> src/<base>/util/common/<file per class>

在另一方面打字稿我看到完成同樣的事情2種主要途徑:

扁平化設計:

src/ui.dashboard.js src/ui.models.js src/util.events.js src/util.common.js

其中每個文件都包含具有所有相關類的模塊定義。這是確定的,但比文件變得巨大而難以在這個設計管理

分層設計

我會組織的文件,就像在Java中,但由於打字稿(據我所知)沒有支持在文件之間聲明模塊我將不得不編寫一個吞嚥/咕嚕聲任務,在構建時將這些文件合併到模塊中。 這個(對於我來說,作爲一名java程序員)看起來更加優雅,但是由於這些模塊直到編譯時間之前並未實際定義,因此對編輯器/ IDE不可見,所以我放棄了一些工具支持。

建議的工作方式是什麼?

回答

1

同時使用:) ES6同時支持命名導出和默認導出,因此可以根據需要使用兩種設計。

由於您陳述的原因,項目的總體結構應使用分層設計,但也應根據需要使用扁平模塊。特別是對於將被合併到其他代碼庫中的軟件包。

例如:

src/ui/dashboard/Class1.ts 
src/ui/dashboard/Class2.ts 
src/ui.dashboard.ts 

src/ui/dashboard/Class1.ts文件看起來像:

export class Class1 {} 

src/ui.dashboard.ts文件看起來像:

import {Class1} from './ui/dashboard/Class1'; 
import {Class2} from './ui/dashboard/Class2'; 

export default { 
    Class1: Class1, 
    Class2: Class2, 
    randomFunction:() => {}, 
} 

然而,有疑問時退回到默認出口。

ECMAScript 6支持單一/默認導出樣式,併爲導入默認樣式提供了最好的語法。導入命名導出可以甚至應該稍微簡潔。 https://esdiscuss.org/topic/moduleimport#content-0