前端架构设计

简介: 最近在拜读一本《前端架构设计》的书,该书讲到前端架构师的用户是开发人员。所选择的工具、编写的代码、创建的流程,都是为了让开发人员能够构建出最高效的、不出错的、可扩展的和可持续优化的系统。

一、HTML


1)标签规范化

div乱炖是指嵌套多层div元素。为了保持简洁,语义化的标签是首选,应用样式所依靠的是HTML5元素名称和它们的层级关系,在标记中没有类名,往往写出层级的后代选择器。

2)模块化方法

前端开发人员的工作就是把视觉语言拆解成最小单元。拆解之后,可以创建规则,对这些最小单元进行重组。转换的目标是创建具有可扩展性和可维护性的代码库,以便如实地重现视觉语言能表达的任何东西。

3)模块化CSS

1. OOCSS(Object-Oriented CSS,面向对象的CSS)

有两个主要的原则:分离结构和外观,以及分离容器和内容。

分离结构和外观:将视觉特性定义为可复用的单元。

分离容器和内容:不再将元素位置作为样式的限定词。

2. SMACSS(Scalable and Modular Architecture for CSS,模块化架构的可扩展CSS)

把样式系统划分为5个具体类别。

基础:不添加CSS类,标签会以什么外观呈现。

布局:把页面分成一些区域。

模块:设计中的模块化、可复用的单元。

状态:在特定的状态或情况下,模块或布局的显示方式。

主题:可选的视觉外观层,可以让你更换不同主题。

3. BEM(Block Element Modifier,块元素修饰符)

只是一个CSS类名的命名规则。每个元素带有如下内容,例如toogle__detail--active。

块名:所属组件的名称

元素:元素在块里面的名称

修饰符:任何与块或元素相关联的修饰符


二、CSS


1)特性之争与继承之痛

选择器优先级:重写一个选择器时,总是需要注意它的优先级。

颜色重置:再次指定样式,并且要覆盖当前的背景颜色。

位置依赖:如果移动位置,样式将会改变。

多重继承:改变主体或侧边栏的样式,都会影响呈现。

深层嵌套:样式来源增加到了四个。

2)有益的原则

1. 单一职责原则:必须有单一的、高度聚焦的理由。


.canlendar-header {
}


2. 单一样式来源:不仅每个CSS类名被创建为单一用途,而且每个标签的样式也只有单一的来源。将来源放在组件文件里,避免样式散落在其它组件文件里。


.canlendar-header {
}
.blog .canlendar-header {
}


3. 组件修饰符:皮肤或子组件,能够定义一个组件在多个不同情况下的多种变化。修饰符的类名不再是父组件,而是组件本身的一部分。


.canlendar-header {
}
.canlendar-nested .canlendar-header {
}


三、设计系统和工作流


1)设计系统的规则列表

1. 永远不要给布局的子内容强加内边距和元素样式。布局只关注垂直对齐、水平对齐和文字间距。

2. 主题和别的数据属性值永远不要强制改变外观;它们必须保持布局、组件和元素可以应用于其上。

3. 组件总是贴着它的父容器的四个边,元素都没有上外边距和左外边距,所有的最后节点的外边距都会被清除。

4. 组件本身永远不要添加背景、宽度、浮动、内边距和外边距的样式,组件样式是组件内元素的样式。

5. 每个元素都有且只有一个唯一的且作用域只在组件内的CSS类名。所有的样式都是直接应用到这个选择器上,并且只有上下文和主体能修改元素的样式。

6. 永远不要在元素上使用上外边距,第一个元素总是贴着它所在组件的顶部。

7 JavaScript永远不要绑定任何元素的CSS类名,选中元素通过数据属性实现。

2)现代工作流

1. 使用事件跟踪和用户故事来正确地跟踪工作流和标记那些完成了的任务。

2. 搭建开发环境来测试代码。

3. 构建部署流程,用于编译、验证和测试代码。

4. 在任何代码被采纳之前,都要获取需求方的反馈。

5. 把提交的代码推送到中心代码库。

6. 采用这样一个部署系统:可以无缝地添加一些新代码到生产环境;在需要的时候,还可以回滚代码还原系统。

3)现代的开发工作流

1. 需求

需求所面向的人群为:交互设计、视觉设计、后端开发以及前端开发人员。让四个领域的人员共同参与需求收集的过程,可以更早地发现需求中存在的问题和不足。

2. 原型设计

原型设计提供了一个讨论和反馈的公共空间,它把丰满的想法实现在桌面和移动浏览器中。在原型中,想法可以成型、摒弃、重拾、打磨。

3. 程序开发

开发人员的工作就是收集和处理来自数据库的数据,然后把它们放置到对应的标记上。

如果原型和网站共有一套CSS和JavaScript,那么开发人员应该完成一个功能完整、样式齐全、交互良好、响应及时、通过检查和达到标准的产品。测试人员可以根据原型设计来一步步地检验开发的内容。

4)任务处理器(gulp)

1. 安装需要的Ruby库

2. 编译Sass、合并JavaScript、加载第三方JavaScript库

3. 把SVG文件编译成图标字体

4. 对图片进行处理,减少文件体积,裁剪成各种尺寸

5. 同步到远程服务器

6. 运行可视化的回归测试

