Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第1张

页面可视化搭建, 是一个历久弥新的话题. 更广义上讲, 页面是 GUI 的一部分, GUI 的拖拉生成在各种开发工具上很常见, 如 Android Studio, Xcode, Visual Studio 等. 前端页面早在十几年前就能用 html" class="superseo">Dreamweaver, Frontpage 等工具可视化搭建出来.

但是现在已经很少人使用 Dreamweaver 了, 其主要原因是页面承载的内容已经和页面源码分离, 由后端接口返回再渲染到页面, 静态页面网站无法承载大量的动态内容.

Dreamweaver 死了, 但是页面可视化搭建工具依然广泛需要和使用, 所以这个话题依然值得探讨.

Dreamweaver *** 作页面示例:

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第2张

文章内容

页面构成和页面组件化.

页面可视化搭建工具的必要性.

页面可视化搭建工具的区分维度.

业界的实践实例.

页面

页面是 HTML / DOM

页面可视化搭建的 *** 作对象是页面. 页面是一份 HTML 文档, 不管是静态页面还是动态渲染出来的页面, 在页面上看到的内容, 都是 HTML 文档的一部分.

对 HTML 文档的实例化和 *** 作, 通过文档对象模型(DOM)来实现, 也可以说页面是一个 DOM. 本文没有严格区分 HTML 和 DOM 这两个概念, 以下行文都用 HTML 这个概念.

HTML 使用一种树形结构来表示页面, 树的每个节点为一个页面元素或文本节点, 一个页面元素可以包含多个页面元素节点或文本节点. 页面元素通常称为标签, 页面元素类型由 HTML 规范定义.

HTML 结构示例:

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第3张

页面是 HTMLTree + Data

从前端开发的角度, 可以认为页面是由 HTMLTree 和 Data 组成, HTMLTree 是页面元素的树形结构, Data 是页面元素的属性或文本节点. 下图中蓝色框所示的节点可以认为是数据.

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第4张

为什么从前端开发角度会说页面是 HTMLTree + Data? 举一个常见场景来说明: 在开发新页面时, 我们是可以复制已有页面(好吧, 我就是这样的前端工程师), 然后只修改页面 HTML, 或者只修改数据, 或同时修改 HTML 和数据, 从而完成新页面的开发.

静态页面和动态逻辑页面

上一节说页面的由 HTMLTree 和 Data 组成, 讨论的是静态页面.

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第5张

浏览器请求静态页面, 网络返回的 HTML 源码就是页面渲染完成后的 HTML. 静态页面的源码和页面渲染结果一致:

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第6张

当下, 前端页面更多的是有动态逻辑的页面, 在页面中引入和使用动态脚本(Javascript)对页面进行修改和控制.

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第7张

浏览器请求动态逻辑页面, 网络返回的 HTML 源码与页面渲染完成后的 HTML 有差异. 动态逻辑页面的源码和渲染结果有差异:

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第8张

页面组件化

页面渲染后是一棵 HTML 元素构成的树, 页面的可编辑粒度为 HTML 规范定义的 HTML 元素.

使用 Web Components 组合 HTML 元素, 实现了功能封装和可复用的页面组件. 在流行的前端框架中, 都提供了组件化的功能, 从前端框架的视角看, 页面是由组件树组成. 这些组件内部维护自身的 HTML 元素结构、样式和功能逻辑, 并通过组件的 props 获取外部传入的数据, 实现了功能封装和复用.

Vue 组件树示例:

Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,Dreamweaver 死了 页面可视化搭建工具仍旧历久弥新,第9张

并没有讨论 CSS

在以上的章节中, 我们并没有讨论决定页面样式的 CSS. 因为借助 Javascript 的动态逻辑, CSS 可以归入到 Data 的范围: 通过对页面元素 style attribute 的修改, 或将 CSS 属性动态添加到