`

良好前端架构的搭建

 
阅读更多

建立一个好的前端架构是开始开发 Web 应用或网站的一个基本步骤。良好的实践和编码常规是必不可少的,但是结构呢?我们如何在可控的时间内构思一个好的架构?但最重要的事情是,我们应该从哪里开始?

当我开始思考这个问题时,我意识到一些事情:

我想要一个多页面项目(一个 Web 应用或网站);我希望我的项目支持不同的屏幕尺寸和分辨率,换句话说,我希望它是响应式的;我希望最终产品是可被维护的;我希望最终产品性能上是出色的;我希望可以为将来的项目重复使用相同的模板。

正确的工具

现在我们拥有大量很酷的工具可以用于现代化前端开发工作流中。因此,面对第 1、2 点我告诉自己我需要一个基于 CSS 体系结构的中断点(能够帮我支持不同的设备和桌面的大小)。而另一个方面大量的 CSS 和文件可能会有点混乱(这违背了第 3 点),这就是为什么我决定开始使用 CSS 预处理器的原因。关于第 4 点,答案很简单,我决定使用 Gruntjs。而第 5 点在我看来 Yeoman 是一个很好的解决方案。

组织工作流

每个前端项目总是包含库、jQuery 插件和大量的 JavaScript&CSS 文件(或本文例子中的 SCSS)以达到不同的目的和目标。使用不同的技术手段混合所有的元素,并把它们放在一起,这意味着建立一个前端工作流。我们会发现自己在管理一个巨大的、涉及不同技术的工作流。这就是为什么我们需要将所有东西通过遵循一种模式或公约置入文件夹中,以此来保持清晰、整洁。这对我们而言是非常重要的。

我们可以在巨大的组合中选择分解所有基本的前端组件,如以下所示:

SCSS 文件 scripts(脚本)views(视图)

当然我们还可以继续细分:

SCSS

variables(变量)mixins(混合类)公共部分到每一个布局单一布局

js

库(如:jquery、angularjs、gAnalytics 等等)插件(通常为 jquery 插件)控制器(我的意思是类似 angularjs 这样的控制器)

在一个基于模板的架构(例如使用 blade.php 或 jadewithnodejs)我们也可以将视图分割如下:

views

公共部分到每一个视图单一视图

视图这块在本文不做讨论,因为我假设项目里每个页面或布局只有一个视图(一个 HTML 文件)。

基于这些初步的考虑,下面展示的是我的文件夹树:

文件夹树注解

imgs

存放所有的图片文件:.png、.jpg、.jpeg、壁纸等。

示例:icon.png、home-background.jpeg、userAvatar.jpg。

js(主文件夹)

存放.js 文件。子文件夹组织情况如下:

\controllers(子文件夹)

存放 angular 控制器,每一个控制器都有一个与对应视图相同的名字。比如,如果 home.html 需要一个 angular 控制器,你可以创建一个像这样的文件:project\js\controllers\home.js。

示例:home.js、user-registration.js、user-login.js

\libs(子文件夹)

用于存放 JavaScript 库,当然这里不包含插件。

示例:jquery-latest.js、angular.js、googleAnalytics.js

\plugins(子文件夹)

插件需要依赖关系来工作,而库不需要,这也就是为什么这里创建两个文件夹的原因。

示例:jquery-fancyInput.js、restangular.js、customPlugin.js、jquery-airport.js

\views(子文件夹)

存放所有表象的东西,每个文件都与对应的视图名称相同。例如,如果 home.html 需要一些效果、材料以及插件初始值,你可以创建一个像这样的文件:project\js\views\home.js。

示例:home-animations.js、user-registration.js、user-login.js、site-animations.js

CSS(主文件夹)

这个文件夹包含了所有从主 SCSS 文件中生成的 CSS。例如 home.scss 会在该文件中生成对应的 home.css 文件。

即使是对 CSS 文件,我也会区分库和插件,这里有些 CSS 库例子。

示例:_meyers-reset.scss、_normalize.scss、_animate.scss、_960gridSystem.scss

CSS 文件包含于该文件夹中是使 JavaScript 插件工作的必备风格。

示例:_jquery-fancyInput.scss、_jqueryTooltip.scss

\framework(子文件夹)

我决定在这个目录中存放 scss 文件以共享到整个项目页面,框架子文件将以下面的方式组织:

_variables.scss(项目变量声明——colors、spacings 等)_mixins.scss(项目 mixin 声明——typography、clearfix、animations 等)_forms.scss(自定义表单样式和重置)_input.scss(自定义输入样式和重置)

\layouts(子文件夹)

这是一个敏感的部分。这个目录中的文件以这种方式组织:它们涵盖所有屏幕分辨率、遵循移动第一的原则。所以,你应该使用 _all.scss 声明你自己的风格。在该文件中的规格声明是对所有屏幕尺寸和所有视图都有效的。如果你希望你的网站适应性强的话,就不要仅仅是重写规则,为其他屏幕分辨率声明它们。

文件夹组织结构如下:

phablets(481up)_phablets.scsstabletsandsmalllaptops(768up)_tablets.scssdesktops(1030up)_desktop.scssdesktopswithlargescreens(1204up)_desktop-large.scssretinadisplaysexceptions(@2x)_retina.scss

这些文件将把握布局异常,被称为 mediaqueries。

请注意:这些文件共享于所有视图(HTML 页面)。这就是为什么你需要在 scss\layouts 文件下创建一个新的文件夹以给定一个特定的风格到一个特定的页面。

最后

我知道这不是一个普遍的解决方案,也许在某些情况下还会包含一些冗余,但我认为这是一个很好的起点。不管目的是什么,我的建议是根据自己的需求定制自己的体系结构或框架,特别是在不丢失用户体验的前提下保障性能和可维护性。



作者:3xmq
链接:http://www.3xmq.com/article/1516961285790
来源:架构师小秘圈
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1
1
分享到:
评论

相关推荐

    多位前端架构设计

    前端架构不仅仅是代码层面的架构,它还包括了整个开发流程,从开发到测试、部署以及维护的完整周期。 Web前端与传统的客户端/服务器(CS)架构的GUI软件相比,具有其独特性。Web前端是基于浏览器运行的,它需要在...

    腾讯搜搜前端架构.ppt

    腾讯搜搜前端架构.ppt是腾讯公司在2010年10月30日由张勇分享的一份关于其搜索引擎前端架构与优化的演示文稿。这份文档主要涵盖了以下几个核心知识点: 1. **腾讯搜搜简介**:腾讯搜搜是腾讯公司推出的一款搜索引擎...

    SSM基本架构搭建

    本压缩包文件"SSM基本架构搭建"提供了一个基于Maven构建的基础SSM项目结构,旨在帮助开发者快速地启动一个新的SSM项目。下面将详细阐述SSM框架的组成部分、工作原理以及如何利用这个基础结构进行项目开发。 1. **...

    搭建适合前端开发的小程序架构

    本文将深入探讨如何搭建一个适合前端开发的小程序架构,并基于提供的压缩包文件"weapp-master"来解析其核心知识点。 首先,我们要了解微信小程序的基础结构。微信小程序由多个页面构成,每个页面由WXML(微信小程序...

    微前端架构模板--qiankun.zip

    标题“微前端架构模板--qiankun.zip”暗示了这是一个基于Qiankun框架构建的微前端项目模板,它可以帮助开发者快速搭建一个能够承载多个子应用的主应用。通过解压“micro-front-template-master”,我们可以预期获得...

    前端架构讲义

    端代码开发和组织的架构设计方法,前端代码高可用性和高可靠性的组织方式,对现有代码架构的优化和重构

    电商微服务架构搭建全过程教程

    ### 电商微服务架构搭建全过程教程 在当前互联网技术飞速发展的背景下,电商系统作为连接商家与消费者的桥梁,其稳定性、扩展性和性能表现至关重要。为了满足高并发、大数据量处理的需求,越来越多的企业选择采用...

    vue前端项目架构(vue)

    Vue前端项目架构主要基于Vue.js框架,这是一款轻量级且功能强大的JavaScript库,用于构建用户界面。Vue的核心库专注于视图层,易于学习且与现有库集成良好,使其成为开发单页应用(SPA)的理想选择。Vue项目通常采用...

    微前端架构介绍PPT 华为开发者学院

    ### 微前端架构介绍 #### 一、微前端概述 微前端是一种将复杂的应用程序拆分成多个小型可独立部署的服务的架构方式。这种方式允许每个小服务独立开发、测试和部署,从而提高整体系统的灵活性和可维护性。在华为...

    健康项目-powerdesigner使用-前端框架-项目架构雏形

    本文将详细探讨“健康项目”的前期准备,包括PowerDesigner的使用、前端框架的选择以及项目架构的初步设计。 首先,PowerDesigner是一款强大的数据库设计工具,它在项目搭建中扮演着数据建模的角色。通过...

    LEGAO+ 企业级产品前端架构探索与创新---胡才俊.pdf

    ### LEGAO+ 企业级产品前端架构探索与创新 #### 关键知识点概述: - **LEGAO+**:一种面向企业级产品的前端架构方案,旨在提高前端开发效率、提升用户体验并促进团队协作。 - **Build System(构建系统)**:LEGAO...

    02-脚手架开发入门(前端架构师入门笔记)

    "02-脚手架开发入门(前端架构师入门笔记)"这个主题旨在介绍如何使用脚手架进行前端项目的初始化工作,对于想要成为前端架构师的初学者来说是非常实用的知识点。 首先,我们需要理解什么是脚手架。在软件工程中,...

    杨皓-新浪博客前端架构分享

    【杨皓-新浪博客前端架构分享】主要涵盖了新浪博客前端架构的设计理念、代码组织和开发流程,这些都是构建大型Web应用时的重要考量因素。在本文中,我们将深入探讨这些关键知识点。 1. **代码框架** - **代码的...

    03-脚手架框架搭建(一)(前端架构师入门笔记)

    总结来说,lerna作为前端架构师的工具,为构建复杂的脚手架框架提供了强大的支持。通过理解lerna的工作原理和操作流程,开发者可以更高效地管理和维护大型项目,同时也降低了新项目启动时的学习曲线。对于初学者而言...

    MonoMicro:包含微型前端架构的POC的monorepo

    综上所述,MonoMicro项目是一个深入研究微前端架构的实践案例,它涵盖了现代前端开发中的多个关键技术和最佳实践,对于想要理解和应用微前端架构的开发者来说,是一个宝贵的资源。通过学习和分析这个项目,我们可以...

    Web前端框架应用:第8章 服务器端渲染-webpack搭建及渲染框架.pptx

    知识架构;知识架构;知识架构;知识架构;8.3 webpack搭建服务器端渲染;8.3 webpack搭建服务器端渲染;8.3 webpack搭建服务器端渲染;8.3 webpack搭建服务器端渲染;8.3 webpack搭建服务器端渲染;8.3 webpack搭建服务器端...

    SQL版论坛的架构搭建

    总的来说,SQL版论坛的架构搭建是一个涉及多方面技术的综合性工程,包括前端网页设计、后端数据库管理、服务器端脚本编写以及系统安全与优化。理解和掌握这些知识点,对于成功创建和维护一个活跃的在线社区至关重要...

    基于Vue-cli搭建的简洁前端单页架构

    本项目以"基于Vue-cli搭建的简洁前端单页架构"为主题,旨在提供一个快速开发、功能完备的前端解决方案。Vue-cli是一个官方提供的命令行工具,它简化了Vue.js项目的初始化和配置过程,让开发者可以更专注于业务逻辑而...

    前端架构体系技术.docx

    前端架构体系技术是构建高效、可维护的前端项目的关键,涉及到多个方面,包括框架与组件设计、响应式布局、模块化、虚拟DOM、同构技术等。以下是对这些知识点的详细说明: 1. **框架与组件**:Bootstrap等UI框架...

Global site tag (gtag.js) - Google Analytics