版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Vue.js3.0从入门到实践教学设计课程名称:Vue.js3.0从入门到实践授课年级:授课学期:教师姓名:年月日课程名称第1章 Vue.js简介计划学时2内容分析随着前端技术的发展,网页依赖于JavaScript技术的网页交互能力得到长足的发展,JavaScript使网页的用户提要更为具象化。网页动态化的增强必然要求复杂JavaScript逻辑代码的支持,成千上万行的JavaScript代码连接着HTML和CSS文件,但是传统的解决方案都不够灵活和可定制,于是Vue.js框架应运而生。Vue.js框架是一个依赖于JavaScript的轻量级框架,可将HTML、CSS和JS组合到一个组件中进行组件化开发,实现数据与结构分离,减少代码量,提升开发效率。在使用Vue.js3.0创建项目前,应先了解基本的Web前端技术与Vue.js的相关知识。本章将重点介绍Web前端的发展历程、MV*模式、Vue.js的相关知识和Vue.js3.0的新变化,带领读者开启Vue.js前端开发之旅。教学目标与教学要求【知识目标】了解Web前端的发展历程了解MV*模式的异同理解Vue.js的相关知识掌握Vue.js3.0的新变化【技能目标】能够描述MV*模式的异同能够归纳Vue.js3.0的新变化【育人目标】通过引导学生发现问题、提出问题和解决问题的过程,培养学生的求知欲,激发学生的创新思维。引导学生编写高质量、可靠、安全的代码,培养学生遵守编程方面的相关法律和道德准则。教学重点MV*模式渐进式框架响应式系统前端框架对比Vue.js3.0的新变化教学难点无教学方式课堂讲解配合PPT演示教学过程第一课时(Web前端发展历程、MV*模式、Vue的发展历程、Vue的生态系统)提出需求,导入学习任务通过情景导入的方式引出本节内容老师通过讲解Web前端发展历史引出要讲解的Web前端发展历程、MV*模式、Vue的发展历程、Vue的生态系统。明确学习目标了解Web前端发展历程理解MV*模式的异同了解Vue的发展历程了解Vue的生态系统知识讲解知识点1-Web前端发展历程在近30年的前端发展进程中,各种前端技术层出不穷,根据主流技术的更迭可将前端发展进程划分为7个时期,接下来将详细介绍这七大时期。静态页面阶段JavaScript诞生AJAX开启Web2.0时代前端兼容性框架的出现HTML5的出现前端三大主流框架ECMAScript6.0的发布知识点2-MV*模式本节将围绕MVC模式、MVP模式和MVVM模式进行介绍。MVC模式MVC(ModelViewController)是软件工程中的一种软件架构模式,它把软件系统分为模型(Model,简称M)、视图(View,简称V)和控制器(Controller,简称C)三个基本部分。MVC模式的示意图如下图所示。MVP模式在MVP模式中,模型(Model)提供数据、视图(View)负责显示、表示器(Presenter)负责处理业务逻辑。MVP模式的示意图如下图所示。MVVM模式MVVM(Model-View-ViewModel)模式由模型(Model,简称M)、视图(View,简称V)和视图模型(ViewModel,简称VM)三部分组成,它本质上仍是MVC的改进版。MVVM模式的示意图如下图所示。知识点3-Vue的发展历程时至今日Vue已历经多次更新,其发展过程如下所示。2013年12月7日,Vue的0.6.0版在GitHub上发布。2015年10月26日,正式发布了1.0.0版本,Vue被越来越多的开发者所接纳。2016年10月1日,正式发布了2.0.0版本。2017年发布了多个Vue版本,该年度发布的第一个Vue版本是v2.1.9,该年度发布的最后一个版本为v2.5.13。2019年正式发布Vue的稳定版本v2.5.13。2020年9月18日,Vue.js3.0正式发布,代号OnePiece。本书将基于新发布的Vue.js3.0版本进行知识讲解。知识点4-Vue的生态系统Vue的生态系统结构图如下图所示。Vue不仅能够满足小型的前端项目开发,还能够支持大型前端项目的开发,Vue践行前后端分离式开发,可实现项目的快速开发。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第二课时(渐进式框架、响应式系统、前端框架对比、Vue.js3.0的新变化)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的渐进式框架、响应式系统、前端框架对比、Vue.js3.0的新变化等内容。明确学习目标理解渐进式框架理解响应式系统理解前端框架对比掌握Vue.js3.0的新变化知识讲解知识点1-渐进式框架“渐进式”就是将框架进行分层规划,框架的每层功能都是独立可自选的,不同层可被替换为开发者所熟悉的其他方案。Vue渐进式框架分层结构如下图所示。知识点2-响应式系统Vue的MVVM模式实现了数据的双向数据绑定,为Vue构建了一套响应式系统。响应式系统可在数据变化时自动渲染视图,接下来分别介绍Vue2与Vue3的响应式原理。Vue2使用ES5的Object.defineProperty()方法,重新定义对象获取属性值的方法get()和设置属性值的方法set(),实现了Vue的“双向数据绑定”操作。Vue的作者重构了Vue3响应式系统,使用ES6中的Proxy替换Object.defineProperty()方法。Proxy被称为代理器,可实现对其他对象的代理,外界对被代理对象进行的所有操作,均会被Proxy拦截、过滤、代理操作。知识点3-前端框架对比接下来将介绍Vue与Angular、React这两个前端主流框架的比较。ue与AngularAngular是强主张的,开发者使用Angular时,必须接受它的使用规则,如模块机制、必须依赖注入、特殊形式定义组件等。Vue与ReactReact与Vue存在很多相同之处,如React和Vue均支持数据驱动视图、组件化、虚拟DOM和Diff算法。当开发者想要一个轻量级,更快速,更现代的框架来制作单页面应用程序时,推荐选择Vue,开发大规模应用程序和移动应用程序时推荐选择React。知识点4-Vue.js3.0的新变化接下来将简要介绍Vue3的新变化。响应式系统性能优化组合API(CompositionAPI)碎片(Fragment)Tree-shaking支持Teleport悬念(Suspense)更好的TypeScript支持知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。习题教材第1章习题教学后记Vue.js3.0从入门到实践教学设计课程名称:Vue.js3.0从入门到实践授课年级:授课学期:教师姓名:年月日课程名称第2章 Vue.js环境搭建与项目创建计划学时3内容分析在开发Vue前端页面之前,需要搭建好开发和测试环境,良好的开发环境对于稳定开发者以及提高生产效率都有着不可忽视的作用。在创建Vue项目之前,需要先搭建良好的Vue.js开发环境,包括安装Vue.js,理解Vue.js多种安装方式的不同之处,选择并安装合适的开发工具,进而提高开发效率,安装为调试项目服务的调试工具vue-devtools等,使开发者在完成环境搭建的基础上掌握Vue项目创建的方法,带领读者开启Vue前端开发之旅。教学目标与教学要求【知识目标】了解Vue.js的多种安装方法掌握Vue.js开发工具的安装熟悉Vue.js调试工具的安装掌握Vue.js项目创建的技巧【技能目标】能够正确安装Vue.js开发工具能够正确安装Vue.js调试工具能够创建Vue.js项目【育人目标】鼓励学生动手实践,培养学生的创新思维,促进学生的个性发展。培养学生网络的伦理道德和法律法规,促进学生养成良好的习惯。教学重点安装Vue.js安装VSCode安装vue-devtools实训:创建第一个Vue.js程序教学难点实训:创建第一个Vue.js程序教学方式课堂讲解配合PPT演示教学过程第一课时(安装Vue.js、Web前端开发工具)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的安装Vue.js、Web前端开发工具等内容。明确学习目标掌握Vue.js的安装方式理解Web前端开发工具VisualStudioCode知识讲解知识点1-安装Vue.jsVue.js的常用安装方式主要有4种,包括CDN方式、NPM方式、VueCLI方式、Vite方式。CDN方式安装Vue.jsCDN方式安装Vue.js的语法格式开发者可借助script标签实现CDN方式安装Vue.js,语法格式如下所示。<scriptsrc="/vue@next"></script>CDN方式安装Vue.js的优缺点优点:不需要下载和安装Vue.js,可以直接使用CDN文件,减少了本地文件占用和维护的成本。缺点:依赖于CDN服务商,可能会出现CDN服务不稳定或者CDN文件更新不及时的情况。NPM方式安装Vue.jsNPM方式安装Vue.js的命令代码NPM方式安装Vue.js的命令代码如下所示。#安装最新稳定版$npminstallvue@next安装CNPM的命令代码如下所示。npminstall-gcnpm--registry=完成CNPM安装后,开发者可使用cnpm命令安装项目所需模块,具体命令代码如下所示。cnpminstall模块名称NPM方式安装Vue.js的优缺点优点:可以自由选择Vue的版本和更新方式;可以使用Vue的脚手架工具VueCLI,方便快捷地创建和管理Vue项目;可以和其他NPM包管理器配合使用。缺点:需要下载和安装Node.js和NPM环境,增加了本地文件占用和维护成本。安装速度可能会受到网络环境的影响。VueCLI安装Vue提供了一个官方的脚手架VueCLI,它可以快速搭建一个应用,它为现代前端提供了batteries-included的构建设置。若读者是初学者,建议读者先熟悉Vue本身之后再使用VueCLI。本书将在第9章将详细介绍脚手架的安装及使用。Vite安装Vite是Vue的作者开发的一个面向现代浏览器的,更加轻量、快捷的前端构建工具,Vite可为前端工作者提供良好的开发体验。本书将在第9章详细介绍Vite的安装与使用。知识点2-Web前端开发工具目前市场上主流的Web前端开发工具有WebStorm、VisualStudioCode、SublimeText、HBuilderX、Dreamweaver等,本书选用的开发工具是VisualStudioCode。VisualStudioCode(简称VSCode)是微软开发的一个轻量级代码编辑器,支持常见的语法提示、代码高亮、Git等功能,具有开源、免费、跨平台、插件扩展丰富、运行速度快、占用内存少,开发效率高等特点,网页开发中经常会使用到该软件,非常灵活方便。读者可进入VSCode官方页面,下载VSCode的安装包进行安装,官方页面如下图所示。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第二课时(安装VSCode、安装vue-devtools、实训:创建第一个Vue.js程序)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的安装VSCode、安装vue-devtools、实训:创建第一个Vue.js程序等内容。明确学习目标掌握VSCode的安装方式掌握vue-devtools的安装方式掌握创建第一个Vue.js程序的方式知识讲解知识点1-安装VSCode本节将对VSCode的安装和VSCode插件的安装进行介绍。VSCode的安装首先打开VSCode的官方网站,选择Windows选项中的UserInstaller下载VSCode。下载完成后的文件名为VSCodeUserSetup-x64-1.67.0.exe,运行该文件进入VSCode的安装界面,根据向导界面的提示,连续单击“下一步”按钮即可完成VSCode的安装。VSCode插件的安装接下来将详细介绍Vue开发中常用的4个插件。Chinese中文Vetur代码高亮ESLint代码检测校验CodeRunner快捷运行知识点2-安装vue-devtoolsvue-devtools是一款基于GoogleChrome浏览器、用于调试Vue应用的浏览器扩展。接下来介绍vue-devtools的安装步骤。下载压缩包解压安装包下载第三方依赖执行npminstall-gyarn命令安装yarn。执行yarninstall命令下载第三方依赖。vue-devtools源码编译完成后,可查看devtools-main文件夹的目录结构。Google浏览器的开发者模式打开Google浏览器,选择扩展程序选项。进入扩展程序管理页面,单击开发者模式右侧的单选按钮开启开发者模式。安装vue-devtools开启Google浏览器的开发者模式后,单击“加载已解压的扩展程序”按钮并选择devtools-main文件夹下的packages\shell-chrome文件夹,即可安装vue-devtools扩展。知识点3-实训:创建第一个Vue.js程序本节将以八大菜系为主题,构建一个“菜系介绍”页面。菜系介绍页面结构简图菜系介绍页面的结构简图如下图所示。实现菜系介绍页面效果使用Vue创建程序非常简单,具体步骤如下所示。第1步,安装Vue.js库并使用Vue.createApp()方法创建一个应用程序实例。第2步,在data()函数中定义页面中需要渲染的数据,将data()中的数据通过{{}}插值语法展示在页面中。第3步,调用mount()方法在指定的DOM元素上挂载应用程序实例的根组件,实现数据的双向绑定,具体代码可参考教学PPT或教材。读者可使用浏览器控制台或vue-devtools调试工具来验证其数据的响应性。Console选项在浏览器中运行上述代码,按下F12键打开控制台,切换至Console选项,并输入vm.detail="豆腐为补益、清热养生食品",按下Enter键,可以发现页面中的详情介绍内容同步发生了变化,显示效果如下图所示。Vue选项使用vue-devtools进行调试,按下F12键打开控制台,切换至Vue选项,并修改detail="此菜夏天食用能生津止渴",单击“保存”按钮,可以发现页面中的内容同步发生了变化,显示效果如下图所示。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第三课时(上机练习)上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。上机:(考察知识点为安装Vue.js、安装VSCode、安装vue-devtools、实训:创建第一个Vue.js程序)形式:单独完成题目:请按照以下要求完成操作,要求如下:完成Vue.js、VSCode、vue-devtools的安装;完成创建第一个Vue.js程序。习题教材第2章习题教学后记Vue.js3.0从入门到实践教学设计课程名称:Vue.js3.0从入门到实践授课年级:授课学期:教师姓名:年月日课程名称第3章 ECMAScript6语法计划学时8内容分析ECMAScript6(简称ES6)是ECMAScript5(简称ES5)之后发布的JavaScript语言的新一代标准,其中包含了很多新的特性和语法。以Chrome和Firefox为首的现代浏览器对ES6的支持相当迅速,不仅支持了ES6的绝大多数特性,还使ES6的普及速度远超ES5。ES6的目标是使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级的开发语言。在Vue项目中经常使用ES6语法,本章将带领读者学习ES6新标准中的一些特性与常用语法。教学目标与教学要求【知识目标】了解ECMAScript6基本知识掌握块作用域构造与模板字符串的使用掌握ECMAScript6默认参数与rest参数的使用掌握展开运算符、解构赋值、箭头函数的使用掌握Symbol、Promise、Class的基本语法掌握Module模块与async函数的基本语法【技能目标】能够正确使用块作用域构造与模板字符串能够正确使用ECMAScript6默认参数与rest参数能够正确使用展开运算符、解构赋值、箭头函数能够正确使用Symbol、Promise、Class的基本语法能够正确使用Module模块与async函数的基本语法【育人目标】鼓励学生动手实践,培养学生的创新思维,促进学生的个性发展。培养学生网络的伦理道德和法律法规,促进学生养成良好的习惯。教学重点let声明const声明模板字面量默认参数rest参数展开运算符解构的必要性对象解构数组解构箭头函数的基本语法箭头函数与this指向实验:用户信息页Symbol的基本语法作为属性名的Symbol共享的SymbolPromise的基本语法Promise的生命周期Promise的原型方法ClassModule模块async函数实训:商品订单页面教学难点实验:用户信息页实训:商品订单页面教学方式课堂讲解配合PPT演示教学过程第一、二课时(ECMAScript6介绍、let声、const声明、模板字面量、默认参数、rest参数、展开运算符)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的ECMAScript6介绍、let声、const声明、模板字面量、默认参数、rest参数、展开运算符等内容。明确学习目标了解ECMAScript6的简介掌握let声、const声明、模板字面量的使用掌握默认参数和rest参数的使用掌握展开运算符的使用知识讲解知识点1-ECMAScript6介绍Navigator在浏览器市场上落于下风,于是网景通信公司将JavaScript提交到欧洲计算机制造商协会(EuropeanComputerManufacturersAssociation,ECMA),推动制定了ECMAScript标准,这也是ECMAScript6的由来。随着JavaScript的一次次更新,ECMAScript也发布了多个版本,ECMAScript的版本更新具体参考教学PPT或教材。知识点2-let声ES6新增了let命令用于声明变量,其用法与var命令类似。但let命令声明的变量具有块级作用域,不存在变量提升机制,可产生暂时性死区效果,不可在同一作用域下重复声明同名变量。块级作用域let命令所声明的变量只在let命令所在的代码块内有效。暂时性死区JavaScript的变量提升机制使var命令声明的变量,无论在何处声明均会被视为在当前作用域顶部声明的变量。但let命令声明的变量不存在变量提升机制,在变量声明之前使用该变量,该变量不可访问且会形成暂时性死区。不可重复声明var命令可以重复声明同名变量,后定义的变量将覆盖先声明的变量。在ES6中,let命令可用于避免变量的重复声明。知识点3-const声明ES6新增了const命令用于声明常量,其用法与let命令类似,同样具有块级作用域,不存在变量提升机制,可产生暂时性死区效果,不可重复声明。const命令声明的常量不可改变,且必须在声明的同时对常量进行初始化。下面对const常量的初始化、一次赋值、对象常量、全局块作用域绑定进行介绍。const常量初始化每个使用const命令声明的常量都必须在声明的同时进行初始化赋值。consta=10;//正确constb;//报错:'const'declarationsmustbeinitializedb=100;const常量的一次赋值当const命令声明的常量是基础数据类型时,不可修改该常量的值。const常量的一次赋值与多次赋值效果,示例代码如下。consta="hello";a="你好";//报错:"Assignmenttoconstantvariable."const对象常量当const命令声明的常量是引用数据类型的时候,其栈内存的引用地址不可更改,其堆内存中保存的值可以被更改。const命令声明的对象常量的属性修改,示例代码如下。constobj={prices:'100'};obj.prices="200";//可修改对象的属性值console.log(obj);//输出:{prices:'200'}//不可修改对象的引用地址,抛出错误提示"Assignmenttoconstantvariable."obj={prices="300"};全局块作用域绑定var命令与let、const命令的另一个区别是它们在全局作用域中的行为,在全局作用域中使用var命令会创建一个新的全局变量作为全局对象(window)的属性,这意味着var命令声明的变量可能会覆盖一个已经存在的全局属性。知识点4-模板字面量ES6引入了模板字面量(TemplateLiterals),以模板字面量的方式对ES5的字符串操作进行了增强,如新增了多行字符串、字符串占位符等。模板字面量的基础用法模板字面量的基础用法,示例代码如下。letmessage=`HelloWorld`;console.log(message);//输出结果:"HelloWorld"对模板字面量内的反引号进行转义,示例代码如下。letmessage2=`\`Hello\`World`;console.log(message2);//输出结果:"`Hello`World"多行字符串多行字符串可以提升代码的可读性和可维护性,下面介绍ES5与ES6中多行字符串的创建方法。ES5的多行字符串创建方法ES6的多行字符串创建方法字符串占位符在ES6新增的模板字面量中,可将JavaScript变量或合法的JavaScript表达式嵌入字符串占位符并将其作为字符串的组成部分输出到页面中。模板字面量的嵌套示例事实上,模板字面量也是JavaScript表达式,读者可在一个模板字面量内嵌套另一个模板字面量。知识点5-默认参数下面对ES5中的模拟默认参数和ES6中的默认参数进行介绍。ES5中模拟默认参数在ES5中,没有直接在函数参数列表中设置默认值的语法,如果想为函数参数设置默认值,需要使用短路运算符来模拟。2.ES6中的默认参数ES6简化了为形参设置默认值的过程,可直接在参数列表中为形参指定默认值。知识点6-rest参数下面对arguments对象、rest参数的语法格式及示例进行介绍。arguments对象JavaScript允许开发者声明任意数量的形参,可以传入任意数量的实参,并提供了arguments对象接收传入的所有实参。rest参数的语法格式ES6为弥补arguments对象的不足引入了不定参数(RestParameters,简称rest参数)。在函数的命名参数前添加3个点(···)即可定义一个rest参数,该参数是一个数组,包含自它之后传入的所有参数,使用该命名参数即可逐一访问里面的参数。与arguments不同,rest参数可调用JavaScript的数组方法。rest参数的语法格式如下所示。function(op,...data){}rest参数示例使用rest参数设计一个一则运算函数,具体代码可参考教学PPT或教材。知识点7-展开运算符展开运算符可将一个数组转为用逗号分隔的参数序列,即“展开”一个数组使其变为多个元素,也可取出对象的所有可遍历属性,而rest参数则会收集多个各自独立的元素并将其“压缩”成一个伪数组。函数调用与展开运算符在函数调用中使用展开运算符,可将数组中的全部数据作为实参传入函数中。数组与展开运算符(1)复制数组在数组中使用展开运算符可实现数组的深拷贝。(2)合并数组展开运算符可实现数组的快速合并,接下来使用展开运算符演示合并数组。对象与展开运算符展开运算符还可用于取出对象的所有可遍历属性,并将其复制于当前对象中。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第三、四课时(解构的必要性、对象解构、数组解构、箭头函数的基本语法、箭头函数与this指向、实验:用户信息页、Symbol的基本语法、作为属性名的Symbol、共享的Symbol)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的解构的必要性、对象解构、数组解构、箭头函数的基本语法、箭头函数与this指向、实验:用户信息页、Symbol的基本语法、作为属性名的Symbol、共享的Symbol等内容。明确学习目标理解解构的必要性掌握对象解构和数组解构的使用方式掌握箭头函数的基本语法、箭头函数与this指向掌握用户信息页的实现掌握Symbol的基本语法、作为属性名的Symbol、共享的Symbol的使用方式知识讲解知识点1-解构的必要性在ES5中,从数组或对象中提取指定数据并赋值给变量需要大量的同质化代码。接下来以用户信息为主题来演示获取对象中的数据并赋值给新变量,具体代码如下所示。identify.htmlletuser={username:'张明明',identify:'vip',favorable:'99%'};letname=user.username;letid=user.identify;console.log(name,id);//输出结果:张明明vip上述代码中,从对象user中提取了username和identify的值并分别将其存储为变量name和变量id,高度同质化的数据提取,造成了代码的冗余。当目标对象的数据结构复杂,提取的数据量较大时,不建议使用该方法。知识点2-对象解构对象解构的语法形式是在一个赋值操作符的左侧放置一个对象字面量。下面对对象解构基本用法、对象解构赋值和默认值进行介绍。对象解构的基本用法在解构对象时,等号左侧的变量与其右侧对象的属性必须同名,才可取到正确的值。对象的属性没有次序,变量顺序与属性顺序无需保持一致。对象解构的基本用法,示例代码如下。letmsg={foo:'aaa',bar:'bbb'}let{foo,bar}=msg;//对象解构console.log(foo,bar);//输出结果:"aaa,bbb"当等号左侧的变量没有对应的同名属性时,对象解构失败,变量获取不到值,则变量的值为undefined,示例代码如下。letmsg={foo:'aaa',bar:'bbb'}let{baz}=msg;console.log(baz);//输出结果:undefined对象解构赋值在已声明变量的前提下,使用解构赋值语法修改变量值,需要使用圆括号包裹整个解构赋值语句,语法格式如下所示。({变量1,变量2}=对象1);对象解构的默认值在对象解构中,当指定的本地变量名称在对象中不存在时,则该本地变量的值会被赋值为undefined,具体案例可参考对象解构的基本语法中对象解构失败演示。在此类情况下,读者可考虑为该本地变量定义一个默认值,即在变量后添加一个等号(=)和相应的默认值。接下来将演示对象解构的默认值设置,示例代码如下。letmsg={foo:'aaa',bar:'bbb'};let{baz='hello'}=msg;console.log(baz);//输出结果:'hello'知识点3-数组解构下面对数组解构基本用法、数组的不完全解构、数组解构赋值和默认值进行介绍。数组解构的基本语法数组解构依赖于数组字面量([]),解构操作在数组内进行。在解构数组时,变量值是根据数组中元素的顺序进行获取的。数组解构的语法格式如下所示。let对象=[元素1,元素2,元素3];let[变量1,变量2,变量3]=对象;console.log(变量1,变量2,变量3);//输出结果:"元素1,元素2,元素3"数组的不完全解构数组的不完全解构即忽略数组中的部分元素,只为部分元素提供变量名。数组解构赋值数组解构语法同样支持解构赋值,读者可借助数组解构赋值语句修改已声明变量的值。与对象解构赋值不同,数组解构赋值无需使用圆括号。数组解构的默认值数组解构赋值表达式同样支持为本地变量添加默认值,当数组中指定位置的元素不存在或元素值为undefined时,该默认值生效。本质上,对象解构与数组解构均属于“模式匹配”,当等号两边的模式相同时,左边的变量就会被赋予对应的值。知识点4-箭头函数的基本语法箭头函数的语法多变,但均由函数参数、箭头和函数体组成,读者可根据具体的实际情况采取指定写法。下面对函数参数和函数体的多种情况进行介绍。函数参数的多种情况(1)单一参数、函数体仅一条语句的箭头函数,其语法格式如下所示。lethello=mag=>msg;将上述箭头函数解释为传统JavaScript函数形式,其函数结构如下所示。functionhello(msg){returnmsg;};(2)多个参数、函数体仅一条语句的箭头函数,其语法格式如下所示。letsum=(num1,num)=>num1+num2;将上述箭头函数解释为传统JavaScript函数形式,其函数结构如下所示。functionsum(num1,num){returnb=num1+num2;};(3)无参数、函数体仅一条语句的箭头函数,其语法格式如下所示。letalertMsg=()=>"Noparameters";将上述箭头函数解释为传统JavaScript函数形式,其函数结构如下所示。functionalertMsg(){return"Noparameters";};函数体的多种情况(1)函数体内有多条语句的箭头函数,其语法格式如下所示。letsum=(num1,num2)=>{letnum3=num1+num2;returnnum3;};将上述箭头函数解释为传统JavaScript函数形式,其函数结构如下所示。functionsum(num1,num2){letnum3=num1+num2;returnnum3;};对比上述两种函数形式,可知当函数体内有多条函数时,需要使用一对花括号包裹函数体。(2)无参数、函数体内无语句的空箭头函数,其语法格式如下所示。letemptyBox=()=>{};将上述箭头函数解释为传统JavaScript函数形式,其函数结构如下所示。functionemptyBox(){};(3)返回值是一个对象字面量的箭头函数,其语法格式如下所示。letgetName=(id,username)=>({id:id,name:username});将上述箭头函数解释为传统JavaScript函数形式,其函数结构如下所示。functiongetName(id,username){return{id:id;name:username;};};知识点5-箭头函数与this指向ES6箭头函数中无this绑定,必须通过查找作用域链来决定其指向。若箭头函数被非箭头函数包含,则箭头函数的this与其外围最近一层的非箭头函数的this指向保持一致,否则,箭头函数的this指向会被设置为全局对象。使用箭头函数时需要注意箭头函数与传统的JavaScript函数的不同之处,主要有以下5个方面。(1)箭头函数没有this、super、arguments和new.target绑定。(2)不可使用new关键字调用箭头函数。(3)箭头函数无原型。(4)不可改变this指向。(5)不支持arguments对象。知识点6-实验:用户信息页实验描述用户信息页结构简图如下图所示。代码实现新建一个名为userInformationDisplayPage的文件夹,并在其中新建一个JS文件,命名为data.js。在data.js文件中定义用户信息页所需的全部数据源,并使用Modele模块化语法将数据源allList与pageMessage抛出,具体代码可参考教学PPT或教材。知识点7-Symbol的基本语法下面对创建Symbol的语法格式和Symbol的可选字符串参数进行介绍。创建Symbol的语法格式一个Symbol数据类型的值被称为“符号类型值”,在JavaScript中符号类型值是使用Symbol()函数创建的,该函数可动态生成一个匿名的、唯一的值。创建Symbol的语法格式如下所示。letfristSn=Symbol();console.log(typeoffristSn);//输出结果:'symbol';Symbol的可选字符串参数Symbol()函数可接收一个可选的字符串参数,字符串参数可用于描述新创建的Symbol实例。该描述性信息不可用于对象的属性访问,主要为开发者调试程序服务,提升代码的阅读性。Symbol()函数接收字符串参数的语法格式如下所示。letsecondSn=Symbol("Descriptiveinformation");console.log(secondSn);//输出结果:'Symbol(Descriptiveinformation)';知识点8-作为属性名的Symbol将Symbol用作属性名的语法格式如下所示。letthirdSn=Symbol("thirdSn");//方式一:letobj={};obj[thirdSn]=”Method1”;console.log(obj);//输出结果:{Symbol(thirdSn):'Method1'};//方式二:letobj2={[thirdSn]:"Method2"};console.log(obj2);//输出结果:{Symbol(thirdSn):'Method2'}//方式三:letobj3={};Object.defineProperty(obj3,thirdSn,{value:"Method3"});console.log(obj3);//输出结果:{Symbol(thirdSn):'Method3'}知识点9-共享的Symbol下面对Symbol.for()方法和Symbol.keyFor()方法进行介绍。Symbol.for()Symbol.for()方法用于创建可共享的Symbol,该方法接受一个字符串参数,此参数一方面是Symbol的标识key,另一方面还被视为Symbol的描述性文字。Symbol.for()方法创建可共享的Symbol的语法格式如下所示。letfirstName=Symbol.for("key");调用Symbol.for()方法创建多个同标识Symbol,具体代码可参考教学PPT或教材。Symbol.keyFor()ES6还提供了一个与Symbol共享体系有关的Symbol.keyFor()方法,该方法可在全局Symbol注册表中检索已注册的Symbol。调用Symbol.keyFor()方法检索Symbol,具体代码可参考教学PPT或教材。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第五、六课时(Promise的基本语法、Promise的生命周期、Promise的原型方法、Class、Module模块、async函数、实训:商品订单页面)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的Promise的基本语法、Promise的生命周期、Promise的原型方法、Class、Module模块、async函数、实训:商品订单页面等内容。明确学习目标掌握Promise基本语法的使用理解Promise的生命周期与原型方法掌握Class、Module模块和async函数的使用掌握商品订单页面的实现知识讲解知识点1-Promise的基本语法ES6规定,Promise对象是一个构造函数,可生成Promise实例。Promise的构造函数仅接受一个函数作为参数,该函数是包含初始化Promise代码的执行器(executor)函数,其内部包含需要异步执行的代码。执行器函数的两个参数是resolve()和reject(),这两个函数均由JavaScript引擎提供,无需开发者手动部署。当异步操作成功时,自动调用resolve()函数,并将异步操作的结果,作为参数传递出去。当异步操作失败时,自动调用reject()函数,并将异步操作报出的错误,作为参数传递出去。创建一个Promise实例,实现数据异步相加,演示Promise实例的创建语法,具体代码可参考教学PPT或教材。知识点2-Promise的生命周期每个Promise都必然经历一个短暂的生命周期,在这个生命周期中Promise有三种状态,包括pending(进行中)、fulfilled(已成功)和rejected(已失败)。异步操作结束后,根据其异步操作结果的成功与否,Promise可分别进入以下两种状态。(1)fullfilled状态:Promise异步操作成功。(2)rejected状态:由于程序错误或其他原因,Promise异步操作未能成功完成,即已失败。Promise的状态一旦改变,就不会再发生任何改变。Promise对象的状态改变,只有两种可能:从pending变为fulfilled或从pending变为rejected。知识点3-Promise的原型方法下面对Promise的then()方法、catch()方法和链式调用进行介绍。promise.then()promise.then()方法的语法格式如下所示。promise.then(onFulfilled,onRejected);promise.catch()promise.catch()方法的语法形式如下所示。promise.catch(function(error){console.log(error)});promise.then()与promise.catch()的组合使用语法形式如下所示。promise.then(value=>console.log(value)).catch(error=>console.log(error));promise的链式调用promise每次调用then()方法或catch()方法时,均返回一个新的Promise实例,因此可将promise串联调用,实现promise的链式调用,即在第一个then()方法后面再调用另一个then()方法。只有第一个promise完成或失败时,第二个promise才会被解决。使用promise的链式语法实现数值的递增运算,具体代码可参考教学PPT或教材。Promise的链式调用主要有以下2点需要注意。(1)Promise执行器函数内的代码是同步的,Promise的then()方法与catch()方法的回调函数则是异步的。(2)Promise链式调用的另外一个特性是上游的Promise可为下游的Promise传递数据,借助onFulfilled指定一个返回值,该返回值可沿Promise链继续传递。知识点4-ClassES6新增了class(类)特性,class写法与面向对象编程语言十分相似,使得对象上的原型方法结构更加清晰。ES5中的近类结构JavaScript语言中,生成实例对象的传统方法是使用构造函数与原型混合的方法模拟类的定义,即ES5的近类结构。ES6的class声明ES6引入了class关键字,使得类的定义与Java、C等面向对象语言中类的定义更加相似,类声明是ES6中最简单的类形式。类声明的语法格式如下所示。class类名{constructor(){}方法名(){}}以系统欢迎信息为主题,基于ES6的类声明语法对前面例子进行重构,示例代码可参考教学PPT或教材。知识点5-Module模块ES6在语言标准的层面上,实现了模块功能,该功能可取代CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。下面对export命令、import命令和export与import命令的组合示例进行介绍。export命令export关键字导出数据export关键字导出方法export关键字导出类export默认值与尾部导出export重命名与批量导出import命令import语句import关键字导入单个绑定与多个绑定import关键字的默认值与重命名import关键字导入整个模块export与import命令的组合示例甘蔗是我国制糖产业中不可或缺的重要组成部分,其生长地域辽阔,产量巨大,是制糖业的重要原料。接下来将以甘蔗为主题设计一个数据导出与导入案例,依托export与import命令实现数据的导出与导入。具体代码可参考教学PPT或教材。知识点6-async函数async函数的简介async和await是在ES2017标准中引入的新关键字,async关键字用于声明async函数,在async函数内部可使用await关键字。async表示函数内存在异步操作,await表示紧跟在后面的表达式需要等待结果。async与await目的是彻底解决回调地狱,即以一种更加简洁的方式写出基于Promise的异步行为,不再刻意通过链式调用Promise。async函数的基本语法(1)async函数async函数的返回值是Promise对象,若async函数的返回值不是Promise,则该返回值会被隐式地包装至一个Promise中。声明async函数时,只需要在普通的函数前加上async关键字即可。声明async函数的语法格式如下所示。asyncfunction函数名(){return返回值;}以和田大枣为主题演示async函数的基本用法,使用async关键字声明一个async函数,具体代码可参考教学PPT或教材。(2)async函数与await关键字async函数中包含await关键字,await关键字必须在async函数中使用且不可单独使用。当async函数执行时,一旦遇到await表达式就会暂停执行,等待所触发的异步操作完成后,会继续执行async函数并返回解析值。await关键字可用于获取Promise对象的返回值,即Promise函数中resolve或者reject的值。使用async关键字声明一个async函数,具体代码可参考教学PPT或教材。知识点7-实训:商品订单页面本节将以“年货采购”为主题设计一个商品订单页面,依托变量声明、模板字符串、rest参数、展开运算符、解构赋值、箭头函数和module模块实现一个展示商品订单信息的页面。商品订单页面结构简图商品订单页包含商品订单号、商品名称、订单状态、价格、交易时间等,商品订单页面结构简图如下图所示。实现商品订单页面效果实现商品订单页面,需要创建数据源使数据模块化,具体步骤如下所示。第1步,新建一个名为orderStatus的文件夹,并在该文件夹中新建一个JS文件,将其命名为module.js。第2步,在module.js文件中定义一个已完成订单数组finishList、一个进行中订单数组unfinishedList。第3步,通过export语句将数据源导出,且导出时将unfinishedList重命名为goingList,具体代码可参考教学PPT或教材。完成数据准备后,需要将数据在页面中渲染出来,具体步骤如下所示。第1步,在orderStatus文件夹中,新建一个HTML文件,命名为index.html。第2步,在该文件中导入module.js文件中导出的数据源finishList与goingList,且在导入时将finishList重命名为completeList。第3步,定义一个render()函数,用于渲染已完成订单、未完成订单及全部订单,render()函数会根据当前单击的tab选项在tab数组中的顺序,渲染对应订单信息,具体代码可参考教学PPT或教材。在编辑栏中右击选中openwithliveserver选项运行index.html页面。单击“未完成订单”按钮时,该按钮在tab数组中的索引下标为1,则执行render(goingList)函数并渲染goingList数组中的数据于未完成订单页,其页面显示效果如下图所示。单击“全部订单”按钮时,该按钮在tab数组中的索引下标为2,立即执行render(completeList,goingList)函数。全部订单页页面显示效果如下图所示。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第七、八课时(上机练习)上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。上机一:(考察知识点为let声明、const声明、模板字面量、默认参数、rest参数、展开运算符、解构的必要性、对象解构、数组解构、箭头函数的基本语法、箭头函数与this指向、实验:用户信息页)形式:单独完成题目:请按照以下要求完成操作,要求如下:完成let声明、const声明、模板字面量、默认参数、rest参数、展开运算符等知识点对应的示例或案例;完成解构的必要性、对象解构、数组解构、箭头函数的基本语法、箭头函数与this指向等知识点对应的示例或案例;实现用户信息页案例。上机二:(考察知识点为Symbol的基本语法、作为属性名的Symbol、共享的Symbol、Promise的基本语法、Promise的原型方法、Class、Module模块、async函数、实训:商品订单页面)形式:单独完成题目:请按照以下要求完成操作,要求如下:完成Symbol的基本语法、作为属性名的Symbol、共享的Symbol、Promise的基本语法等知识点对应的示例或案例;完成Promise的原型方法、Class、Module模块、async函数等知识点对应的示例或案例;实现商品订单页面案例。习题教材第3章习题教学后记Vue.js3.0从入门到实践教学设计课程名称:Vue.js3.0从入门到实践授课年级:授课学期:教师姓名:年月日课程名称第4章 Vue的基本语法计划学时8内容分析本章重点学习如何使用Vue的基本语法。基本语法是一个框架的基础,而正确使用基本语法则是学习Vue的重中之重。Vue基本语法包括创建应用程序实例、插值语法、指令、计算属性、侦听器、Class与Style绑定、生命周期钩子等。插值语法用于实现页面的数据绑定,指令则是Vue为HTML标签新增的一些属性,每一个指令都可实现一个强大的功能。计算属性主要用于处理插值并返回一个新数据,侦听器主要用于观察和响应Vue组件实例上的数据变动。Class与Style绑定用于操纵元素的CSS样式和内联样式,生命周期则是每一个Vue组件实例从创建到销毁的过程。教学目标与教学要求【知识目标】掌握Vue应用程序实例的创建掌握插值语法、方法选项与指令的使用掌握计算属性与侦听器的使用掌握Class与Style绑定的使用理解Vue的生命周期钩子的执行原理【技能目标】能够创建Vue应用程序实例能够正确使用插值语法、方法选项与指令能够正确使用计算属性与侦听器能够正确使用Class与Style绑定【育人目标】鼓励学生动手实践,培养学生的创新思维,促进学生的个性发展。培养学生网络的伦理道德和法律法规,促进学生养成良好的习惯。教学重点创建应用程序实例文本插值原始HTML插值表达式实验:商品价格计算页面方法选项指令参数内置指令自定义指令实验:商品信息管理表格计算属性的定义计算属性的缓存计算属性选择性地渲染列表实验:购物车页面侦听器绑定HTML样式(Class)绑定内联样式(Style)实验:斑马纹商品表生命周期钩子实训:农产品后台管理系统教学难点实验:商品价格计算页面实验:商品信息管理表格实验:购物车页面实验:斑马纹商品表实训:农产品后台管理系统教学方式课堂讲解配合PPT演示教学过程第一、二课时(创建应用程序实例、文本插值、原始HTML、插值表达式、实验:商品价格计算页面、方法选项、指令参数)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的创建应用程序实例、文本插值、原始HTML、插值表达式、实验:商品价格计算页面、方法选项、指令参数等内容。明确学习目标掌握应用程序实例的创建掌握文本插值、原始HTML与插值表达式的使用掌握商品价格计算页面的实现掌握方法选项与指令参数的使用知识讲解知识点1-创建应用程序实例下面对应用程序实例的创建语法、挂载语法和示例进行介绍。应用程序实例的创建语法应用程序实例的创建语法如下所示。Vue.createAPP(App)应用程序实例的挂载语法应用程序实例必须在调用mount()方法后才会渲染出来,应用程序实例的挂载语法如下所示。Vue.createAPP(App).mount('#app')创建应用程序实例示例新建一个HTML文件,以CDN的方式在HTML文件中引入Vue文件,并使用createAPP()全局API创建一个应用程序实例,具体代码可参考教学PPT或教材。创建应用程序实例的显示效果如下图所示。知识点2-文本插值文本插值的语法格式文本插值的语法格式如下所示。<h1>{{message}}</h1>文本插值示例以《长歌行》为主题设计示例。新建一个HTML文件,演示文本插值的数据同步,具体代码可参考教学PPT或教材。Mustache标签处的内容已经被替换为“少壮不努力”,显示效果如下图所示。在控制台中,将页面切换至Console选项,并输入vm.message="老大徒伤悲",按下Enter键,实现message属性值的同步更改,显示效果如下图所示。知识点3-原始HTML下面对原始HTML的语法格式和示例进行介绍。原始HTML的语法格式在Mustache标签中输出原始HTML的语法格式如下所示。<h1v-html="message"></h1>原始HTML示例实现一个包含VSCode的官网链接的页面。首先在data()函数中定义一个message属性,用于保存<a>,然后根据需要设置<a>的属性值及标签内容,最后使用v-html指令将message属性绑定到对应元素上,具体代码可参考教学PPT或教材。原始HTML渲染的显示效果如下图所示。知识点4-插值表达式在插值语法中使用JavaScript表达式,语法格式如下所示。{{number+1}}{{ok?'YES':'NO'}}{{message.split('').reverse().join('')}}<div:id="`list-${id}`"></div>需要注意的是,在Vue模板内,每个绑定仅支持单一表达式,即一段能够被求值的JavaScript代码,不满足上述条件,则绑定不生效,示例代码如下。<!--这是一个语句,而非表达式-->{{vara=1}}<!--条件控制也不支持,请使用三元表达式-->{{if(ok){returnmessage}}}知识点5-实验:商品价格计算页面实验描述本实验是实现一个计算商品价格的页面。商品价格计算页面结构简图如下图所示。代码实现新建一个HTML文件,以CDN的方式在该文件中引入Vue文件。在data()函数中定义一个商品信息数组及欢迎语字符串,并在Mustache标签中使用JavaScript表达式实现商品价格计算与欢迎语展示,具体代码可参考教学PPT或教材。知识点6-方法选项方法选项的语法格式在methods选项中定义方法的语法格式如下所示。constvm=Vue.createApp({methods:{方法名(空/参数){}}}).mount('#app')方法选项示例methods选项内的方法主要有2种使用方式,即插值语法{{}}方式和事件调用方式。“实践是检验真理的唯一标准”,接下来在案例中带领读者练习methods选项内方法的使用。设计一个商品价格控制页面,使用插值语法{{}}直接显示商品数量,设计按钮事件控制商品的涨价和降价,具体代码可参考教学PPT或教材。在浏览器中运行上述代码,单击“商品涨价10元”按钮后,页面的显示效果如下图所示。知识点7-指令参数下面对指令的静态参数和动态参数进行介绍。静态参数以v-on指令和v-bind指令为例,演示指令接收静态参数的效果,具体代码如下所示。<av-bind:href="url">百度</a><pv-on:click="sayHello">hello</p>动态参数从Vue2.6.0开始,可将[]括起来的JavaScript表达式作为一个指令参数。因此,上述指令接收的静态参数均可使用[]转换为动态参数,具体代码如下所示。<av-bind:[attributeName属性名]="url">百度</a><pv-on:[eventName事件名]="sayHello">hello</p>data(){return{attributeName:'href',eventName:'click'}}知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第三、四课时(内置指令、自定义指令、实验:商品信息管理表格、计算属性的定义、计算属性的缓存、计算属性选择性地渲染列表、实验:购物车页面)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的内置指令、自定义指令、实验:商品信息管理表格、计算属性的定义、计算属性的缓存、计算属性选择性地渲染列表、实验:购物车页面等内容。明确学习目标掌握内置指令与自定义指令的使用掌握商品信息管理表格的实现方式掌握计算属性的定义、计算属性的缓存掌握计算属性选择性地渲染列表掌握购物车页面的实现方式知识讲解知识点1-内置指令1. 条件渲染指令Vue的条件渲染指令主要用于辅助开发者按需控制DOM元素的显示或隐藏。Vue的条件渲染指令如下表所示。指令名说明v-showv-show指令原理是动态添加或移除元素的CSS样式属性display:none实现的。v-show指令一般用于需频繁切换显示或隐藏状态的元素v-ifv-if指令原理是动态创建或移除DOM元素,一般用于在默认情况下不展示或展示较少的元素v-else-if/v-elsev-else-if与v-else指令需配合v-if指令共同使用,并紧跟在v-if或v-else-if后面,反之将不被识别。v-else-if/v-else指令与v-if指令配合可实现互斥的条件判断,当有一个条件满足时,后续的条件将不再进行判断(1)v-show与v-if的异同(2)条件渲染指令的语法格式(3)条件渲染指令示例商品等级判断的显示效果如下图所示。2.列表渲染指令Vue中内置了一个列表渲染指令,即v-for指令。v-for指令以循环的方式渲染一个列表,循环的对象可以是数组、整数或对象等。(1)v-for指令遍历数组(2)v-for指令遍历对象(3)v-for指令遍历整数(4)v-for指令与<template>(5)数组更新检测(6)key属性接下来在一个未使用key属性的v-for列表渲染案例展示key属性的重要性。具体代码可参考教学PPT或教材。准备添加新的商品的显示效果如下图所示。添加商品完成的显示效果如下图所示。添加key属性后的显示效果如下图所示。(7)v-for与v-if的组合使用(8)v-for列表渲染示例使用v-for指令分别遍历数组、对象与整数,具体代码可参考教学PPT或教材。列表渲染的显示效果如下图所示。属性绑定指令双向绑定指令(1)v-model指令(2)专属修饰符事件绑定指令内容渲染指令(1)v-text指令(2)v-html指令不需要表达式的指令(1)v-once指令(2)v-cloak指令(3)v-pre指令内置指令示例通过一个案例依次使用上述内置指令,使读者进一步掌握Vue的内置指令,具体代码可参考教学PPT或教材。信息修改前的显示效果如下图所示。信息修改中的显示效果如下图所示。信息修改后的显示效果如下图所示。知识点2-自定义指令自定义指令注册方式(1)全局注册自定义指令(2)局部注册自定义指令指令钩子函数指令钩子函数函数名说明created在绑定元素的属性前或事件监听器应用前调用beforeMount在元素被插入到DOM前调用mounted在绑定元素的父组件及其所有子节点都挂载完成后调用beforeUpdate在绑定元素的父组件更新前调用updated在绑定元素的父组件及其所有子节点都更新后调用beforeUnmount在绑定元素的父组件卸载前调用unmounted在绑定元素的父组件卸载后调用读者可根据需要自定义指令的功能需求,自行选择相应的指令钩子函数。指令钩子函数的参数自定义指令示例通过局部注册自定义指令来实现功能复用,具体代码可参考教学PPT或教材。用户身份的显示效果如下图所示。指令钩子函数简写直接用一个函数来定义指令,具体代码如下所示。<divv-color="color"></div>app.directive('color',(el,binding)=>{//此函数会在mounted和updated时都调用el.style.color=binding.value})知识点3-实验:商品信息管理表格实验描述在后台管理系统中最重要的组成元素便是表格,本案例将以地方特产为主题,综合使用Vue的内置指令实现一个商品信息管理表格。页面结构简图如下图所示。代码实现页面右侧的商品信息编辑表单显现,具体代码可参考教学PPT或教材。知识点4-计算属性的定义计算属性的语法格式计算属性的语法格式如下所示。computed:{attribute:{get(){}set(newValue){}}}在默认情况下可对计算属性进行简写,简写的语法格式如下所示。//简写形式computed:{attribute(){return{}//必须有返回值}}计算属性的示例(1)计算属性简写示例接下来将以字符串翻转为主题演示计算属性的简写,具体代码可参考教学PPT或教材。字符串翻转效果如下图所示。计算属性自动更新的显示效果如下图所示。(2)计算属性的get()方法与set()方法以物流状态为主题演示计算属性的get()方法与set()方法的使用,具体代码可参考教学PPT或教材。计算属性初始化状态的显示效果如下图所示。修改计算属性值的显示效果如下图所示。知识点5-计算属性的缓存计算属性是基于它们的响应式依赖进行缓存的,仅在相关响应式依赖发生变化时才会重新求值。响应式依赖没有发生改变时,多次访问计算属性,计算属性仍返回之前的计算结果。计算属性与methods方法在写法与功能上十分类似,以前面例子为例,可轻易地将其改写为methods形式。methods:{reversedStr(){returnthis.str.split('').reverse().join('');}}知识点6-计算属性选择性地渲染列表在Vue3中,v-if的优先级是高于v-for的,v-if获取不到v-for范围内的变量,因此,不建议同时使用v-if和v-for。读者可借助计算属性有选择性地渲染列表,通过计算属性对数据进行过滤后,再进行循环遍历,使渲染更加高效。接下来将以商品订单为主题来演示计算属性的选择性渲染列表,具体代码可参考教学PPT或教材。订单列表渲染的显示效果如下图所示。知识点7-实验:购物车页面1.实验描述本案例将实现一个简单的购物车页面,页面设计依赖于Vue的内置指令、methods选项、计算属性等。购物车页面结构简图如下图所示。2.代码实现实现购物车页面的具体代码可参考教学PPT或教材。知识巩固与作业(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)老师布置相关作业进行练习。第五、六课时(侦听器、绑定HTML样式(Class)、绑定内联样式(Style)、实验:斑马纹商品表、生命周期钩子、实训:农产品后台管理系统)回顾内容回顾上节内容,引出本节内容回顾上节的内容,并提问学生上节练习中的问题,学生回答完后,由上节内容引出本节要讲的侦听器、绑定HTML样式(Class)、绑定内联样式(Style)、实验:斑马纹商品表、生命周期钩子、实训:农产品后台管理系统等内容。明确学习目标掌握侦听器、绑定HTML样式(Class)的使用掌握绑定内联样式(Style)的使用掌握斑马纹商品表的实现方式掌握生命周期钩子的使用掌握农产品后台管理系统的实现方式知识讲解知识点1-侦听器侦听器定义侦听器是定义在组件选项对象内的watch选项中的方法,它本质上是一个函数,想要监视一个数据,就需要将该数据作为函数名。侦听器的语法格式如下所示。watch:{msg(val,oldval){}}侦听器示例以单位转换为主题设计一个单位转换器,演示侦听器的使用,具体代码可参考教学PPT或教材。单位转换器的显示效果如下图所示。侦听方法在定义侦听器时,除直接在侦听器后写一个函数外,还可以以字符串的形式定义一个methods内的方法,具体代码如下所示。data(){return{msg:’hello’,}},methods:{checkMsg(){}}watch:{msg:’checkMsg’}深度侦听器侦听器不仅可以监听方法,还可以监听对象。受JavaScript的限制,Vue无法检测到对象属性的变化,默认情况下侦听器只监听该对象引用的变化。深度监听器的具体代码如下所示。data(){return{product:{name:’banana’,price:20},}},watch:{product:{handler(val,oldVal){},deep:true}}侦听器的立即执行在初始渲染时,侦听器不会被立刻调用。开发者可通过添加handler()方法和immediate属性来实现侦听器的立即执行,即将immediate属性值设置为true,具体代码如下所示。data(){return{msg:’hello’,}},watch:{msg:{handler(val,oldVal){},immediate:true}}知识点2-绑定HTML样式(Class)对象语法(1)为v-bind:class或:class传递一个对象来动态切换元素的class样式,语法格式如下所示。<style>.active{color:red}</style>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年风电场风机安规考试卷及答案
- 2025年国家公务员金融监督管理总局招考(金融监管财会类)历年参考题库含答案
- 2025年养老护理员技能知识笔试试题含答案
- 2025年游艇驾驶员考试题库及答案
- 2025年【金属非金属矿山(露天矿山)主要负责人】考试试题及答案
- 2025年英语动词应用题库及答案
- 西昌市城管考试题及答案
- 2025年包头叉车考试题库及答案
- 企业年终财务部年终总结
- 2025年成都母婴护理考试题及答案
- 物流园区建设项目建筑工程方案
- 口腔黏膜炎团体标准解读
- 2025至2030中国马苏里拉奶酪行业产业运行态势及投资规划深度研究报告
- 公司文档管理制度与模板库
- 2025中国储备粮管理集团有限公司招聘笔试备考试题及答案
- 喜之郎果冻市场推广策略研究
- 2025至2030中国航空液压油行业市场深度研究及发展前景投资可行性分析报告
- 超星尔雅学习通《工程伦理(浙江大学)》2025章节测试答案
- PICC保险业务技能测试题库汇编
- 关键工序管理办法
- 道德教育主题班会
评论
0/150
提交评论