前端组件化开发实践
这篇文章把大牛在开发中总结的一些组件化开发经验。示例中的代码可以按照实际情况应用到 React 或 Vue 的项目中。
前端组件化开发实践
前端组件化发展史。
在讨论组件开发之前,我们先来看看前端组件开发的发展历史。当网页开发开始时,没有前端的概念,更不用说组件了。当时网页只是作为浏览器中可以浏览的富文本文件,开发网页就是用一些标签让浏览器分析显示。由于HTML只是一种描述性语言,网页中的代码无法重用。即使是类似的页面,也需要复制和粘贴大量的重复代码:
<!-- index.html -->
<nav>
<!-- 导航 -->
</nav>
<main>
<!-- 内容 -->
</main>
<footer>
<!-- 页脚 -->
</footer>
<!-- blogPost.html -->
<nav>
<!-- 相同的导航 -->
</nav>
<main>
<!-- 不同的内容 -->
</main>
<footer>
<!-- 相同的页脚 -->
</footer>
后来,随着模板引擎的出现,网页的代码可以分为片段(Fragments)或模板(templates),如导航、内容、页脚等,然后在需要的地方使用引入(Include)语法,引入这些片段,以避免重复代码,从而形成组件原型。常见的动态脚本语言有自己的模板引擎,如PHP、ASP和JSP:
只是这些片段在数据管理上还是比较麻烦的,还是需要使用客户端JavaScript脚本,手动控制数据与HTML视图的同步。而且对于款式,还是有全局污染的问题。
<!-- nav.jsp -->
<nav>
<!-- 导航 -->
</nav>
<!-- index.jsp -->
<jsp:include page="nav.jsp" />
后来,Java等一些语言,如Java,推出了基于服务器的组件开发技术,如JSF(JSP继承),基于MVC设计模式,通过JavaClass(POJO)定义数据模型(Model),为JSF页面模板提供数据。JSF的数据模型中有与事件和生命周期相关的方法,而Ajax是通过使用JSFfacelets组件直接发送Ajax请求并调用模型中的方法的。
<!-- index.xhtml -->
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
>
<h:commandButton id="submit" value="Submit">
<f:ajax event="click" />
</h:commandButton>
<h:outputText id="result" value="#{userNumberBean.response}" />
</html>
组件是什么?
那么什么是组件呢?想想日常生活中电脑上的硬件,比如显卡、内存、CPU,或者汽车零部件:轮胎、发动机、方向盘等。,都属于组件,可以组合形成完整可用的产品。对于遵循设计规范的组件,只要型号匹配,品牌和款式都可以兼容。
事实上,我们的前端工程师是一个工厂。我们需要按照一定的规范生成合格的网页组件,并将其组装成完整的页面。组件一般包括HTML模板、CSS风格和JavaScript数据逻辑,可以直接在其他组件中使用。组件本身的模板、风格和数据不会影响其他组件。组件还包含一系列可配置的属性,动态生成内容。