前言
前端开发,我一直都是用 HTML(5)+Javascript+jQuery+Ajax+CSS3/DIV 架构去开发。这架构很直观、很强大而且很简单。最近因为公司发展需要,要跟新进来的同事合作开发。为了能够跟他们沟通,最近就学习了近几年都很火的 Vue。
Vue-CLI/AngularJS/ReactJS 其实很复杂
刚学习 Vue,尤其是Vue-CLI 时,觉得这东西跟AngularJS 和 ReactJs一样sb(尤其是当你要跨组件传递参数及组件状态的时候)。这个技术的最大卖点就是所谓不用操作DOM、渲染图层时只对当前受影响的组件进行等等。
老实说,本人觉得这两个所谓的卖点都不是卖点。举例说,当我们学习画画时,老师跟你说不用动画笔、不用学光影,光动动嘴巴给点指令,有个“工具”就能帮你作画。DOM就是画布,操作DOM就是在画布上作画。学前端,操作DOM来渲染图层就怎么变成笨作法?
至于速度方面,以现在的多核CPU和宽带的速度,我敢说如果我不跟你说一个APP后面是在用什么技术,你根本不能分辨那个APP是用Vue/AngularJs/ReactJs写的,那个是用HTML(5)+Javascript+jQuery+Ajax+CSS3/DIV写的。再说,影响一个APP的加载速度、响应速度、渲染速度的因素,远远不止因为你选择用什么框架来开发。
用像 Vue/AngularJs/ReactJs 的好处可圈可点,但是用这些框架的不好处却显而易见。首先这些工具的学习曲线很陡,实施起来也比较困难。比如说在Vue-CLI里面要实现BootstrapVue,我们需要了解如下(截屏由BootstrapVue官网摘取):
1. 先决条件
2. 响应式meta标记
3. 兼容问题
4. 一连串的安装及引用步骤
5. 第三方模块引用及当中可能出现的错误
老实说,只是安装一个BootstrapVue就要花这么大气力。累啊!
相比 HTML(5)+Javascript+jQuery+Ajax+CSS3/DIV 方法,安装及使用就简单得多。步骤如下(截屏由Bootstrap官网摘取):
A. 安装 Bootstrap 4
B. 【没有B了】
安装好了,一步搞定。
除了安装困难,Vue/AngularJs/NativeJs 的框架结构对于 HTML 也复杂很多,概念也相对不清晰。
传统的HTML架构如下:
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="root.css">
<link rel="stylesheet" href="addon.css">
</head>
<body>
<script src="aaa.js"></script>
<script src="bbb.js"></script>
</body>
</html>
Vue 的架构
笔者看了官网,看了好些博文和教学视频,基本没有看到那个能够很清楚讲解 Vue(尤其Vue-CLI)的架构相对于 HTML 是怎样比较的。这个其实很重要,因为前端框架最终还是要编译成原始的HTML、Javascript和CSS的。
从 main.js(如下图),
我们知道 main.js 是整个Vue App的入口。它创建了一个 Vue 实例,挂载并渲染内容在 App.vue 内的 div 标签,id=“app” 之内。
默认的 app.vue 内容
默认的 App.vue,也示范了如何从另一个组件 HelloWorld 中获取该组件的变量或状态值的方法。就个人而言,本人觉得这个方式没有很简单,尤其在开发大型动态前端页面,这个操作甚至比直接访问DOM来获取组件的变量和状态复杂很多。