vue2.x学习笔记(一)
使用vue开发项目已经过了一段时间了,对其中的很多东西还是一知半解,于是想要系统学习一下。主要内容是参照官方中文网站https://cn.vuejs.org/v2/guide/,然后加上一些自己的理解与批注。
什么是vue.js
Vue (读音 /vjuː/,类似于view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。
上面的这段话引用至官方教程,其中有一些字眼比较难以理解,比如【渐进式框架】,比如【自底向上逐层应用】,还比如【为单页应用提供驱动】。
理解【渐进式框架】
事实上,渐进式(Progressive)这个概念在多个技术领域里都有不同的作用与理解,所以有理解成本也是在意料之中的。渐进式的现实例子有很多,比如网页中图片的加载方式演化就是一个经典的渐进式例子。
在很多年以前,网页中的图片,比如jpeg图片在页面中加载的处理方式,采用的默认处理方式都是从上至下一块一块地加载,直到完全加载。如果网络慢了或者是卡了,那么图片可能就只会加载一半,这时候对图片的整体内容没有一个大致的认知,对用户的整体感官体验就没有那么好了。因此在网页图片的加载方式引入了渐进式的概念,先加载整张图片的主体(模糊),再慢慢从模糊加载到清晰,这样一来用户体验相对来说会好一些。这里我们就可以得出一个初步的结论:渐进式概念指的是优先展示全局整体核心,再从核心上逐步拓展出想要的结果。
看完网页加载的这个例子之后,我们再来看看vue官方教程中的这段话。结合这一段时间的开发经验,我理解的vue中渐进式框架的理念,指的是先看到核心的部分(最小集),然后再在此基础上进行开发者自身的diy拓展(添加组件),这个过程随着开发者的需求逐步变化增长。从另一个角度来看也可以是,当你使用vue的时候,不需要一上来就使用vue的全家桶,而是可以根据场景适当选用方便的框架(官方提供)。形象地理解,渐进式框架就是搭积木,我们可以根据需求,利用社区良好的生态,从基础的底层开始,一步一步地,从下至上地,逐层递进地借助已有的工具和库搭建我们的项目。
说到这里,我们很容易可以总结到,所谓的渐进式框架就是框架分层。在vue中,最核心的是视图层渲染,然后往外是组件机制,再在此基础上加入路由机制(VueRouter),再加上状态控制(Vuex),然后最外层才是构建工具。这样做的好处是我们可以根据不同的需求来选择不同的层级,遵循最小最优最快的开发原则。
理解【为单页应用提供驱动】
因为vue可以只通过引用单个vue.js文件即可使用,可以很方便地与现有的类库或项目进行整合,轻松达到数据驱动页面(双向绑定)的效果,因此这句话的理解是:vue是一个轻量级的框架,简单引入即可使用。
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
和其他第三方库(比如jQuery)一样,只需要通过script标签引入即可使用,这是vue.js最简单的一种安装方式。当然,vue还另外提供了其他安装方式,简直简直了。
vue的安装
Vue不支持IE8及以下版本,因为Vue使用了IE8无法模拟的ECMAScript 5特性。但它支持所有兼容ECMAScript 5的浏览器。
官方教程文档里明确说明了vue是不支持ie8的,关于这一点在实际项目中也有所体会,和客户多次沟通之后客户才同意统一使用谷歌浏览器,因此浏览器兼容性这个因素一定要在选择前端框架的时候考虑进去,否则后期可能会造成不必要的麻烦。在这里,如果你的项目需要兼容ie8的话,vue就不应该在你的考虑范围之内了。
在浏览器上安装Vue Devtools
在使用Vue时,我们推荐在你的浏览器上安装Vue Devtools。它允许你在一个更友好的界面中审查和调试Vue应用。
官方推荐了这一款浏览器插件,同事有给我安装,但是在开发过程中个人用得不多,也不知道用处在哪,大概是我太笨了不会用吧(手动滑稽)。
使用<script>标签引入
使用script标签引入的话,vue就会被注册为一个全局变量,然后就可以通过这个全局变量来使用vue中提供的功能。
要引入的话可以直接从官网下载到本地后引入或直接通过cdn地址引用。其中,开发版本(官网下载)包含完整的警告和调试模式;而生产版本(官网下载)则是删除了警告,最小化了代码体积并经过了gzip压缩。因此这里要注意的是,在开发环境下不要使用压缩版本,不然就会失去了所有常见错误相关的警告。
对于制作原型或学习,开发者可以这样使用最新版本(cdn):
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
而对于生产环境,官方文档推荐链接到一个明确的版本号和构建文件,以避免新版本造成的不可预期的破坏(cdn):
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
此外,开发者还可以在cdn.jsdelivr.net/npm/vue浏览npm包的源代码。
请确认了解不同构建版本并在你发布的站点中使用生产环境版本,即把vue.js换成vue.min.js。因为这是一个更小的构建,可以带来比开发环境下更快的速度体验。
使用npm安装
在用Vue构建大型应用时推荐使用npm安装,因为npm能很好地和诸如webpack或browserify模块打包器配合使用。同时Vue也提供配套工具来开发单文件组件。
# 最新稳定版
$ npm install vue
对于npm的内容又是一个长时间的学习,如果是新手的话,这里只要知道就好了(俺也一样)。
使用命令行工具(cli)安装
vue提供了一个官方的cli,为单页面应用 (SPA) 快速搭建繁杂的脚手架。它为现代前端工作流提供了batteries-included的构建设置,只需要几分钟的时间就可以运行起来并带有热重载、保存时lint校验,以及生产环境可用的构建版本。
cli工具假定用户对node.js和相关构建工具有一定程度的了解,如果是新手的话,这里只要知道就好了(别问,问就是我不会,我太难了)。
不同构建版本的区别
官方文档这里说了一大堆专业术语,虽然有解释,但是没有一定的基础与了解还是看得一头雾水,因此这里只大概记一下构建版本可以分为三个版本:完整版、包含编译器的版本和运行时的版本。什么UMD、CommonJS和ES Module暂时放到一边去好了,什么CSP环境、Bower和AMD模块加载器也丢到厕所里去,以后再慢慢通过渐进式的学习来弄懂(等等,我真的是做后端的吗???)。
"我还是很喜欢你,像风走了八百里,不问归期。"
vue2.x学习笔记(一)的更多相关文章
- vue2.0学习笔记之路由(二)路由嵌套+动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue2.0学习笔记之路由(二)路由嵌套
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue2.0学习笔记一 :各种表达式
#,过滤器 #,在Vue2.x中,过滤器只能在mustache绑定中使用,为了在指令帮定中实现同样的行为,你应该使用计算属性: #,过滤器可以串联 {{ message | filterA | ...
- vue2.x学习笔记(二十二)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12633051.html. 自定义指令 简介 除了核心功能默认内置的指令([v-mode]和[v-show]等),v ...
- vue2.x学习笔记(十九)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12631022.html. 程序化的事件侦听器 在前面的学习中,我们已经知道了[$emit]全局属性的用法,它可以被 ...
- vue2.x学习笔记(十七)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12616847.html. 动态组件&异步组件 在前面学习组件基础的时候学习过动态组件,官方文档给出过一个例 ...
- vue2.x学习笔记(十六)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12616543.html. 组件中的插槽 在2.6.0的版本中,vue为具名插槽和作用域插槽引入了一个新的统一的语法 ...
- vue2.x学习笔记(十五)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12609450.html. 组件的自定义事件 这里来学习一下组件中的自定义事件. 事件名 不同于组件名和prop,事 ...
- vue2.x学习笔记(十二)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12592256.html. 组件基础 组件化是vue的一个重要特性,也是vue学习中非常重要的一个知识点. 基础示例 ...
- vue2.x学习笔记(十一)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12586416.html. 表单的输入绑定 表单的输入绑定是一块很重要的内容,因为所有的业务系统都离不开基础表单的录 ...
随机推荐
- [尊老爱幼] Queen
You are given a rooted tree with vertices numerated from 1 to n . A tree is a connected graph withou ...
- 超图iserver登录密码忘记,重置密码
如果大家在用超图iserver发布服务的过程中将登录密码忘记,大家不要慌,iserver自带的有密码重置功能. 1.首先在登录过程中提示密码错误,具体内容如下图所示: 2.首先先停止iserver服务 ...
- WePY框架 input,checkbox-group,radio-group等change 一般处理方法
布局搞定了,接下来就是数据处理方面了 form表单中常用标签,绑定change方法: 方法的具体实现 根据打印出来e的结果可以看到,e指代当前标签对象,包含属性方法等 从detail中可以获取多选框选 ...
- 关于《自动化测试实战宝典:Robot Framework + Python从小工到专家》
受新冠疫情影响,笔者被“困”在湖北老家七十余天,于4月1号(愚人节)这天,终于返回到广州.当前国内疫情基本已趋于平稳,但全球疫情整体势态仍在持续疯涨,累计确诊病例已近80万人.祈祷这场全球性灾难能尽早 ...
- Polya 定理相关题目
参考知识链接 关于枚举旋转置换: 前两题都是枚举了 n 种旋转, 但这个可以优化到\(O(\sqrt{n})\) (这个其实是基本操作). 考虑到每个循环节的长度都是 n 的因数, 所以可以枚 ...
- phpwind 安装下一步空白解决方案
系统版本 centos 翻阅网上大部分都是php版本问题,让降级就行了,试了之后根本不行 其实再安装一个插件即可成功 如下: yum install -y php-mysql
- 四、【Docker笔记】Docker容器
容器是Docker的另一个核心概念,容器就是镜像的一个运行实例,只是它具有一个可写的文件层,而镜像是一个只读的文件. 一.创建容器 1.新建容器 我们可以使用 docker create 命令来创建一 ...
- Appium自动化(2) - appium环境安装常见问题的解决方案
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 问题1:adb检测不到设备 解决 ...
- Redis 过期时间相关命令
命令 示例和描述 PERSIST PERSIST key-name —— 移除键的过期时间 TTL TTL key-name —— 查看给定键距离过期还有多少秒 EXPIRE EXPIRE key-n ...
- Python中判断输入字符串是否为数字的方法
在写物理实验图像处理的脚本时,遇到了一个判断输入的字符串是否为数字的方法 最开始我的思路是这个 test = input() while test.isdigit(): # do something ...