Sass 构建之 7-1模式
Sass 项目结构之7-1模式
7-1模式的结构:7个文件夹,1个文件。
基本上,你需要将所有的部件放进7个不同的文件夹和一个位于根目录的文件(通常用main.scss或者app.scss)
编译时会根据main.scss引用所有文件夹而形成一个CSS样式表
7个文件夹
abstracts/base/components/layout/pages/themes/vendors/
1个文件
main.scss
Base文件夹
base/文件夹存放项目中的模板文件。定义一些HTML元素公认的标准样式。
比如:Reset.css 和 normalize.css 等
_base.scss_reset.scss_typography.scss_animations.scss
Layout文件夹
layout/文件夹存放构建网站或者应用很小使用到的布局部分。常见的如:
_grid.scss_header.scss_footer.scss_sidebar.scss_forms.scss_navigation.scss
Components文件夹
该文件夹包含各类具体模块,基本上是所有的独立模块,划分可以参考一些UI库的来划分,如:
_media.scss_carousel.scss_thumbnails.scss_alert.scss_badge.scss_button.scss_modal.scss
等等,这个文件夹理应做到每个文件对应一个独立的组件,或者在该目录下再开个目录button/
用components/目录下的_button.scss做链接,链接button/中所有文件
_button.scss文件只负责@import,而实际功能在文件夹button/所有文件中
一般做链接的文件不该用_前缀,而是用button.scss来区分,实际功能才用_前缀
//button.scss
@import "./button/_blue-button";
@import "./button/_red-button";
Pages文件夹
存放页面文件,就是那个页面内具有独特的样式,如:
_home.scss_index.scss
Themes文件夹
主题文件夹,类似Bootstrap中的_variables.scss文件,存放着整个app的变量,组件的样式值基本引用于该文件。
只要改变_variables.scss中的值,就可以切换一种主题。
_theme.scss_admin.scss_variables.scss
Abstracts文件夹
辅助工具文件夹,可以存放每一个全局变量、函数、混合宏以及占位符。如:
_variables.scss_mixins.scss_functions.scss_placeholders.scss
文件夹名字和这些文件只是参考,不喜欢也可以utils,如果_mixins.scss很大,
可以在该文件夹下再创一个mixins/,mixins.scss充当链接@import
Vendors文件夹
外来项目文件夹,存放一些外部库和框架(Normalize,Bootstrap,jQueryUI等)
_normalize.scss_bootstrap.scss_jquery-ui.scss
入口文件
主文件,main.scss,除@import和注释外,该文件不应该包含任何其他代码
为了保持可读性,主文件应遵循如下准则:
- 每个
@import引用一个文件; - 每个
@import单独一行; - 从相同文件夹中引入的文件之间不用空行;
- 从不同文件夹中引入的文件之间空行分隔;
- 忽略文件扩展名和下划线前缀
下面以一个单页面
app.scss文件为例
这个案例的模式我是参考bootstrap的框架的,非7-1模式,任何模式都只供参考
具体怎么用,请按具体业务应用使用
_global.scss_animations.scssapp.scssmixins/functions/components/containers/
//参考bootstrap架构
//xxx : 表示同理
//app.scss
//导入变量
@import 'variables';
//导入mixins
@import './mixins/clearfix';
@import './mixins/xxx';
//导入functions
@import './functions/px2rem'
@import './functions/xxx';
//导入动画
@import 'animations'
//导入基本设置,排版、html标签等全局样式
@import 'global.scss';
//导入components
@import './component/button';
@import './component/xxx';
//导入containers
@import './containers/index';
@import './containers/xxx';
总结
7-1模式,只供参考,具体怎么搭,最好按项目来。
如果项目比较小,用7-1模式就不必要了,参考bootstrap的架构就可以了
如果项目很大,采用7-1模式是个不错的选择。
最主要的是学习其中项目管理的思想。
参考资料链接
Sass 构建之 7-1模式的更多相关文章
- Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式
昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...
- 利用sass构建组件化的ui库
创建公用的Sass项目模板 在做项目时,不管什么项目,他们之间总是有一些可以共用的部分.比如说重置样式.公用样式.模块组件.UI库等.那么在Sass项目中也是如此.为了避免在每个项目中做一些相同的事情 ...
- Item 2---遇到构造器具有多个参数时,要考虑用构建器;Builder模式
问题,面对这种一个构造器具备多个参数的问题,现有的做法是使用重叠构造器的方式,该方式存在的问题: public class NutritionFacts { private final int ser ...
- 设计模式---对象创建模式之构建器模式(Builder)
一:概念 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象 ...
- vue、rollup、sass、requirejs组成的vueManager
近段时间本人一直在思考如何基于vue搭建一个中后端管理系统的通用基础前端解决方案.思考的主要问题点如下: 如何使各个子业务模块的按需加载 css预处理方案的选择 如何引入现代的前端工程思想,也就是工程 ...
- Vue构建项目
构建Vue项目 按照官网教程安装 //先安装脚手架 cnpm i -g vue-cli //查看项目目标列表: webpack browserify pwa 等项目模板 vue list //使用we ...
- iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试
iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...
- [Head First设计模式]山西面馆中的设计模式——建造者模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 引言 将学习融入生活中,是件很happy的事情,不会感 ...
- 深入浅出设计模式——建造者模式(Builder Pattern)
模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单 ...
随机推荐
- java 程序从linux 上接收不可见字符
近期在写一个简单的小java程序,希望在运行java 程序时,从shell 中接收参数,并且参数的内容为不可见字符. 开始时还觉得可以使用"\"之类的转义符来写,后来发现java程 ...
- JAVA团队开发手册 - 3. 开发流程
开发流程 对于一个项目,最大的问题就是如何拆解为任务,分配到合适的人手里,并在有限的时间内完成它. 就像做建筑工程一样,其实做IT也是可以量化的,可能有的人砌砖砌得慢一些,有的人快一些. 但是我们把整 ...
- ios 常用库
SwiftHTTP 网络请求库 SwiftyJSON json解析库 SnapKit 自动布局库 Kingfisher 图像加载库 WRCycleScr ...
- Java | 基础归纳 | 随机数应用
Java中一般有两种随机数,一个是Math中random()方法,一个是Random类. Math.random();//返回0~1的中随机数值 Random random = new Random( ...
- iOS蓝牙连接流程介绍-1
蓝牙连接流程介绍 1.1-程序员找女朋友流程介绍 0.程序员找女朋友参与者 1.你 2.受害者(女性同胞) (1)她的性格1 性格的特点 (2)她的性格2 分析性格的特点 1.寻找女性 寻尽身边一 ...
- python基本的数据类型
一.python的基本数据类型 int => 整数,主要用来进行数学运算 str ==> 字符串 可以用来保存少量数据并进行相应操作 bool ==> 判断真假,True,False ...
- CATIA 基础详解 第01章 CATIA初认识
1.1 CATIA V5产品介绍 CATIA V5是基于美国IBM公司与法国达索系统公司(Dassault Systèmes)软件解决方案推出的新一代产品,它致力于满足以设计流程为中心的设计需求.它提 ...
- LSP5513
LSP5513:宽范围高效的DC-DC(输入:4.5~27V;输出0.925~24V,3A),输出电流达3A
- 生产环境中mysql+keepalive双主模式,keepalive守护进程实现双主切换提供数据库服务
mysql+keepalive实现浮动地址自动切换,由于keepalive无自带健康检查功能,所以必须自动编写健康检查守护进程(监控DB1和DB2数据库的监控状态,来保证浮动地址双机自动切换.) 一, ...
- Spark Mllib里如何将trainDara训练数据文件里提取第M到第N字段(图文详解)
不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集