webpack单独构建scss文件与.vue组件里构建scss的一个坑

  在入口main.js里构建scss是通过引入模块的方式

import ‘./assets/_reset.scss‘;
import ‘./assets/_flex.scss‘;
import ‘./assets/_functions.scss‘;

  在.vue组件里是单独构建的

<style lang="scss" scoped>
    img {
        width: rem(300px);
    }

    #product, .gallery, .detail {
        width: rem(750px);
    }
</style>

  里面的rem()是_functions.scss里定义的一个scss函数

@function rem($px){
    @return ($px / 40px) * 1rem;
}

  然而这个rem()函数一直用不了,找问题找了很长时间,当然最后还是解决了。

  webpack在对main.js里引入的scss编译时,分别把每一个scss文件转成了css文件放在了html文档的head里面,这里有3个scss就直接转成了3个css文件

放在了head里(在webpack.config.js只引入scss的加载器,而不引入处理css插件的情况下)。因此,_functions.scss里的函数就没用了,scss的函数只有在一个

完整的大scss里才能对后面需要用到函数的地方起作用,而我们.vue里的scss和_functions.scss不在一个文件里,因此scss函数失效了。

  那有什么办法呢?

  一个办法就是把所有scss移出.vue,与所有scss文件放一起,通过scss的@import方式组成一个大scss文件,最后编译成一个css文件;

  另一个办法是将函数scss单独通过@import的方式引入需要该函数的.vue的文件里。

时间: 2024-12-25 21:42:03

webpack单独构建scss文件与.vue组件里构建scss的一个坑的相关文章

vue组件里定时器销毁问题

解决方案1: data() { return { timer: null // 定时器名称 } }, this.timer = (() => { // 某些操作 }, 1000) 最后在beforeDestroy()生命周期内清除定时器: beforeDestroy() { clearInterval(this.timer); this.timer = null; } 方案1有两点不好的地方: 它需要在这个组件实例中保存这个 timer,如果可以的话最好只有生命周期钩子可以访问到它.这并不算严重

vue.js项目构建之vue-router2.0的使用

vue-router2.0官方文档地址:http://router.vuejs.org/zh-cn/index.html 单页应用? 单页应用程序(SPA,single page web application). SPA其实就是整个网站只有一个页面,只改变页面的显示内容,不需要改变整个网页. vue.js 的单页面应用是基于路由和组件的.路由用于设定访问路径,并将路径和组件映射起来.页面内容切换这里就是组件的切换. vue-router是vue.js官方的路由插件,适合构建单页面应用. vue

在VUE项目中使用SCSS

这篇文章是记录的在VUE项目中SCSS的使用 vue项目上安装SCSS和开发入门 ① 使用vue-cli模板创建新项目:vue init webpack myvue ② 安装sass 依赖包 ,在cmd界面输入: npm  install sass-loader --save-devnpm install node-sass --sava-dev ③ 在build文件夹下的webpack.base.conf.js的rules里面添加配置 {test: /\.scss$/,loaders: ['s

vue单文件组件的构建

在很多Vue项目中,我们使用 Vue.component 来定义全局组件,这种方式在很多中小规模的项目中运作的很好. 但当在更复杂的项目中,就有了很大的弊端. 我们就可以用文件扩展名 .vue的单文件组件来解决这些问题. 我们建议你参考 webpack-simple ,只要遵循指示,你就能很快的运行一个用到 .vue 组件 . 这是vue-cli的项目模板. npm install -g vue-cli vue init webpack-simple my-project cd my-proje

Vue-cli 构建项目 的`.vue`组件中, scss中添加背景图路径问题

[解决方法]: 更改build/utils.js文件中的 ExtractTextPlugin 的 options配置. if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, publicPath: '../../', //注意: 此处根据路径, 自动更改 fallback: 'vue-style-loader' }) } else { return ['vue-style-loader'].concat(l

【原创】从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(二)

导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(未完待续)(四)Electron配置润色(未完待续)(五)预加载及自动更新(未完待续)(六)构建.发布整个项目(包括client和web)(未完待续) 摘要:上篇文章说到了如何新建工程,并启动一个最简单的Electron应用.“跑起来”了Electron,那就接着把Vue“跑起来”吧.有一点需要说明的是,webpack是贯穿这个系列始终的,我也是

webpack+vue+vueRouter模块化构建小demo实例超详细步骤(附截图、代码、入门篇)

说明:本demo使用yarn代替npm指令来下载一系列依赖,有详细指令说明:使用WebStorm下Terminal来输入指令: >开始(确认已经安装node环境和yarn包管理工具) 1.新建项目文件名为vuedemo 2.yarn add init  初始化项目 >安装项目依赖 3.yarn add vue 安装最新版vue 4.yarn add webpack webpack-dev-server  安装webpack,webpack-dev-server(是一个小型的Node.js Ex

JS组件系列——又一款MVVM组件:Vue(二:构建自己的Vue组件)

阅读目录 一.为什么组件很重要 二.Vue里面的组件基础知识 1.组件的概念 2.组件原理 3.组件使用 三.封装自己的Component 1.使用Component封装bootstrapTable 2.封装select 3.查看其他Vue框架源码 四.总结 正文 前言:转眼距离上篇 JS组件系列--又一款MVVM组件:Vue(一:30分钟搞定前端增删改查) 已有好几个月了,今天打算将它捡起来,发现好久不用,Vue相关技术点都生疏不少.经过这几个月的时间,Vue的发展也是异常迅猛,不过这好像和博

[vue]webpack&amp;vue组件工程化实践

webpack将app.vue(根节点)挂到html - 安装 npm i --save-dev [email protected] [email protected] // vue-loader: 1.解析.vue文件 2.会自动调用 vue-template-complier - webpack.config.js {test: /\.vue$/, use: 'vue-loader'}, - app.vue 1.render函数 app.vue的本质: 1.一个对象(组件,vNode) 2,