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 学习内容: ...
随机推荐
- Flutter——安装依赖包时,出现Waiting for another flutter command to release the startup lock
问题描述 运行 flutter packages get 时 出现 Waiting for another flutter command to release the startup lock 解决 ...
- 基于Python GDAL为长时间序列遥感图像绘制时相变化曲线图
本文介绍基于Python中gdal模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法. 首先,明确一下本文需要实现的需求:现有三个文件夹,其中第一个文件夹存放了某一研究区域原始的多时 ...
- 矩池云快速安装torch-sparse、torch-geometric等包
租用机器,按自己需要的环境选择一个环境,我这里选择的是Pytorch 1.10. 租用成功后点击租用页面的 Jupyterlab 链接. Jupyterlab 里新建一个Terminal 用来安装环境 ...
- 【Azure 事件中心】China Azure上是否有Kafka服务简答
问题描述 China Azure 上是否有Kakfa服务可以使用呢? 问题回答 China Azure并没有专门的Kafka服务,但是可以使用Azure Event Hub. 创建标准版及以上的Eve ...
- 【Azure 应用服务】访问App Service突然出现 ERR_SSL_PROTOCOL_ERROR错误的解答
问题描述 在中国区的Azure App Service服务中,新创建的站点突然访问出现 " This site can't provide a secure connection,xxxx ...
- STL-stack模拟实现
#pragma once #include<assert.h> #include<list> #include<vector> #include<deque& ...
- liunx 大文件切割,catalina.out 大文件打开
工作中,由于没有没有配日志文件切割,不小心日志文件上G了,用tail -f 或 cat 命令都难打开了,但偏这时候出了点事,需要查日志 怎么呢.第一条件命令 tail -50000f ca ...
- Git修改最近一次提交的日志信息
一.问题由来 当前自己所在的项目组中,每次发完一个版本后,就需要创建个人新版本的git提交凭证,其实就是系统自动 生成的一串编码,如果没有这个凭证,代码是提交不了的,这是公司制定的开发规范之一.这两天 ...
- trans.bat 将.m4a 文件拖拽到这个上面 自动转换成.mp3 老歌精选-歌曲z
@chcp 65001 >nul echo off :: 获取文件名 SET filePath=%1 :: 因为这里目录的路径是 E:\老歌精选-歌曲z 是11个字符,所以是从第12个字符到最后 ...
- 摆脱鼠标系列 - vscode vim - 自动切换到英文 - im-select
为什么 摆脱鼠标系列 - vscode vim - 自动切换到英文 - im-select 省得每次都得按 shfit 下载软件 https://gitee.com/pengchenggang/im- ...