如何在Meteor.js中仅显式加载特定(不是全部)css文件

时间:2014-11-01 19:44:33

标签: meteor

我想用Meteor.js开发一个常用的网站(不是单页的网络应用程序),我想只为每个页面加载特定的css文件。因此,并非所有页面都共享相同的css代码。 有可能吗?

3 个答案:

答案 0 :(得分:11)

首先,如果您使用的是Meteor,那么您正在构建一个非常强大的SPA(单页应用程序)。您可以通过引入路由来模仿“常规”网站,尝试IronRouter

现在关于CSS。一旦部署了Meteor,所有的CSS和JS都会被合并和缩小。因此,如果您想要实现您的要求,您需要添加像这样的包。

https://atmospherejs.com/mrt/external-file-loader

https://github.com/davidd8/meteor-external-file-loader

然后在创建模板后将其附加到触发器:

Template.myCustomTemplate.created = function() {
  Meteor.Loader.loadCss("//example.com/myCSS/style.css");
};

我相信您也可以通过Meteor的Asset API从Meteor服务器加载CSS。在此处阅读更多内容:https://docs.meteor.com/#/full/assets

答案 1 :(得分:4)

我找到了一个简单的解决方案。在你的meteor项目文件夹中创建一个名为" public" (没有引号)。在该文件夹中创建一个名为" css"的文件夹。 (没有引号)。将CSS文件放在该文件夹中。

在您希望应用特定CSS文件的html文件中执行以下操作:

<head>
<link href="css/yourfile.css" rel="stylesheet">
</head>

答案 2 :(得分:1)

由于问题的最后一部分说:“因此并非所有页面都共享相同的CSS代码。”您可以考虑使用less并将模板包装在不同的div类中。

例如

HTML文件

<template name="page1">
    <div class="page1css">
        <p class="content">Page 1 content</p>
    </div>
</template>

LESS File

.page1css {
    .content {
        font-size: 2em;
    }
}

这样你就可以将你的页面和相应的css包装在正确的类中。