我目前正在开发一个angularjs项目,并尝试构建可重复使用的组件 - 受this article的启发(它也产生了angular component spec)。
我想知道如何打包我想要包含在组件中的图像/样式表?
我想要的一些事情:
目前我的想法是:
在我的凉亭组件目录(app/public/components
)中创建组件,所以我有
app
|-- public
|-- components
|-- prefix-component-name
|-- assets
|-- img
|-- ...
|-- views
|-- templates
|-- sass
|-- styles.scss <-- Component styles
|-- img
|-- css
|-- js
index.html
|-- views
|-- sass
|-- application.scss <-- Application styles
application.scss将使用类似
的内容导入组件的样式@import "../../public/components/prefix-component-name/views/sass/styles";
我不确定的事情:
我的用例特定于angularjs,但我确信同样的问题适用于W3C web components以及polymer和mozilla brick等库。
有什么想法吗?
修改:views
文件夹与assets
答案 0 :(得分:1)
通过创建封闭组件,我也遇到了同样的问题。
在以下示例中,sass-bootstrap用于演示目的,包括您自己的 prefix-component-name 。
首先,它是一种使用资产文件夹存储视图中所有独立资产的好方法。
我还希望在你的样式表(SASS)中使用vendor.scss
种类来获得
用于导入路径之类的分隔文件(您将使用变量限制:sass/compass import variable issue)。
目录结构
app
|-- public
|-- components
|-- prefix-component-name
|-- assets
|-- sass
|-- styles.scss
|-- img
|-- ...
|-- views
|-- index.html
|-- ...
|-- bootstrap-sass
|-- vendor
|-- assets
|-- stylesheets // https://github.com/thomas-mcdonald/bootstrap-sass/tree/master/vendor/assets/stylesheets
|-- bootstrap
|-- bootstrap.scss
|-- ...
|-- img
|-- css
|-- js
index.html
|-- views
|-- sass
|-- vendors.scss
|-- application.scss
<强> vendor.scss 强>
@import '../../public/components/bootstrap-sass/vendor/assets/stylesheets/bootstrap.scss';
@import '../../public/components/prefix-component-name/assets/sass/styles.scss';
可悲的是wildcard imports目前还不支持。
我更喜欢使用单独的所有资源,这样可以很容易地在样式表中引用相对于组件的图像。
我没有明确提出您的问题,但我想vendors.scss
解决了存储路径变量的问题。
是的,它本身就存在了。当您首先导入vendors.scss
中的applicaion.scss
并在那里定义了一个变量时,您也可以在application.scss
中找到它。