常常有人会问,使用 Sass 进行开发,那么是不是直接通过“<link>”引用“.scss”或“.sass”文件呢?

那么这里告诉大家,在项目中还是引用“.css”文件,Sass 只不过是做为一个预处理工具,提前帮你做事情,只有你需要时候,他才有攻效。

这样一来,也就有了这章需要介绍的内容—— Sass 的编译。因为 Sass 开发之后,要让 Web 页面能调用 Sass 写好的东西,就得有这么一个过程,这个过程就称之为 Sass 编译过程。Sass 的编译有多种方法:

  • 命令编译
  • GUI工具编译
  • 自动化编译

一、命令编译

命令编译是指使用你电脑中的命令终端,通过输入 Sass 指令来编译 Sass。这种编译方式是最直接也是最简单的一种方式。因为只需要在你的命令终端输入:

单文件编译:

sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

这是对一个单文件进行编译,如果想对整个项目所有 Sass 文件编译成 CSS 文件,可以这样操作:

多文件编译:

sass sass/:css/

上面的命令表示将项目中“sass”文件夹中所有“.scss”(“.sass”)文件编译成“.css”文件,并且将这些 CSS 文件都放在项目中“css”文件夹中。

缺点及解决方法:

在实际编译过程中,你会发现上面的命令,只能一次性编译。每次个性保存“.scss”文件之后,都得重新执行一次这样的命令。如此操作太麻烦,其实还有一种方法,就是在编译 Sass 时,开启“watch”功能,这样只要你的代码进行任保修改,都能自动监测到代码的变化,并且给你直接编译出来:

sass --watch <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

当然,使用 sass 命令编译时,可以带很多的参数:

watch 举例:

来看一个简单的示例,假设我本地有一个项目,我要把项目中“bootstrap.scss”编译出“bootstrap.css”文件,并且将编译出来的文件放在“css”文件夹中,我就可以在我的命令终端中执行:

sass --watch sass/bootstrap.scss:css/bootstrap.css

一旦我的 bootstrap.scss 文件有任何修改,只要我重新保存了修改的文件,命令终端就能监测,并重新编译出文件:

二、GUI 界面工具编译

或许你会说,我一直讨厌使用命令来做事情,我喜欢那种能看得到的界面操作。那么你可以考虑使用 GUI 界面工具来对 Sass 进行编译。当然不同的 GUI 工具操作方法略有不同。如果在此也一一对编译的界面工具做详细的介绍。我们可能需要写一本书来介绍这些编译工具的操作了。所以我们这里做一下简单介绍,对于 GUI 界面编译工具,目前较为流行的主要有:

  1. Koala (http://koala-app.com/)
  2. Compass.app(http://compass.kkbox.com/
  3. Scout(http://mhs.github.io/scout-app/
  4. CodeKit(https://incident57.com/codekit/index.html
  5. Prepros(https://prepros.io/

相比之下,我比较推荐使用以下两个:

三、自动化编译

喜欢自动化研究的同学,应该都知道 Grunt 和 Gulp 这两个东东。如果您正在使用其中的任何一种,那么你也可以通过他们来配置 Sass 的编译。这里仅列出两个示例代码(具体情况要根据您的项目环境来做一定的修改,不建议生搬硬套,容易发生命案,呵呵。

1、Grunt 配置 Sass 编译的示例代码

module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dist: {
files: {
'style/style.css' : 'sass/style.scss'
}
}
},
watch: {
css: {
files: '**/*.scss',
tasks: ['sass']
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default',['watch']);
}

2、Gulp 配置 Sass 编译的示例代码

var gulp = require('gulp');
var sass = require('gulp-sass'); gulp.task('sass', function () {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));
}); gulp.task('watch', function() {
gulp.watch('scss/*.scss', ['sass']);
}); gulp.task('default', ['sass','watch']);

  

  

最新文章

  1. MVVM框架下,WPF实现Datagrid里的全选和选择
  2. POJ 1986 Distance Queries(Tarjan离线法求LCA)
  3. loj 1165(bfs+康托展开)
  4. 【HTML5】audio音频
  5. 。。。验证码,发送不同的GET请求。。。
  6. Spring学习总结(2)——Spring IOC的前世今生
  7. Rewrite规则简介
  8. Docker 监控实战
  9. Python prettytable的使用方法
  10. poj2286The Rotation Game(迭代加深dfs)
  11. android获取屏幕分辨率
  12. while 、do...while 、for
  13. javascript 闭包基础分享
  14. spring mvc后台接收中文乱码
  15. C语言基础 - 输出1-100万之间的素数
  16. 在windows中,使用SSH登录VMware ubuntu linux虚拟机
  17. ssm+maven多模块项目整合
  18. 学习笔记--python中使用多进程、多线程加速文本预处理
  19. ConcurrentHashMap 解读
  20. 如何访问https的网站?-【httpclient】

热门文章

  1. freemarker list (长度,遍历,下标,嵌套,排序)
  2. Filter案例
  3. 5天学会jaxws-webservice编程第一天
  4. 标准I/O库之标准输入、标准输出和标准出错
  5. 用Java对xml文档进行遍历,更新,创建,删除
  6. NIO学习:异步IO实例
  7. oracle数据库入门
  8. 关于FPGA异步时钟采样--结绳法的点点滴滴
  9. oracle数据库没有监听服务与实例服务(OracleServicesXX)的解决方法
  10. SQL Server数据的导入导出