2016-03-08 201 views
3

我想我們的庫中創建模塊,所以每次我們打電話的時候,我們可以用import {Api, Map} from "ourlibrary"打字稿創建模塊

我目前使用以下。

import {Api} from "../../Library/Api"; 
import {MapPage} from "../map/map"; 

如何創建我自己的軟件包以獲得以下結果?

import {Api, Map} from "OurLib" 

回答

1

我看到兩個步驟來做到這一點:

  • 創建您SystemJS配置的map塊的條目:

    System.config({ 
        map: { 
        'OurLib': 'path-to-ourlib' 
        }, 
        packages: { 
        'OurLib': { 
         main: 'index.js', 
         defaultExtension: 'js' 
        } 
        } 
    }); 
    
  • 創建打字稿文件(例如, index.ts)作爲入口點模塊,用於導入/導出要在庫外提供的內容:

    export {Api} from "../../Library/Api"; 
    export {MapPage} from "../map/map"; 
    
+0

我正在使用離子,其中有tscnofig.json ...我如何使用tsconfig上的設置? http://pastie.org/10752352 - 它也有webdev ..有點不確定這是否發生在webdev或tsconfig – Basit

+0

你的意思是你想爲你的lib定義一個契約,即ourlib.d.ts? –

2

創建一個頂級ES6風格的js文件的導出導入爲單個文件並將其命名爲OurLib

exports.Api = require('../../Library/Api').Api; 
exports.Map = require('.../map/map').Map; 

該方法的好處是它不會將您與單個模塊加載器系統綁定。由於它是直接的ES6功能(需要/出口),它可以通過SystemJS,的WebPack,消耗打字稿等

如在下面的評論在需要聲明的末尾提到,之所以.Api.Map是因爲你通常從文件中導入的是類。你會在

export class Api {} 

export class Map {} 

在每個相應的文件的情況下使用的語法是這樣的。這樣你只分配你想要導出的類而不是整個需要的文件。它使您可以更好地控制捆綁的,公開的模塊。

+0

爲什麼在行尾使用'.Api'&'.map'? –

+1

您通常會引用該導入文件中的特定類。 –

+0

你的意思是'.API和.map'是導出類的名字? –