Vue2实践揭秘读书笔记(1)——Vue概要

< Vue2 >从0到1的教学实践分享 父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!使用监听事件使用触发事件另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。以下实例中子组件已经和它外部完全解耦了。它所做的只是触发一个父组件关心的内部事件。 阅读详情

Vue.js与Angular2和React相比,Vue.js一开始就为我们铺平入门的道路,脚手架vue-cli。
因为它的存在,省去了手工配置开发环境、运行环境和测试环境的步骤,开发者可以直接步入Vue.js开发的殿堂。

在开始之前,先安装npm,然后输入vue-cli安装到全局环境
npm i vue-cli -g
然后,开始建立工程
vue init webpack-simple vue-todos
然后进入vue-todos目录,安装脚手架项目的基本支持包:
npm i
安装完支持包后键入以下指令就可以运行一个由脚手架构建的基本Vue.js程序
npm run dev

vue-cli的代码结构

——README.md
——index.html					# 默认启动页面
——package.json 					# npm 包配置文件
——src
	——App.vue				# 启动组件
	——assets
		——logo.png
	——main.js				# Vue 实例启动入口
——webpack.config.js				# webpack 配置文件

main.js文件

import Vue from 'vue'
import App from './App.vue'

new Vue({
	el: '#app',
	render: h => h(App)
})

Vue2新增的特色Render方法,与React渲染机制一样。为了得到更好的运行速度,Vue2也采用了Virtual DOM。一种比浏览器原生的DOM具有更好性能的虚拟组件模型。

通过import将一个Vue.js的组件文件引入,并创建一个Vue对象的实例,在Vue实例中用Render方法来绘制这个Vue组件(App)就完成了初始化。

将Vue实例绑定到一个页面上,真实存在的元素App Vue程序就引导成功了。

打开index.html文件就能看到Vue实例与页面的对应关系:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
</head>
<body>
	<!-- Vue 的实例所对应的页面元素 -->
	<div id="app"></div>
	<!-- 由Webpack 编译后的运行文件 -->
	<script src="/dist/build.js"></script>
</body>
</html>

一个Vue实例必须与一个页面元素绑定。Vue实例一般用作Vue的全局配置来使用,例如向实例安装路由、资源插件,配置应用于全局的自定义过滤器、自定义指令等。

App.vue文件被称为单页式组件。.vue文件可以同时承载“视图模板”、“样式定义”和组件代码,使得组件的文件组织更加清晰与统一。

单页组件由三个部分组成

<template>		视图模板
<style>			组件样式表
<script>		组件定义

template属性是V,也就是视图,title属性是M,也就是模型。

从Vue2开始,组件模板必须有且只有一个顶层元素,如果在组件模块内设置多个顶层元素将会引发异常编译。

Vue的视图模板是基于DOM实现的。我们在模板上定义一个网页标题,并通过数据绑定语法将App组件上定义的数据模型绑定到模板上。

在组件脚本定义中使用data定义用于内部访问的数据模型。
使用函数返回是为了可以具有更高的灵活性,例如对内部数据进行一些初始化的处理,官方推荐的用法是采用返回Object对象的函数。

export default {
	data () {
		return {
			title: "vue-todos"
		}
	}
}

数据绑定
我们可以将Vue实例定义看作一个类的定义,data相当于这个类的内部字段属性的定义区域。在Vue实例内的其他地方可以直接用this引用data内定义的任何属性,比如this.title就是引用了data.title。

v-for指令
可以用于枚举一个数组并将对象渲染成一个列表。如果要输出序号,可以用隐藏的index值来进行输出。(:id=“index”)index的值输出到DOM的id属性上,不加’:’,会被认为正在为id属性赋予一个字符串。

Vue的代码中不推荐直接操作DOM。

样式绑定
由于纯CSS的代码量很大,而且需要不断地重复,less更高效。
webpack支持less编译的包的方法:
npm i less style-loader css-loader less-loader -D
安装完成后在webpack.config.js的modules设置内加入以下的配置:

module: {
	rules: [
		{
			test: /\.less/,
			loader: 'style!css!less'
		}
	]
}

在/assets/中添加一个todos.less文件,并在App.vue的组件定义内引入less样式表:

import './assets/todos.less'

export default {
	// ...省略
}

