推荐理由:

推荐理由:

程序员在我们的印象中,就是不停的敲代码;而写的程序如何确保不出现bug,而且还能及时发现问题,下面我推荐的这篇文章,围绕整个前端的开发流程出发解决这两个问题,帮助大家提高产品质量以及开发效率。希望对大家有用。

以下为文章原文

作者:莫卓颖

序言

相信很多程序员都会经历两件事:第一件事情是没日没夜加班撸代码;第二件事情是写的程序出现bug没有及时发现而被老板骂。

不知道大家有木有考虑从工具或者架构的角度出发去解决以上两个问题,木有考虑的同学也木有关系,本系列文章将会将会围绕整个前端的开发流程出发解决这两个问题,帮助大家提高产品质量以及开发效率。

文章导航图

对于前端开发来说大致分为5个阶段:开发、联调、测试、上线、监控维护,本系列文章将会选取每个阶段比较影响效率以及质量的点进行详细描述。这一章我们先来从开发阶段出发考虑有哪些方面可以做效率提升?

页面结构继承化

信很多同学都会利用JS或css不完美的继承成化方案实现功能或样式的重用,不知道大家是否有考虑过页面结构或者数据也可利用类似的继承方式以便达到结构以及数据重用,我们先来看一个例子以便更好了解HTML继承的作用,如下图:

假设A同学和B同学分别开发页面A和B,这两个页面的特点是页头、页脚和公共资源都是一样的,唯一不同的就是内容部分(即是body)。B同学发现这个特点后,聪明的只开发内容部分,其它相同等A同学开发后把相同的代码拷贝过来便可。相同部分如下图红框,不同部分如下图黄框:

但是A同学相当靠谱,他的程序经常出bug,导致每一次修改页头和页脚都需要通知B同学,然后B同学需要把需要修改部分黏贴覆盖到代码中。这种方式很明显会带来两个问题:1、修改困难,同一个修改需要同步多次, 2、维护困难,需要维护大量相同的代码。于是B同学想到了另外一种方式,把公共部分分别抽取为单独的一个文件,然后用inline的方式引入,方式如下图所示:

把两个页面相同的meta,公共的css,功能的页头,公共的页脚,公共的脚本统一抽取成一个文件,相信很多同学都是使用类似的架构来设计Html,但是不知道有木有同学考虑过这种方式的缺点:无法进行颗粒度化的结构扩展以及修改。举个例子,比如嵌入的head.html,如果说每个页面某个模块大部分内容一样,但是有一小部分都不一样,我们是否需要在这个模块中使用大量的if else,使用这种方式很快会使得代码无法维护。因此更加理想的架构方式是让HTML也具有继承结构,把通用结构、数据放到base.html中,所有的页面均继承此base类(父类),继承结构如下图所示:

我们先来看看定义的通用base.html(父类)的含义

如上图,我们在通用父类中定义通用的属性(如蓝色框所示),相信在一个产品线中,所有页面一致的部分包括通用的公共样式(reset.css等)、通用的脚本库(jquery等)、ico和某些meta,对于不变的无需定义属性key,等有需要的时候再定义便可。页面有可能不变的包括meta、title、header、footer等,可提前定义属性key,见上图的蓝色框,定义好base类后,我们的页面便可简化为如下图所示:

对于这些我们相信到这很多同学会产生疑问,html不像动态语言,具有inline以及继承功能,怎么样才能达到上述功能,实现原理很简单,借助构建工具在编译的过程中遍历所有HTML文档,找出所有的基类,然后读取所有的子类,把子类的属性覆盖到父类便可,伪代码如下图:

总结

页面结构继承早已经在动态语言模板smarty,velocity等实现,因为它可以更加有效的管理模板以及提高开发效率,但是在html不支持类似的方式导致很少同学使用类似的结构实现导致木有html维护的困难,通过本文学习,可简单的实现HTML继承已达到重用的目的。下篇文件将会阐述如果实现模块化以便提升开发效率。

原文链接:http://ivweb.io/topic/5773c1a9af96c5e776f1f5c0

相关推荐

  • 打造前端工程测试体系(1)
  • 前端开发框架简介:angular和react

文章出自腾讯云技术社区