7. 自动生成浏览器厂商的前缀

8. 编译组件库

9. 优化Sass、CSS、JavaScript、JSON等

10. 基于JSON模式来验证数据

11. 启动Node和PHP服务器

12. 监听文件改动来刷新浏览器

 

四、测试核心和文档核心


1)视觉还原测试

1. 基于页面的比较,Wraith(https://github.com/BBC-News/wraith

2. 基于组件的比较,BackstopJS(https://github.com/garris/BackstopJS

3. CSS单位测试,Quixote(https://github.com/jamesshore/quixote

4. 基于无头浏览器的测试,Gemini(https://github.com/gemini-testing/gemini

5. 基于桌面浏览器的测试,Selenium服务器(https://www.seleniumhq.org/download

6. 包含脚步库文件,CasperJS(http://casperjs.org

7. 基于图形用户界面的比较工具,Diffux项目(https://github.com/diffux/diffux

8. 基于命令行的比较工具,PhantomCSS(https://github.com/HuddleEng/PhantomCSS

2)样式文档

SassDoc(http://sassdoc.com)可记录Sass的变量、混合、继承和函数的工具。

3)图形库

原子设计原则(http://patternlab.io)是一种构建网站设计系统的方法论。首先把网页常用元素分解成各个尺寸的模式,然后再描述这些模式组合成一个完整网页的方式。源自是构造网站、标题、样式、图片和表单元素的基本结构单元。在网页设计中,分子可能代表一个搜索表单、媒体块或导航栏。

 


相关文章
|
9月前
|
前端开发
微前端架构:拆分与整合的艺术
微前端架构是一种全新的前端架构模式,通过将前端应用拆分成小块,实现模块化开发和独立部署,从而提升了前端开发的灵活性和可维护性。本文将深入探讨微前端架构的概念、优势以及实践中的关键问题,帮助读者更好地理解和应用微前端架构。
189 3
|
9月前
|
前端开发 JavaScript API
微前端:一种新型的前端架构方法
微前端:一种新型的前端架构方法
255 0
|
设计模式 资源调度 Kubernetes
微前端应用 乾坤 开发实践
乾坤作为一款微前端应用框架,可以有效的实现前端应用程序的模块化设计,代码复用和可维护性。下面我们来通过实际开发来看看乾坤的使用方式以及实践。
|
4月前
|
人工智能 前端开发 JavaScript
前端架构思考 :专注于多框架的并存可能并不是唯一的方向 — 探讨大模型时代前端的分层式微前端架构
随着前端技术的发展,微前端架构成为应对复杂大型应用的流行方案,允许多个团队使用不同技术栈并将其模块化集成。然而,这种设计在高交互性需求的应用中存在局限,如音视频处理、AI集成等。本文探讨了传统微前端架构的不足,并提出了一种新的分层式微前端架构,通过展示层与业务层的分离及基于功能的横向拆分,以更好地适应现代前端需求。
103 0
|
4月前
|
存储 监控 前端开发
掌握微前端架构:构建未来前端应用的基石
【10月更文挑战第12天】随着前端技术的发展,传统的单体应用架构已无法满足现代应用的需求。微前端架构通过将大型应用拆分为独立的小模块,提供了更高的灵活性、可维护性和快速迭代能力。本文介绍了微前端架构的概念、核心优势及实施步骤,并探讨了其在复杂应用中的应用及实战技巧。
|
4月前
|
前端开发 JavaScript API
前端的全栈之路Meteor篇(完):关于前后端分离及与各框架的对比,浅析分离之下的潜在耦合
本文探讨了Meteor.js这一全栈JavaScript框架的特点与优势,特别是在前后端分离架构中的应用。Meteor通过共享数据结构和简化全栈开发流程,实现了前后端的紧密协作。文章还对比了其他全栈框架,如Next.js、Nuxt.js等,分析了各自的优势与适用场景,最后讨论了通过定义文档归属者和用户专有数据集简化后端构建及端云数据同步的方法。
134 0
|
6月前
|
敏捷开发 设计模式 前端开发
实践总结|前端架构设计的一点考究
本文总结了作者在日常/大促业务的“敏捷”开发过程中产生的疑惑,并尝试做出思考得到一些解决思路和方案。在前端开发和实践过程中,梳理了一些简单设计方案可以缓解当时 “头疼” 的几个敏捷迭代问题,并实践在项目迭代中。
|
6月前
|
前端开发 持续交付 开发者
探索现代前端开发中的微前端架构
微前端架构作为一种新兴的前端开发模式,旨在解决传统单体前端应用在可维护性和可扩展性方面的挑战。本文将深入探讨微前端的基本概念、实施方式以及其在提升团队协作效率和应用灵活性方面的优势。同时,我们还将探讨微前端架构的实现细节和常见的技术选型,以帮助开发者在实际项目中成功应用这一理念。
|
9月前
|
前端开发 JavaScript 安全
前端模块化发展
前端模块化发展
|
9月前
|
设计模式 开发框架 前端开发
实践总结|前端架构设计的一点考究(下)
作者将【DDD、六边形、洋葱、清洁、CQRS】进行深入学习并梳理总结的一个前端架构设计,并且经历一定应用实践的考验。
205 0

热门文章

最新文章