使用import将样式表直接导入到代码的效果是:webpack的less-loader会生成一些代码,在页面运行的时候将编译后的less代码生成到<style>标签内并自动插入到页面的<head>中,有一点要注意,这种做法是全局的,在后面介绍路由部分时会有多个组件页面加载到同一个页上,如果使用import导入样式的话,样式就会长期驻留页面直至Vue的根(root)实例被销毁。这样做得缺点是很容易导致样式冲突。如果希望样式表仅应用于当前组件,可以使用<style scoped>,然后使用CSS的@import导入样式表:

<style scoped>
@import '/.assets/todos.less'
</style>

属性绑定
Vue的属性绑定语法是attribute=“expression”,attribute就是元素接收的属性值(既可以是原生的也可以是自定义的),expression则是在Vue组件内由data或props内定义的对象属性,又或是一个合法的表达式。

如果在元素属性中不加上’:’,Vue认为是向这个属性赋上字符串值而不是Vue组件上定义的属性引用。

样式绑定必然是绑定到判断对象上的:class="{'checked': true}",不能直接写CSS类名,即使要绑定一个固定的CSS类也都要这样写,即:class="{'btn',true}",除非不使用样式绑定。

无论绑定的是样式类还是样式属性,:class和:style表达式内一定是一个JSON对象。

  1. :class的JSON对象的值一定是布尔型的,true表示加上样式,false表示移除样式类。
  2. :style的JSON对象则像是一个样式配置项,key声明属性名,value则是样式属性的具体值。

过滤器
安装一个很出名的时间格式化专用的包——moment.js
npm i moment -S
Vue中用“过滤器”进行模板格式化,实质上是一个只带单一输入参数的函数,在Vue2中已经将原有的内置过滤器移除。在Vue组件中加入自定义过滤器非常简单,只要在filters属性内加入方法定义就可以在模块上使用了。

引入moment

import moment from 'moment'
import 'moment/locale/zh-cn'
moment.locale('zh-cn')

加入过滤器

export default {
	filters: {
		date(val) {
			return moment(val).calendar()
		}
	}
}

模板上应用

<time>{{todo.created | date}}</time>

在所有过滤器中是没有this引用的,一个undefined值。

VUEJS项目实践十之Uncaught ReferenceError: Vue is not defined external “Vue“?548a:1 一、问题背景: 嫌弃vue打包文件太大了,几个页面竟达十几M,优化打包文件的时候,出现了这个问题 Uncaught ReferenceError: Vue is not defined at eval (external “Vue”?548a:1) 二、解决办法 经过周密检查和验证,得出结论, 引入文件的地方放错啦,放的太后面了 错误的放置方式 <!DOCTYPE html> <html> <head> <meta charset="utf-8"&gt 阅读详情

相关推荐

【零基础入门VUE】VueJS - 概述

不会对 DOM 进行更改,而是创建 DOM 的副本,该副本以 JavaScript 数据结构的形式存在。最终的更改会更新到真实的 DOM,用户将看到它的变化。随后,对两个 JavaScript 对象进行比较,并在真实 DOM 中更新最终的更改。Ember 添加了 glimmer 渲染引擎,旨在提高重新渲染性能,这与使用虚拟 DOM 的 VueJS 和 React 是类似的概念。随着时间的推移,淘汰赛的发展速度已经放缓。VueJS 继承了 Angular 和 React 的优点,并构建了一个强大的库。

共同学习、强我国家 1775

探秘Vue.js 2:解密其神奇内部机制

等方面。组件作为 Vue 应用的基本构建块,为构建可复用、高效的应用提供了便利的方式。

青轩桃李能几何,流光欺人忽蹉跎 225

vue2实战揭秘

vue2.0实战揭秘epub版本,作者梁瑞坤,详解vue2.0实战用法

vue2实践揭秘pdf_Vue2实践揭秘

本书以Vue2的实践应用为根基,从实际示例入手,详细讲解Vue2的基础理论应用及高级组件开发,通过简明易懂的实例代码,生动地让读者快速、全方位地掌握Vue2的各种入门技巧以及一些在实际项目中的宝贵经验。本书除了全面、细致地讲述Vue2的生态结构、实际编程技巧和一些从实践中得到的经验,还重点介绍如何以组件化编程思想为指导,以前端工程化方法为实现手段来实践Vue2,通过组件的单元测试和E2E测试来保证...

weixin_39607873的博客 823

Vue2实践揭秘_opt1

介绍Vue生态结构中针对规模庞大的前端程序进行状态管理的利器Vuex,通过实例对 Yuex 的应用原则和结构组成进行一一剖析,讲述如何将各种本来混乱的组件状态通

微信小程序音视频通话(for硬件)授权与设备注册实战指南

