前言
目前,Web开发的技术栈已经相当统一,Vue + ElementUI的“标配”技术栈完全能够适应80%的项目开发需求,借助Vue提供的数据双向绑定和页面渲染能力,以及Element-UI提供的标准化前端组件库,大部分的Web前端项目可以快速开发,显著提高了开发效率。可是,这会是Web前端开发框架的尽头么?
Vue的首个正式版本发布于2014年,在那个时代,它真的很伟大,而十年过去,Web前端的需求和项目模式已经悄然发生了变化。在软件建设思路方面,中国的软件建设进程正在从“信息化时代”迈向“数字化时代”,在信息化时代,软件开发只关注具体项目的需求和功能,而在数字化时代,如何打破大量信息系统之间的壁垒,提供多系统的“大集成”成为发展的趋势;在软件建设模式方面,大范围的系统集成使得单团队独立建设越来越难以符合数字化转型的要求,多团队协同开发正逐步成为市场的主流。面对这样的场景,现有的Web前端技术还有哪些提升空间呢?
也许,可以站在前人的肩膀上,重新思考一下Web前端框架理想的样子。
本文主要针对目前典型的SPA(Single Page Application:单页式应用),多页面跳转的系统包含两种情况,一种可看做是多个SAP项目的关联,另一种是类CMS系统,类CMS系统不是本文的主要关注方面。
一、背景:对标Vue
1.1 Vue的优点
1.1.1 Vue是实现MVVM的一个经典
Vue的核心思路是通过制定一系列扩展标签和组件定义的规范,让开发人员能够方便的编写模块化、根据实际数据动态渲染的DOM结构,通过渲染引擎将其转换为浏览器能够展示的HTML页面视图,同时实现数据与页面视图的双向绑定。
如果我们将开发人员按照Vue语法编写的DOM称之为VDOM,最终生成的浏览器可展示的DOM称之为DOM,那么实际Vue所完成的工作可以简单理解为(仅为便于理解,不完全代表实际实现方式):
1.解析用户指定的VDOM(el),生成便于Vue渲染的语法树;
2.根据语法树中的数据绑定关系及用户提供的初始数据(data)创建代理对象,并监听代理对象的范围内的数据修改(dataChange);
3.根据语法树和初始数据(data)生成DOM,并依据VDOM中定义的事件,创建DOM的事件监听,在渲染过程中,对于组件逐层独立渲染;
4.针对生成DOM中绑定了数据的标签,添加内容变化(domChange)的监听方法;
5.当dataChange时,局部重新渲染DOM,当domChange时,修改数据(data)的值。
对于一个前端框架来说,以上过程已经十分完美,它充分吸收了早期JSP等解决方案在动态生成DOM方面的思路,也收集了react、angular在数据绑定方面的经验,是前端MVVM模式的经典实现。
1.1.2 Vue制定了很好的前端模块化规范
在Vue之前,前端模块化开发其实是一个很头疼的课题,因为Web前端并不像经典的程序开发语言(比如Java、Python)那样可以简单的用模块和函数进行封装,之前的前端模块化开发更像是将一个页面文件拆成若干部分,最终简单的拼合(例如JSP)。而Vue通过template、props、data、const、methods等属性的定义,将HTML、数据、方法等杂乱的信息打包成了一个对象,并通过created、mounted、updated等生命周期钩子函数,完成对象行为和模型的解耦。
尤其是Vue中的<template>标签,使得开发者可以很舒服的在一个独立的文件中分别定义组件的DOM部分和JS逻辑部分,相比在js中用字符串拼接D