使用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学习笔记(一)的更多相关文章

  1. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Vue2.0学习笔记一 :各种表达式

    #,过滤器 #,在Vue2.x中,过滤器只能在mustache绑定中使用,为了在指令帮定中实现同样的行为,你应该使用计算属性:     #,过滤器可以串联 {{ message | filterA | ...

  4. vue2.x学习笔记(二十二)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12633051.html. 自定义指令 简介 除了核心功能默认内置的指令([v-mode]和[v-show]等),v ...

  5. vue2.x学习笔记(十九)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12631022.html. 程序化的事件侦听器 在前面的学习中,我们已经知道了[$emit]全局属性的用法,它可以被 ...

  6. vue2.x学习笔记(十七)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12616847.html. 动态组件&异步组件 在前面学习组件基础的时候学习过动态组件,官方文档给出过一个例 ...

  7. vue2.x学习笔记(十六)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12616543.html. 组件中的插槽 在2.6.0的版本中,vue为具名插槽和作用域插槽引入了一个新的统一的语法 ...

  8. vue2.x学习笔记(十五)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12609450.html. 组件的自定义事件 这里来学习一下组件中的自定义事件. 事件名 不同于组件名和prop,事 ...

  9. vue2.x学习笔记(十二)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12592256.html. 组件基础 组件化是vue的一个重要特性,也是vue学习中非常重要的一个知识点. 基础示例 ...

  10. vue2.x学习笔记(十一)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12586416.html. 表单的输入绑定 表单的输入绑定是一块很重要的内容,因为所有的业务系统都离不开基础表单的录 ...

随机推荐

  1. 计网-ping服务命令与ICMP协议

    目录 一.IP协议的助手 —— ICMP 协议(网络层协议) 二.ping —— 查询报文类型的使用 三.traceroute —— 差错报文类型的使用 参考:从Wireshark抓包软件角度理解PI ...

  2. "xaml+cs"桌面客户端跨平台初体验

    "Xaml+C#"桌面客户端跨平台初体验 前言   随着 .Net 5的到来,微软在 .Net 跨平台路上又开始了一个更高的起点.回顾.Net Core近几年的成果,可谓是让.Ne ...

  3. OpenCV-Python ORB(面向快速和旋转的BRIEF) | 四十三

    目标 在本章中,我们将了解ORB的基础知识 理论 作为OpenCV的狂热者,关于ORB的最重要的事情是它来自" OpenCV Labs".该算法由Ethan Rublee,Vinc ...

  4. Pandas 精简实例入门

    目录 0. 案例引入 1. Pandas 主要数据结构 1.1 DataFrame 1.1.1 设置索引 1.1.2 重设索引 1.1.3 以某列为索引 1.2 MultiIndex 1.3 Seri ...

  5. Spring Framework之IoC容器

    Spring IoC 概述 问题 1.什么是依赖倒置? 2.什么是控制反转? 3.什么是依赖注入? 4.它们之间的关系是怎样的? 5.优点有哪些? 依赖倒置原则 (Dependency Inversi ...

  6. java fork/join简单实践

    我们知道,java8中有并行流,而并行流在后台的实现是通过fork/join池来完成的,例如: List<Integer> a = buildList(); List<Integer ...

  7. 一次作业过程及其问题的记录:mysql建立数据库、建表、查询和插入等

    前言 这次的作业需要我建立一个小的数据库. 这次作业我使用了mysql,进行了建库.建表.查询.插入等操作. 以下是对本次作业相关的mysql操作过程及过程中出现的问题的记录. 正文 作业中对数据库的 ...

  8. mavlink协议移植问题

    mavlink协议移植问题 mavlink源代码是一个代码库,使用的时候只需要将mavlink.h头文件包含到工程项目中即可. mavlink通信协议是无状态的连接,一般采用心跳消息跟踪系统是否存在. ...

  9. LVS的部署、案例、以及常见问题

    LVS的部署.案例.以及常见问题 原创chenhuyang 最后发布于2018-06-03 16:18:25 阅读数 1560 收藏 展开 一.LVS的部署 LVS现在已经集成在linux内核模块中, ...

  10. 数据库连接JOIN

    1,连接类型及差异 INNER JOIN:结果集只有配对成功的数据,即不包含左表或右表为空的情况: OUTER JOIN: LEFT JOIN:结果包含左表的所有记录,右表不能成功匹配的显示NULL ...