本文详细介绍了微信小程序音视频通话(for硬件)组件的开发实践,涵盖授权流程、设备注册与VoIP插件集成。重点解析了如何通过服务端获取snTicket实现用户授权,确保硬件设备与微信端的音视频通话安全可靠,适用于智能门禁、话机等物联网场景。

u6v7w8x的博客 945

《Vue.js实战》读书笔记

阳光之下,人各有份 ------《传道书》

山河已无恙 2257

深入浅出ASAP2标准:手把手教你编写和解析A2L文件(含Python示例代码)

本文深入解析ASAP2标准下的A2L文件,涵盖基础概念、文件结构及Python实现代码,帮助开发者掌握汽车ECU标定和测量中的关键数据管理技术。通过详细示例,展示如何编写和解析A2L文件,提升电控数据管理效率。

happy2的博客 1100

Vue2 设计模式最佳实践(一)

Vue.js 是一个允许您创建高性能 Web 应用程序的 JavaScript 框架。它比竞争对手拥有更小的学习曲线,并且具有详细的文档,其中包含各种示例和用例。Vue.js 应用程序可以使用 Vue CLI 创建,也可以通过script标签将其包含在页面中,因此在没有构建系统的项目中使用非常简单。与其他现代 Web 框架/库类似,Vue.js 是组件驱动的,这意味着您可以创建具有自己视图/数据逻辑的自包含单元。这使得我们的应用程序可以随着规模的扩大而扩展,因为任何更改都可以从彼此中封装起来。

龙哥盟 954

C++结合大漠插件实现DNF自动化脚本:从原理到实战

自动化技术通过模拟用户操作,实现重复性任务的自动执行,其核心原理在于对系统输入输出接口的精确控制。在Windows平台,这通常涉及窗口管理、图像识别与键鼠模拟等技术。这些技术为软件自动化测试、办公流程自动化及特定场景的辅助工具开发提供了工程实践基础。大漠插件作为国内广泛使用的Windows自动化开发组件,封装了上述底层操作,显著降低了开发门槛。通过其提供的COM接口,开发者可以高效实现窗口绑定、后台找图找色及内存读写等关键功能。本文以《地下城与勇士》为例,详细解析如何利用C++集成大漠插件,构建一个稳定、高

weixin_34185512的博客 576

华为Atlas 300I推理卡驱动安装避坑指南:不同安装方式的选择与优化

本文详细解析华为Atlas 300I推理卡驱动安装的三种主流方式(.run、.rpm和源码编译),提供关键环境检查步骤、安装流程优化建议及常见问题解决方案,帮助开发者高效完成芯片推理卡部署并规避典型安装陷阱。

q9w8e7r6t5的博客 431

开发者实践:为了“网课”不痛苦,在校生做出了自己在线教育系统

在 RTC 2020 编程挑战赛春季赛中,一站式云课堂 Xeducation 获得了第二赛道的最佳实践奖。开发这个项目的团队是来自上海科技大学的几名在校生。经过疫情期间的网课学习后,他们...

声网的博客 1180

PCL 快速均匀下采样

快速均匀下采样 是一种点云降采样技术,通过设置采样步长来实现等距降采样,从而减少点的数量。用户可以通过指定步长,选择每隔一定数量的点采样一个点,这样可以在保持点云几何特性的同时,显著减少点的数量。

纵马踏花向自由 870

Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决

这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题 所需的所有文件,链接:https://pan.baidu.com/s/19GWDS_7GodIdFBUO0eTDAg 提取码:2yvc 一、vue.js插件下载 下载地址:vue.js插件下载; 点击进入Vue官网即可下载,共有两种版本的插件(开发版本:vue.js,生产版本:vue.main.js),建议使用开发版本。开发版本有更多的错误信息提示和调试,文件较大,生产办文件小但是很多提示不全,解决开发

goog_man的博客 6万+

JumpServer未授权访问漏洞 CVE-2023-42442

JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统。 JumpServer 使用Python / Django 进行开发。2021年1月15日,阿里云应急响应中心监控到开源堡垒机JumpServer发布更新,修复了一处远程命令执行漏洞。由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求获取到日志文件获取敏感信息,或者执行相关API操作控制其中所有机器。

holyxp的博客 1424

一文搞懂 JavaScript 模块化规范:CommonJS、AMD、ES6 Module

在现代 JavaScript 开发中,模块化是提升代码组织性和可维护性的关键。本文深入解析三种主流的模块化规范——CommonJS、AMD 和 ES6 Module。

