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.scss
- app.scss
- mixins/
- 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)
		模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单 ... 
随机推荐
- 2014-6-28 NOIP模拟赛
			[今天我出的三道题目全部是图论哦,请大家轻虐] 1.魔术球问题弱化版(ball.c/.cpp/.pas) 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,…的 ... 
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session优缺点
			● 数据存储在服务器,安全. ● session能保存Object类型数据,也就是说能存储任意数据. ● 可存储的数据大小,理论上是无限制的. ● 因为数据存储在服务器端,当用户比较多时,会占 ... 
- nutzboot dubbo zookeeper简单使用
			提供方和消费方properties 配置基本差不多 nutz.application.name这个值不一样 提供方配置自动端口就行server.port=0 消费方一般需要对外提供web服务配置ip和 ... 
- idea | SpringBoot项目热加载
			第一步: 在pom文件添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <arti ... 
- jmeter beanshell处理请求响应结果时Unicode编码转为中文
			在Test Plan下创建一个后置BeanShell PostProcessor,粘贴如下代码即可: String s=new String(prev.getResponseData()," ... 
- JS  两个数组合并
			让我们先考虑下面这情况: 代码如下: var a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];var b = [ "foo", "bar", ... 
- hdu2586 LCA带边权的Targan算法
			bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=2586 #include<bits/stdc++.h> using names ... 
- mysql(MySQL客户端连接工具)
			在MySQL提供的工具中,DBA使用最频繁的莫过于mysql.这里的mysql不是指MySQL服务,也不是mysql数据库,而是连接数据库的客户端工具.类似于Oracle的sqlplus. 语法: m ... 
- websocket~~原理详细解说优秀文(转)
			新项目有个实时刷新新消息的功能,具体的有实时更新别人的回复,实时推送验证请求等功能, 在网上发现了关于websocket的优秀文,地址: https://marvelapp.com/1759hgb6/ ... 
- 《JavaScript设计模式》笔记之第一、二章:富有表现力的JavaScript 和 接口
			第一章 创建一个类 方法一: var Anim = function() { ... }; Anim.prototype.start = functi ... 
