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 学习内容: ...
随机推荐
- 我在winform项目里使用“Windows I/O完成端口”的经验分享
少年!看你骨骼惊奇,是万中无一的练武奇才,我这儿有本武林秘籍,见与你有缘就送你了! 如来神掌 Windows I/O完成端口是一个我至今都说不好的话题,请宽容的接受我这不是科班出身的自学成才的野生程序 ...
- C++ { } 的使用场景
{} 可以用于初始化 C++11 中的变量,就像它们用于初始化 C 中的数组和结构一样. {} 主要是为了提供语法的一致性(使用 {} 初始化将在所有上下文中都有效,而使用赋值运算符或()初始化将在特 ...
- ASCII编码的影响与作用:数字化时代的不可或缺之物
一.ASCII编码的起源 ASCII(American Standard Code for Information Interchange)编码是一种最早用于将字符转换为数字的编码系统.它诞生于20世 ...
- 具备有效期的sessionStorage存储
具备有效期的sessionStorage存储 类方式 // 具备有效期的sessionStorage存储-类方式. class SessionStorageWrapper { // 存储数据到sess ...
- Xray安全评估工具使用
xray 是一款功能强大的安全评估工具,主要特性有: 检测速度快.发包速度快; 漏洞检测算法高效. 支持范围广.大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持 ...
- 基于java的图书管理系统
基于java的图书管理系统 项目概述 使用数组存储数据实现一个图书管理系统,完成的功能有增加图书.删除图书.更新图书.查询图书.图书列表.增删改查 登陆注册 首页 图书更新 图书列表 开发工具/技术 ...
- ABP Suite创建新项目
启动Abp Suite ********************************************************************** ** Visual Studio ...
- NodeJS开启GZIP功能
gzip是用于压缩,效果特别好,js.css等文件的压缩率一般高达70% 具体方法如下: 先安装一个依赖 npm install compression --save 然后在已有代码里(一般是app. ...
- Linux_Centos_yum报错总结
此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...
- Android switch语句报错Constant expression required
方案一 :可以用 if来替代 如下 原因:在Android Studio中使用JDK17以上版本,会出现switch语句报错"Constant expression required&qu ...