2016-11-10 78 views
0

我有一個Angular2項目(由angular-cli生成)。在這個項目中,我有一個主模塊和一個子模塊。子模塊代表一個明確定義的概念,因此很適合將其作爲(可能可重用)NgModule從Angular2 NgModule訪問共享樣式

子模塊封裝了不同的組件,只向外暴露一個組件。這很好,它運作良好,所以模塊可以重複使用。

但是,該模塊確實具有一個全局依賴性,可以阻止它完全脫離可重用模塊。 scss文件使用@import訪問常見的scss文件。常見的scss文件位於模塊之外。

那麼,具體而言,模塊內部scss樣式文件是指scss文件模塊外使用相對路徑,像這樣:

@import './../../../assets/styles/common-props'; 

我不想給scss文件複製到模塊。使用常見的scss文件的最佳方式是什麼,以便模塊變得易於重用?有最佳做法嗎?

+0

你可以發佈一些代碼嗎?我想看看你想做什麼。 –

+0

@JohnBaird在代碼中添加了代碼 –

回答

0

不知道這裏是否真的有最佳做法。這完全取決於您希望如何導入和管理外部SCSS資源。

  1. 如果您希望SCSS資源通過Homebrew或NPM更新進行更新,那麼從源目錄導入它就是一種方法。
  2. 如果您想手動控制SCSS資源的升級路徑,只需將該文件移動到您的SCSS層次結構並導入即可。

一般來說,我更喜歡方法2。

我有一個名爲'libs'的目錄,我將外部SCSS/CSS文件組織到並簡單地導出該文件夾結構。

有邊緣的情況下,我使用#1,但他們是罕見的。

+0

在場景2中,您是否不必將SCSS文件的相對路徑硬編碼到模塊中,從而使其對其他項目不可重用? –

+0

在場景1中,您是否在說我可以將節點模塊從scss文件中取出併發布到我們的內部npm服務器? –

+0

我不確定我是否回答你的問題,也許我完全不理解。也許包括你的整個SCSS結構,並顯示你想如何將這些外部SCSS資源包含到主導入文件中? – Lowkase