Vue入门笔记一
《Vue.js项目实战》Guillaume Chau
Vue核心功能概述
1.一个响应式的数据系统,能通过轻量级的虚拟DOM引擎和最少的优化工作来自动更新用户界面
2.灵活的视图声明,包括优雅友好的HTML模板、JSX(在JavaSript中编写HTML的技术)以及hyperscript(完全使用JavaScript)
3.由可维护、可复用组件构成的组件化用户界面
4.官方的组件库提供了路由、状态管理、脚手架以及更多高级功能,使Vue成为了一个灵活且功能完善的前端框架
兼容性要求
- Vue没有任何第三方依赖
- 可以在所有兼容ECMAScript 5 的浏览器中使用
- 不支持Internet Explorer 8 及以下版本
- 编写ES2015(ES6)需要编译器Babel,才能在老版本浏览器中运行
Vue开发者工具
- Chrome Vue.js devtools【启用Allow access to file URLs,调试工具就能在从本地磁盘打开的Web页面上检测Vue】
高级项目设置
npm install -g vue-cli // 安装官方命令行工具vue-cli
vue --version // 测试vue-cli运行,打印版本
// 项目脚手架
vue list // 列出官方项目模板
// 官方模板主要有以下3种主要类型
// simple 不使用构建工具
// webpack 使用非常流行的Webpack打包器
// browserify 使用Browserify构建工具
vue init webpack-simple demo // vue init <template> <dir> 使用模板创建新的应用项目
cd demo
npm install // 安装依赖包
npm run dev // 以开发模式启动应用
npm run build // 为生产而构建
// 配置Babel
// 1.Babel Vue 预设
npm i -D babel-preset-vue
// 打开.babelrc文件并将vue预设添加到相应的列表中 【babel 7和7以下的配置有很大区别】
// 看下文
// 2.polyfill
npm i -D babel-polyfill
// 在src/main.js文件开头导入
// import 'babel-polyfill'
babel版本
1."babel-core": "^6.26.0"
{
"presets": [
["env", { "modules": false }],
"stage-3",
"vue"
]
}
2."@babel/core": "^7.5.5"
{
"presets": [
"@babel/preset-env",
],
"plugins": [
// Stage 2
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
],
"@babel/plugin-proposal-function-sent",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-throw-expressions",
// Stage 3
// "@babel/plugin-syntax-dynamic-import",
// "@babel/plugin-syntax-import-meta",
// [
// "@babel/plugin-proposal-class-properties",
// {
// "loose": false
// }
// ],
// "@babel/plugin-proposal-json-strings"
],
"env": {
"test": {
"plugins": [
"transform-es2015-modules-commonjs",
"dynamic-import-node"
]
}
}
}
创建应用
1.移除src文件夹中的内容
2.使用以下内容创建一个新的JavaScript文件,名为main.js
import Vue from "vue"
new Vue({
el: "#app",
render: h => h("div", "hello world")
});
更新依赖
1.手动更新
// 1.检查项目中使用的包是否有新版本
npm outdated
// 2.打开package.json改变对应版本范围,保存
npm install
2.自动更新
npm update
3.更新Vue
vue包和vue-template-compiler包必须始终处于相同的版本
渲染函数
Vue使用了一个虚拟DOM的实现,用树状结构的JavaScript对象来构建虚拟DOM。然后,Vue将虚拟DOM应用到真实浏览器的DOM上,所用方法是计算两者之间的差异。这尽可能避免了DOM操作,因为DOM操作通常是主要的性能瓶颈。
实际上,当你使用模板时,Vue会将其编译成渲染函数。如果你需要JavaScript的全部功能和灵活性,可以自己直接编写渲染函数或编写JSX。
h是createElement的别名,得名于使用JavaScript描述HTML的技术——Hyperscript。
createElement(或称h)方法最多需要3个参数:
1.元素类型:可以是HTML标签名称(如div),在应用中注册过的组件名称,或者一个组件定义对象
2.可选参数:定义属性、prop、事件监听器等的数据对象
3.可选参数:简单纯文本、用h创建的其他元素的数组
render(h) {
return h('ul', { 'class': 'movies'}, [
h('li', { 'class': 'movie' }, 'Star Wars'),
h('li', { 'class': 'movie' }, 'Blade Runner'),
])
}
它将在浏览器中输出以下DOM:
<ul class="movies">
<li class="movie">Star Wars</li>
<li class="movie">Blade Runner</li>
</ul>
虚拟DOM
- render函数返回由createElement(或h)建立的一个节点树,这些节点在Vue中称为VNode。这棵节点树代表Vue承载的虚拟DOM中的一个组件视图。DOM中的每个元素都是一个节点——HTML元素、文本,甚至注释也是节点。
- Vue不直接将虚拟DOM转化为实际的DOM树,因为这样可能引发很多DOM操作(添加或删除节点),十分损耗性能。
- 为了更加高效,Vue在两种DOM树之间创建一个差异表,只在必要时才会通过DOM操作将虚拟DOM同步到实际的DOM。
Vue入门笔记一的更多相关文章
- VUE 入门笔记
前端的MVVM概念今年来也算是如火如荼,了解完 MVVM的概念,也该找个去尝试下 首先我先试了下 国内小而美的 VUE 试着照着文档敲出入门文件,内容都在注释里 <!doctype html&g ...
- 后端小白的VUE入门笔记, 前端高能慎入
因为项目需要前后端分离,后端竟然不用控制view层了,页面的跳转后端不再干涉,(前端的vue经过打包后成了一张index.html) 后端只需要响应给前端json串就ok,其实这不是爽歪歪?但是觉得还 ...
- Vue入门笔记#数据绑定语法
#数据绑定语法# #文本: 数据绑定的基础表型形式,使用“Mustache”语法(双大括号)(特意查了一下Mustache同“moustache”释义为:髭:上唇的胡子,小胡子,最起码我觉得挺形象的) ...
- Vue入门笔记#过渡
Vue过渡,可以在元素从DOM中移除,插入时自动调用过渡效果.根据设定,会适时的触发过渡效果. 在使用的目标标签里添加 transition: <div transition="my_ ...
- Vue入门笔记(一)--基础部分
github地址:https://github.com/iTao9354/basicVue(demo01-28) 一.初识Vue 使用双大括号{{message}}将数据渲染进DOM中. 可 ...
- vue入门笔记
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与 ...
- 后端小白的VUE入门笔记, 进阶篇
使用 vue-cli( 脚手架) 搭建项目 基于vue-cli 创建一个模板项目 通过 npm root -g 可以查看vue全局安装目录,进而知道自己有没有安装vue-cli 如果没有安装的话,使用 ...
- vue入门笔记(新手入门必看)
一.什么是Vue? 1. vue为我们提供了构建用户界面的渐进式框架,让我们不再去操作dom元素,直接对数据进行操作,让程序员不再浪费时间和精力在操作dom元素上,解放了双手,程序员只需要关心业 ...
- Vue入门笔记(二)--基础部分之条件渲染
github地址:https://github.com/iTao9354/basicVue/tree/master/conditional%20rendering(demo01-03) 一.v-if ...
- 学习Vue 入门到实战——学习笔记
闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...
随机推荐
- django中如何处理事务
生成订单时,一次性生成多条数据记录或者一次性操作多个模型,都有可能产生中途报错的情况,所以需要在生成订单时保证多个数据操作的原子性. 事务 在完成一个整体功能时,操作到了多个表数据,或者同一个表的多条 ...
- ubuntu18.04下nginx配合fastdfs使用的安装和配置
前期准备 1.安装依赖包 # 新装的ubuntu缺少gcc编译,需要先安装这个 sudo apt-get install build-essential 1.解压缩 libfastcommon-mas ...
- ASP.NET XML序列化
整理一下ASP.NET里面如何序列化实体为XML,获取解析XML内容为实体. 第一步要添加程序集引用,项目-->引用-->鼠标右键-->添加引用-->选择程序集-->Sy ...
- 【Azure Fabric Service】Service Fabric 托管群集通过 Connect-ServiceFabricCluster 连接时候报错 CertificatedNotMatched
问题描述 Service Fabric 托管群集, 使用Key Vault中证书,把证书导入到本地安装后,使用该证书的 Thumbprint 作为指令 Connect-ServiceFabricClu ...
- 【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
问题描述 通过设置Java Web项目,实现在App Service For Windows环境中达到自定义4XX/5XX的页面效果 问题解答 第一步:在本地项目文件中打开web.xml文件 (src ...
- Java 对属性赋值的位置 执行的先后顺序
1 package com.bytezreo.block; 2 3 /** 4 * 5 * @Description 对属性赋值的位置: 6 * @author Bytezero·zhenglei! ...
- C++ STL函数对象 仿函数
1 //STL函数对象 仿函数 2 #include<iostream> 3 #include<string> 4 5 using namespace std; 6 7 8 / ...
- Codeforces Round 113 (Div. 2)E. Tetrahedron(dp、递推)
目录 题面 链接 题意 题解 代码 总结 题面 链接 E. Tetrahedron 题意 从一个顶点出发走过路径长度为n回到出发点的方案总数 题解 考虑dp \(f[i][0|1|2|3]\):走了i ...
- Codeforces Round 734 (Div. 3)B2. Wonderful Coloring - 2(贪心构造实现)
思路: 分类讨论: 当一个数字出现的次数大于等于k,那么最多有k个能被染色, 当一个数字出现的次数小于k,南那么这些数字都可能被染色 还有一个条件就是需要满足每个颜色的数字个数一样多,这里记出现次数小 ...
- Shopee虾皮api接口 搜索商品、评价信息 python数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Shopee电商数据采集API,供用户按需调用. 接口使用详情请参考Shopee接口文档 接 ...