Allen- 3479

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

ranran0306的博客 9707

C# MVVM的“核武器”:CommunityToolkit.Mvvm的RelayCommand实战全解

你默默打开VS:“该用RelayCommand的‘量子纠缠’魔法了!用户点击按钮无响应,调试器显示命令未绑定,但代码看起来完美无缺。“我的MVVM应用?那可是能穿越线程的命令量子计算机!异步操作阻塞了UI线程,用户界面变成“加载中”死循环。:UI与业务逻辑通过命令“量子隧道”解耦。:所有长时间操作自动进入“量子跃迁”模式。:携带任意上下文的“量子信封”传递。:命令可用性随数据变化实时同步。

java专栏 663

vue2实践揭秘pdf_《Vue2实践揭秘》补充更新 - vue-cli v2.8.2

我在撰写《Vue2实践揭秘》时采用的 vue-cli 版本是 v2.5.1,由于实体书的出版周期比电子书的要长,所以到全书出版vue-cli已经更新到 v2.8.2 了,我在书中曾经对 vue-cli 的全部官方模板进行过一个全面的解释,今天看了到这个更新版本算一算日子也已经与我写书时相距接近半年了,所以也特意重新来对每个模板过了一遍,作为对《Vue2实践揭秘》的补充更新吧。先来看看有啥不同:vu...

weixin_39543478的博客 281

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vuejs插件_VueJS 2的基本翻译插件

vuejs插件 Vue-Polyglot (Vue-Polyglot) basic translation plugin for VueJS 2+. VueJS 2+的基本翻译插件。 View demo 查看演示 Download Source 下载源 安装 (Installation) npm install --save vue-polyglot TLDR (TLDR) can lo...

cuk5340的博客 2152

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

探索Vue.js的无限可能 —— vuejs-challenges

挑战自我,共同成长,Vue.js挑战等你来战!

2401_83063795的博客 2848

vue和vuejs区别_D3vue-VueJS的D3插件

vue和vuejs区别 D3vue (D3vue) D3 integration with Vue.js. 与Vue.js的D3集成。 View demo 查看演示 Download Source 下载源 d3vue is a plugin for VueJS 2 that allows you to take data from your Vue instance and bind ...

cuk5340的博客 3281

vue2实践揭秘pdf_《Vue2.0 实践揭秘》终于出版啦!

不知不觉间在园子开博都两年多了,最近一些园友问最近去哪了为何都没有新的文章了。最近确实发生了很多的事,一是忙工作二就是忙着写书。这还得多些园子的小编,自两年前发表的“架构师修炼”系列的文章后被出版社相出让我将这个主题写成书,从那时起就开始写书了,可惜啊,本人的文笔水平真不咋样而又怕这个主题所涵盖的面太广写得不好,修修改改就过了二年多,到现在还一直没出版呢。能成为一名技术作者最感谢的首先就是博客园了...

weixin_39654322的博客 298

推荐:Vue.js 官方文档日语版项目 - vuejs/jp.vuejs.org

推荐:Vue.js 官方文档日语版项目 - vuejs/jp.vuejs.org 在这个飞速发展的前端世界里,拥有清晰、详尽的文档是至关重要的。Vue.js,作为一款轻量级但功能强大的渐进式框架,其官方文档一直是开发者的重要学习资源。现在,对于日语使用者来说,有一个绝佳的机会,那就是参与并使用由社区维护的 vuejs/jp.vuejs.org 项目,它提供了 Vue.js 2.x 版本的日语文档。...

gitblog_00009的博客 1160

VueJS WebPack separating javascript from vue

VueJS 与 Webpack:将 JavaScript 从 Vue 文件中分离

suiusoar 1351

【亲测免费】 Vue.js 日志记录器(vuejs-logger)实用教程

Vue.js 日志记录器(vuejs-logger)实用教程 项目介绍 vuejs-logger 是一个专为 Vue.js 应用设计的日志记录库,兼容 Vue2。它提供了一个可定制的日志功能,允许开发人员根据设定的日志级别来筛选显示的信息。此库的特点包括彩色的控制台消息显示,对于传递给日志器的(可能是响应式的)属性自动执行 JSON.stringify() 处理,以及展示不同严重性的日志消息能力,...

gitblog_00413的博客 1868
上一篇: 双向数据绑定
下一篇: Vue2实践揭秘读书笔记(2)——webpack模板以及构建工具
DoubleSRZee
博客等级 码龄10年 7粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值