2016-04-01 39 views
1

所以我有義務將es5轉換爲es6模塊。單個模塊中的角度1.x和es6多個常量

如果ES6的角度模塊中存在多個常量,那麼如何導出/導入角度常量模塊?

E.g. constants.js

export default angular.module('myConstants', []) 
    .constant('foo', {result: 'bar'}) 
    .constant('blah', {result: 'bar'}); 

service.js

import foo from './constants'; 
import blah from './constants'; // Tried this. This won't work 

這是否意味着我有我的常量拆分成獨立的模塊?或者我應該使用const關鍵字將它們轉換爲ES6常量?使用的WebPack和巴貝爾裝載機

附註:

P.p.s我必須使用僞代碼,因爲我無法粘貼工作代碼。

+0

該導出語句是語法錯誤。你的意思是使用'export default'嗎? – Bergi

+1

當你有ES6模塊時,爲什麼要使用角度模塊? – Bergi

+0

@Bergi是的,謝謝。我已經更新了它。 – chrisjlee

回答

3

constant服務只是一種服務類型,它在配置階段可用,並且是存儲模塊常量(因此名稱)的建議方式。這不是一個真正的常數,可以隨時用$provide.constant覆蓋。

鏈接angular.module(...)出口Module object並且在非角度上下文中沒有意義。

爲Angular模塊和ES6模塊保留單獨的導出。通常導出Angular模塊name property,這是一個可以在其他模塊中進行語義導入和使用的字符串。

export const foo = ...; 

export default angular.module('myConstants', []).constant('foo', foo).name; 

import myConstantsMod, {foo} from './constants'; 

angular.module(..., [myConstantsMod])... 

這取決於什麼foo進口是,但一般非默認ES6進口/出口應限於特定語言的使用(抽象類,基本對象等)和不應該取代Angular模塊化功能,這是由於其可測試性而不可或缺的。