Web重构工作主要是语义化排版文档信息,排版文档信息的最佳实现就是基于OOP分离分割结构、样式、行为。

分离分割皆为解耦。

分离,使HTML、CSS、JavaScript三基石职责清晰,HTML逻辑化内容,CSS视觉呈现,JavaScript承载控制、驱动、交互;

分割就是模块化、组件化,对系统各业务各功能按一定粒度进行分割、解耦、独立处理,减少冗余,提升可靠性、统一性、复用性、扩展性、维护性。

各业务各功能涉及到基础层、中间层、应用层呈现交互等技术环节,同时受制于工程需求、项目周期、角色协作等因素,分割粒度粗细要把控好,找到合适的平衡点。

模块化、组件化都是为了解耦和封装,把事务分割成小单元;

模块化侧重的是拆分、接口和功能;

组件化侧重的是重用、呈现和交互。

Web重构,不能通过文件的组织分布来谈模块化、组件化,要从OOP的角度去分析和实现,尤其是SPA开发,结构、样式、脚本文件组织不同于传统的Web开发方式,其侧重JavaScript在控制、驱动、交互方面的承载力,SPA中JavaScript决定一切。

分离

分离HTML、CSS、JavaScript,不限于文件方式隔离,以OOP思想作为指导。

不可在HTML结构标签上写行内样式,

不可在HTML结构标签上定义DOM0级事件,

不通过JavaScript在标签上操作 style 属性控制样式。

分割

在分离的基础上再各个进行分割。

HTML结构,分割成站点级和页面级主干结构、栅格结构、组件结构,

CSS结合预处理分割成Variables/变量、Mixins/混合、Utilities/辅助类(normalize, reset, visibility, position …)、Layout/布局(section/grid)、Components/组件(alert, popover, modal, dropdown, tooltip, accordion, tabs, slide, media …)、Pages/页面、Themes/主题等单元,

JavaScript根据选定的CommonJS、AMD、CMD、ES6等规范,并结合引入的框架和库定义模块和组件,分割成Common/通用、Components/组件、View/页面等单元,

组合构建

最后,使用GulpWebpackRollupBabel等工具及相关插件组合模块和组件,打包构建成目标宿主环境支持的代码。

Web重构中的模块化、组件化实现,是对模块和组件的定义与加载管理。

(本篇结束)

许可协议:自由转载-保持署名-非商业性使用-禁止演绎 (CC BY-NC-ND 4.0)

By 小可 from https://xinlu.ink/tech/pro-web-reconstruction-7-decoupling.html

无废话网页重构系列——(7)布局(区块、栅格)、模块组件(module)的更多相关文章

  1. 无废话网页重构系列——(3)Web重构前的分析

    本篇讲重构前的分析.从“工作状态.工作环境和工作角色”和具体重构工作两方面分析. 凡是经过考验的朋友,就应该把他们紧紧地团结在你的周围 比较理想的工作状态:制定了各种设计和开发规范,各团队之间邮件.团 ...

  2. 无废话网页重构系列——(2)来套Web重构装备

    本篇主要从语言入门.规范.工具.构建.库.框架.版本控制等各方面展开,篇幅会有点长,涉及到的工具类,会另开博文详细介绍. 另外说明Web重构是Web前端的开始,主要侧重Web页面,如实现布局与兼容,符 ...

  3. 无废话网页重构系列——(6)HTML主干结构:站点(site)、页面(page)

    本文作者:大象本文地址:http://www.cnblogs.com/daxiang/p/4653546.html 在分析和切出设计稿,以及部署项目目录文件后,开始写HTML Demo. 首先,弄出H ...

  4. 无废话C#设计模式系列文章

    不错的系列文章 原文:http://www.cnblogs.com/lovecherry/archive/2007/10/17/927728.html 本系列文章从公司内部的知识分享修改而来,有错误或 ...

  5. 随笔分类 - 无废话ExtJs系列教程

    随笔分类 - 无废话ExtJs系列教程 摘自:http://www.cnblogs.com/iamlilinfeng/category/385121.html ExtJs 入门教程 摘要: extjs ...

  6. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  7. 【转】无废话WCF系列教程

    转自:http://www.cnblogs.com/iamlilinfeng/category/415833.html     看后感:这系列的作者李林峰写得真的不错,通过它的例子,让我对WCF有了一 ...

  8. 无废话WCF系列教程 -- 李林峰

    李林峰的无废话WCF入门教程 无废话WCF入门教程一[什么是WCF] 无废话WCF入门教程二[WCF应用的通信过程] 无废话WCF入门教程三[WCF的宿主] 无废话WCF入门教程四[WCF的配置文件] ...

  9. 无废话MVC入门教程二[第一个小Demo]

    mvc技术交流,欢迎加群: 本文目标 1.了解"模型"."视图"."控制器"的创建.调试和使用过程. 本文目录 1.创建模型 2.创建视图 ...

随机推荐

  1. Google Maps投影在ArcGIS中的设置

    Google Maps采用的地图投影为Web Mercator,其优点为不同维度其形状保持不变,当然面积要发生变化. ArcGIS9.3中可以直接设置为WGS 1984 Web Mercator,操作 ...

  2. Repost: Set Delivery Block on SO

    If SO is incomplete, then automatically set the delivery block on the SO header. as suggested by ear ...

  3. android SDK启动的错误

    1. AVD Manager.exe : failed to execute tools android.bat 请把AVD Manager.exe复制到跟 SDK Manager.exe的相同目录下 ...

  4. rest介绍

    REST介绍 描述 rest即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软 ...

  5. PHP时间戳

    strtotime strtotime("Today"); #今天凌晨0点的时间戳 strtotime('now');     #当前时间的时间戳 strtotime ( &quo ...

  6. WCF 服务的ABC之绑定(六)

    绑定 Binding 绑定是开发人员控制WCF程序与其他消息交互的主要手段.从功能上看,绑定创建了通道工厂惑通道侦听器的堆栈对象.绑定直接惑间接创建的对象是WCF实现各种消息功能(例如,传输.安全性. ...

  7. 【Qt】Qt之自定义界面(窗体缩放)【转】

    简述 通过前两节内容,我们实现了自定义窗体的移动,以及自定义标题栏-用来显示窗体的图标.标题,以及控制窗体最小化.最大化.关闭. 在这之后,我们还缺少窗体的缩放-当鼠标移动到窗体的边框-左.上.右.下 ...

  8. C#中Split函数的使用

    Split函数 描述 :返回一个下标从零开始的一维数组,它包含指定数目的子字符串. 语法 :Split(expression[,   delimiter[,   count[,   compare]] ...

  9. node.js和socket.io纯js实现的即时通讯实例分享

    在这个例子中,其实node.js并没有真正起到服务器的作用,因为我们这里可以直接运行client.html文件,而不用输入url请求,当 然,要想输入url请求页面内容还需要加入请求静态文件的代码.这 ...

  10. AIX性能监控topas命令的详细解析

    执行topas命令后如图所示: #topas 区域1:反映CPU使用率和工作状况  Kernel:操作系统的内核占用的CPU时间比率. 操作系统作为基础软件,为应用程序支持和服务的同时,本身的运行也需 ...