Vue js 和 scss 或 Sass

Posted

技术标签:

【中文标题】Vue js 和 scss 或 Sass【英文标题】:Vue js and scss or Sass 【发布时间】:2018-04-05 01:06:49 【问题描述】:

我更喜欢重构,所以在与我的 html 相同的文件中包含样式让我感到厌烦。

我不想使用<style> html 标记,这些标记充满了与我在每个组件中的函数和方法交织在一起的 css。

我想继续使用 sass 或 scss 文件。 (我自己的单个文件 + bootstrap 和我在网上找到的其他通用 scss 文件)。

我该怎么做?

我试过了:

import Vue from 'vue'
import App from './App'
import router from './router'
import './assets/scss/App.scss' <- this is the line I added that broke the app.

Vue.config.productionTip = false

new Vue(
  el: '#app',
  router,
  template: '<App/>',
  components:  App 
)

在我的 main.js 中

但我收到 404 错误:

更新:

看了这个:What is the difference between linking stylesheets and requiring them in Webpack + VueJs? 好奇我是否应该切换到使用链接?我试过了,但我不知道我应该把它放在哪里。

我应该指定我从这个脚手架开始:https://github.com/vuejs/vue-cli

第二次更新:

我一直在关注以下指南:https://medium.com/@mahesh.ks/using-sass-scss-in-vue-js-2-d472af0facf9

【问题讨论】:

“require('./assets/scss/App.scss')”有效吗? @Wouter no :( ... 两者对我来说都很好,无法重现:l(我也使用了 vue-cli) 查看更新的 OP,如果知道我从哪里开始有帮助,请告诉我。 SACC 或 SCSS 文件需要编译器,你将如何在运行时编译它们? 【参考方案1】:

在单文件组件中包含链接的方式不太流行(并且由于某种原因没有很好的记录):

</script>

<style src="./assets/scss/App.scss"></style>
<style>
  /* Your component styles go here */
</style>

在我看来,简单而有效! :)

编辑:我要提一下,既然 Webpack 必须加载这个文件,那么你应该在使用 vue-cli 进行设置时选择“使用 Sass”选项。

编辑 2:使用内置 Sass/SCSS 支持从头开始设置项目的步骤:

在您要放置新项目的目录中,运行: vue init webpack-simple your-dir-name 按照提示操作仔细并注意第四个选项(author 之后)询问“使用 sass?(y/N)” 输入y 您的项目现在已经为 webpack 配置了 sass! :)

如果您忘记为现有项目执行此操作,您可以从这里作弊:

https://github.com/vuejs-templates/webpack-simple/blob/master/template/webpack.config.js

rules: [
  
    test: /\.vue$/,
    loader: 'vue-loader',
    options: 
      loaders: 
        'scss': 'vue-style-loader!css-loader!sass-loader',
        'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax'
      
    
  ,

【讨论】:

太接近了!!!!是的!我确实忘记这样做了。即使使用有用的代码,它仍然无法加载我的 scss。这是我的 build/webpack.base.conf.js :pastebin.com/GAgwR0Ha 为此我做了很多事情:我的 package.json 得到了 "dependencies": "vue": "^2.5.2", "vue-router": "^3.0.1", "node-sass": "^4.5.3", "sass-loader": "^3.2.3", "style-loader": "^0.19.0", "extract-text-webpack-plugin": "^3.0.1" , "devDependencies": "sinon": "^4.0.1", "webpack": "^3.6.0", "webpack-dev-server": "^2.9.3", "vue-loader": "^13.3.0" 但是您在“使用 sass”的设置过程中谈到的一个简单选项听起来很棒!我想要那个选项。如何以一种让我遇到此提示的方式从头开始? 我编辑了我的答案,所以它比评论更容易阅读(涉及语法突出显示)【参考方案2】:

不要在javascript 部分中导入它,而是将其切换为从css 部分导入...我知道你:

我不想使用 html 标签。

但我假设你的意思是你想要compiled css 而不是普通的 css。你可以这样试试:

<style lang="sass">
    @import '../assets/scss/App.scss';

    .others_css_classes 
      ...
    
 </style>

并在build/wepack.base.conf.js 配置文件中添加部分:

 
   test: /\.scss$/, 
   loaders: [ 'style-loader', 'css-loader', 'sass-loader' ] 
 ,

这是你分享的link的混合,我提取了here的一部分

如果你从 vue-cli 安装了 Vue,你应该(自动)在 /build 中安装 webpack(如果你使用了官方的 webpack 模板)。

希望对您有所帮助!

【讨论】:

听起来不错,问题是我链接的脚手架的加载程序没有开始处理 scss 文件。我将如何升级它?我在这里有一个***:***.com/questions/46914294/…

以上是关于Vue js 和 scss 或 Sass的主要内容,如果未能解决你的问题,请参考以下文章

vue部分问题

nuxt.js使用scss

Vue js 和 scss 或 Sass

Vue SSR 项目 Nuxt.js 框架之《如何引入第三方UI框架element-ui》

安装scss

个人技术总结