如何使用iron-router

时间:2015-07-23 10:35:38

标签: meteor iron-router

我正在Meteor中编写一个项目,有客户端和管理员以及他们的JS,CSS文件不同所以我需要为他们创建不同的head.html,如何导入到这个“head”元素(脚本,风格等)使用铁路由器?

1 个答案:

答案 0 :(得分:1)

我将在前言中说,如果您在Meteor中加载所有CSS和JS,例如:

<link href="styles.css" rel="stylesheet" />
<script src="script.js"></script>

你可能做错了。 Meteor自动加载你放在项目目录中的所有CSS和JS。如果您需要从外部源动态加载CSS或JS,请参阅https://stackoverflow.com/a/14521217/2723753

但是假设你知道这一点,那就不是一个简单的方法来做你所要求的。创建两个应用程序并创建软件包可能最容易,这样您就可以在应用程序之间共享一些代码/资产。

如果你想在一个应用程序中使用两个不同的铁路由器布局/样式,我所采用的方法是使用london:body-class包的修改版本,将布局名称和路径名称设置为类在html和body元素上。

然后在你的CSS中你可以参考例如。

body.AdminLayout button {
    background-color: blue;
}

body.AdminLayout header {
    background-color: red;
}

我使用Stylus因为我可以使用颜色等变量,因为规则可以嵌套,节省大量时间:

variables.import.styl:

$some_color_variable = rgba(r,g,b,a)
$another_color_variable = rgba(r,g,b,a)
$yet_another_color = rgba(r,g,b,a)

admin_layout.styl:

@import 'variables.import'

html.AdminLayout
    font-size 20px

body.AdminLayout
    button
        background-color $some_color_variable

    header
        background-color $another_color_variable

    // etc. etc.

public_layout.styl:

@import 'variables.import'

body.PublicLayout
    button
        background-color $yet_another_color

    // etc. etc.

我现在就把它留在那里,如果你澄清了你想要实现的目标,我可以改进这个答案......