Vue.js 为什么我的前端代码在本地与生产环境中的表现不同?

Vue.js 为什么我的前端代码在本地与生产环境中的表现不同?,vue.js,heroku,bootstrap-vue,Vue.js,Heroku,Bootstrap Vue,目前我只有一个BootstrapVue VueJS前端项目,我有4张扑克牌,理想情况下我希望保留在一行上(就像本地一样),但在生产中查看时会堆叠(如果有区别,使用Heroku) 目前的代码如下所示: <div flex-wrap="nowrap" class="row d-flex nowrap mt-3" justify-content="space-between"

目前我只有一个BootstrapVue VueJS前端项目,我有4张扑克牌,理想情况下我希望保留在一行上(就像本地一样),但在生产中查看时会堆叠(如果有区别,使用Heroku)

目前的代码如下所示:

    <div 
        flex-wrap="nowrap" 
        class="row d-flex nowrap mt-3" 
        justify-content="space-between" 
        width="100vw"
    >
        <b-container>
            <b-row>
                <b-col>
                    <PlayingCard/>
                </b-col>
                ....etc for the other cards....
             </b-row>
        </b-container>
    </div>

..等其他卡。。。。

我已经玩了很多不同的类,证明内容和所有的东西,但不断得到不同的本地与产品的结果。我可以确认Heroku上的代码是最新的,因为它会随着每次新提交重新部署,而且我在尝试修复此样式问题后添加了一些新功能,这些功能会正确显示。

这样的样式问题最常见于CSS的范围问题。如果您在本地检查元素,您可能会看到仅应用了本地样式,而如果您在生产中检查元素,您会看到选择器包含更多CSS(由于两个不同组件中的选择器相同),或者另一个选择器一起应用

您会遇到这个问题,因为在开发模式下,它只加载您正在查看的组件的CSS。在生产模式中,所有组件的所有CSS都是组合的

要解决此问题,您有几个选项:

  • 您可以在样式标记上使用
    范围
    属性。Vue将自动在组件上添加数据属性,并使用该数据属性确定样式范围。这通常不能很好地处理从以前位置移出的弹出窗口之类的东西
  • 
    导出默认值{
    //...
    }
    钮扣{
    //这仅为该组件中的按钮设置样式,而不是应用程序中的每个按钮
    }
    
  • 如果您还需要设置子组件的样式,您可以在根元素上使用一个类,并设置与之相关的所有样式。您需要在应用程序中使该类成为唯一的名称,但如果您只使用组件的名称,这应该不会有问题
  • 
    导出默认值{
    姓名:'卡'
    }
    公司卡{
    钮扣{
    //现在,作为我们组件的后代的所有按钮都已设置样式。
    }
    }
    
    这样的样式问题最常见的原因是CSS的范围问题。如果您在本地检查元素,您可能会看到仅应用了本地样式,而如果您在生产中检查元素,您会看到选择器包含更多CSS(由于两个不同组件中的选择器相同),或者另一个选择器一起应用

    您会遇到这个问题,因为在开发模式下,它只加载您正在查看的组件的CSS。在生产模式中,所有组件的所有CSS都是组合的

    要解决此问题,您有几个选项:

  • 您可以在样式标记上使用
    范围
    属性。Vue将自动在组件上添加数据属性,并使用该数据属性确定样式范围。这通常不能很好地处理从以前位置移出的弹出窗口之类的东西
  • 
    导出默认值{
    //...
    }
    钮扣{
    //这仅为该组件中的按钮设置样式,而不是应用程序中的每个按钮
    }
    
  • 如果您还需要设置子组件的样式,您可以在根元素上使用一个类,并设置与之相关的所有样式。您需要在应用程序中使该类成为唯一的名称,但如果您只使用组件的名称,这应该不会有问题
  • 
    导出默认值{
    姓名:'卡'
    }
    公司卡{
    钮扣{
    //现在,作为我们组件的后代的所有按钮都已设置样式。
    }
    }
    
    因此,我使用了作用域路由并将代码移到其中,修复了我在作用域样式上遇到的“属性值无效”错误。从我的观点来看,本地vs prod在这一点上看起来是完全相同的,但是我仍然有完全相同的问题。代码中唯一存在的“flex wrap”值是nowrap的作用域样式,这是我想要的,但生产仍然无法按预期运行。因此,我使用作用域路由并将代码移到其中,修复了我在作用域样式上遇到的“无效属性值”错误。从我的观点来看,本地vs prod在这一点上看起来是完全相同的,但是我仍然有完全相同的问题。代码中唯一存在的“flex wrap”值是nowrap的作用域样式,这正是我想要的,但生产仍然无法按预期运行。
    <template>
      <div>
        <!-- something here -->
      </div>
    </template>
    
    <script>
    export default {
      //...
    }
    </script>
    
    <style scoped>
    button {
      // This only styles the buttons in this component, rather than every button in the application
    }
    </style>
    
    <template>
      <div class="comp-card">
        <!-- something here -->
      </div>
    </template>
    
    <script>
    export default {
      name: 'Card'
    }
    </script>
    
    <style lang="scss">
    .comp-card {
      button {
        // All buttons that are descendants of our component are now styled.
      }
    }
    </style>