(埋文字链https://www.qcloud.com/community/article/657153001489391652)

推荐大家关注腾讯云技术社区微信公众号:QcloudCommunity

转载于:https://my.oschina.net/u/3352643/blog/873765

如何搭建高质量、高效率的前端工程体系--页面结构继承相关推荐

  1. 腾讯IVWEB团队:如何搭建高质量、高效率的前端工程体系 页面结构继承

    腾讯云技术社区-简书主页持续为大家呈现云计算技术文章,欢迎大家关注! 作者:莫卓颖 序言 相信很多程序员都会经历两件事:第一件事情是没日没夜加班撸代码:第二件事情是写的程序出现bug没有及时发现而被老 ...

  2. 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)

    读书笔记:编写高质量代码--web前端开发修炼之道 这本书看得断断续续,不连贯,笔记也是有些马虎了,想了解这本书内容的童鞋可以借鉴我的这篇笔记,希望对大家有帮助. 笔记有点长,所以分为一,二两个部分: ...

  3. 神策数据司沛:加速车企数字化转型,搭建高质量用户数据平台实战

    本文根据神策数据高级售前解决方案顾问司沛<加速车企数字化转型,搭建高质量用户数据平台(CDP)实战>的直播内容整理而成.主要包括: 车企数字化转型之瓶颈以及应对思路 神策数据为车企打造的用 ...

  4. 如何搭建高质量的 B 端产品帮助体系?

    在B2B市场中,产品的质量和支持服务对于企业的成功至关重要.帮助中心是B2B企业提供优质支持服务的重要组成部分.那么,如何搭建高质量的B端产品帮助体系呢?本文将为大家介绍一些关键的步骤和方法. 一.了 ...

  5. 询问ChatGPT的高质量答案艺术——提示工程指南

    目录 前言 一.提示工程简介 二.提示技巧 2-1.生成法律文件 2-2.添加提示技巧 三.角色扮演 3-1.智能手机产品描述 3-2.添加角色扮演 四.标准提示 4-1.写一篇有关于新智能手机的评论 ...

  6. 编写高质量代码 Web前端开发修炼之道 读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> 第五章 高质量的JavaScript 5.1 养成良好的编程习惯 5.1.1 团队合作-如何避免JS冲突 使用匿名函数控制变量 ...

  7. 编写高质量代码:Web前端开发修炼之道(三)

    第五章:高质量的Javascript 这章的内容我看的最久,这是跟我js基础没打好有着莫大的关系,但是还是耐着性子看完了, 不懂的东西都是百度上搜索,理解后再继续.下面是记录下来的笔记. 1)如何避免 ...

  8. 如何搭建高质量在线网校平台

    如今每天都有数不清的在线网校平台出现在市面上,但是也有数不清的网校平台被市场所淘汰,成为了使用寿命非常短的网校平台.这是为什么呢?我们在利用网校源码搭建在线网校平台时,如何做才能延长使用寿命呢?我们来 ...

  9. 前端绘图开源组件_推荐10款常用的高质量的Web前端UI开源框架,必收藏

    Web前端领域最近几年发展的特别迅速,可以说是百家争鸣.Web前端框架就是为了节约开发成本和时间,一般开发一个项目都会用到前端框架(除非自己有前端开发团队).对于现在的开发者来说,都向着全栈方向发展, ...

最新文章

  1. 还在为入门深度学习发愁吗?其实你只需要一周的时间
  2. canvas初体验之加载图片
  3. 删除Linux的依赖库并进入救援模式恢复
  4. 生活只是需要一种积极的态度
  5. 求两个数集的并集C++代码实现
  6. 移动开发的分辨率问题
  7. TCP/IP / 如何保证数据包传输的有序可靠?
  8. macos安装盘第三方工具制作_一步一步教你为macOS创建系统安装盘
  9. 又砸又烧,还要泼脏水,这谣言到底什么时候才没人信?发生这样的事真没想到.........
  10. 【分类器】- KNN
  11. python dicom放大_python3实现对dicom图像处理(图像呈现,缩放,平移)
  12. App Domains and dynamic loading
  13. IPSec之security acl
  14. C语言不支持函数重载的原因
  15. 春考计算机c语言题,2011春江苏省计算机等级考试c语言试题答案
  16. 关于matlab运行的一些报错迷惑
  17. xp系统怎么弄清微软服务器名称,xp系统如何做远程服务器呢
  18. 传奇世界最好的版本:
  19. 编写程序,输入本金、年利率和年份,计算复利(结果保留2位小数)
  20. 百度推广引流一个成本多少?百度推广怎么预估成本?

热门文章

  1. 蓝绿发布、灰度发布(金丝雀发布) 和滚动发布
  2. 从零搭建飞冰微前端项目《第三篇:搭建微应用》❤️
  3. 【laravel-admin】权限管理与实现原理
  4. 基于FPGA的万年历
  5. 恶意程序利用Linksys路由器漏洞在路由器中传播
  6. pytorch一小时速成
  7. js日期格式化(Date format)
  8. gazebo实现小车巡线
  9. 生成长微博(文转图)方法
  10. oppo便签误删怎么办_OPPO手机便签删除了怎么恢复?有无需登录云端就可以恢复的备忘录软件吗...