跟着狂神学Vue

前端核心分析

Vue 的核心库只关注视图层,方便与第三方库或既有项目整合。

HTML + CSS + JS : 视图 : 给用户看,刷新后台给的数据

网络通信 : axios

页面跳转 : vue-router

状态管理:vuex

Vue-UI : ICE , Element UI

Vue概述:

Vue (读音/vju/, 类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库(如: vue-router: 跳转,vue-resource: 通信,vuex:管理)或既有项目整合。

前端知识体系

想要成为真正的“互联网Java全栈工程师”还有很长的一段路要走,其中“我大前端”是绕不开的一门必修课。本阶段课程的主要目的就是带领我Java后台程序员认识前端、了解前端、掌握前端,为实现成为“互联网Java全栈工程师”再向前迈进一步。

前端三要素

●HTML (结构) :超文本标记语言(Hyper Text Markup Language) ,决定网页的结构和内容
●CSS (表现) :层叠样式表(Cascading Style sheets) ,设定网页的表现样式
●JavaScript (行为) :是一种弱类型脚本语言,其源代码不需经过编译,而是由浏览器解释运行,用于控制网页的行为

结构层(HTML)

表现层(CSS)

CSS层叠样式表是一门标记语言,并不是编程语言,因此不可以自定义变量,不可以引用等,换句话说就是不具备任何语法支持,它主要缺陷如下:
●语法不够强大,比如无法嵌套书写,导致模块化开发中需要写很多重复的选择器;
●没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护;
这就导致了我们在工作中无端增加了许多工作量。为了解决这个问题,前端开发人员会使用一种称之为[CSS预处理器]的工具,提供CSS缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了前端在样式上的开发效率。(例如页面在不同的时候有不同的需求,淘宝在双11和618的样式就会不一样)

CSS预处理器

CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行CSS的编码工作。转化成通俗易懂的话来说就是“用一种专门的编程语言,进行Web页面样式设计,再通过编译器转化为正常的CSS文件,以供项目使用

常用的CSS预处理器有哪些

SASS:基于Ruby,通过服务端处理,功能强大。解析效率高。需要学习Ruby语言,上手难度高于LESS。
LESS:基于NodeJS,通过客户端处理,使用简单。功能比SASS简单,解析效率也低于SASS,但在实际开发中足够了,所以我们后台人员如果需要的话,建议使用LESS。

行为层(JavaScript)

JavaScript一门弱类型脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。
Native原生JS开发
 原生JS开发,也就是让我们按照[ECMAScript] 标准的开发方式,简称是ES,特点是所有浏览器都支持。截止到当前博客发布时间,ES 标准已发布如下版本:
●ES3
●ES4 (内部,未征式发布)
ES5 (全浏览器支持)
ES6 (常用,当前主流版本: webpack打包成为ES5支持! )
●ES7
●ES8
●ES9 (草案阶段)
区别就是逐步增加新特性。

TypeScript

TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。由安德斯海尔斯伯格(C#、Delphi、TypeScript 之父; .NET 创立者)主导。
 该语言的特点就是除了具备ES的特性之外还纳入了许多不在标准范围内的新特性,所以会导致很多浏览器不能直接支持TypeScript语法,需要编译后(编译成JS)才能被浏览器正确执行。

JavaScript框架

jQuery: 大家熟知的JavaScript框架,优点是简化了DOM操作,缺点是DOM操作太频繁,影响前端性能;在前端眼里使用它仅仅是为了兼容IE6、7、8;
Angular: Google收购的前端框架,由一群Java程序员开发,其特点是将后台的MVC模式搬到了前端并增加了模块化开发的理念,与微软合作,采用TypeScript语法开发;对后台程序员友好,对前端程序员不太友好;最大的缺点是版本迭代不合理(如: 1代-> 2代,除了名字,基本就是两个东西;截止发表博客时已推出了Angular6)
React: Facebook出品,一款高性能的JS前端框架;特点是提出了新概念[虚拟DOM(利用内存缓存)]用于减少真实DOM操作,在内存中模拟DOM操作,有效的提升了前端渲染效率;缺点是使用复杂,因为需要额外学习一门[JSX] 语言;
Vue:一款渐进式JavaScript框架,所谓渐进式就是逐步实现新特性的意思,如实现模块化开发、路由、状态管理等新特性。其特点是综合了Angular (模块化)和React (虚拟DOM)的优点;
Axios :前端通信框架;因为Vue 的边界很明确,就是为了处理DOM,所以并不具备通信能力,此时就需要额外使用一个通信框架与服务器交互;当然也可以直接选择使用jQuery提供的AJAX通信功能;
前端三大框架:Angular、React、Vue

UI框架

●Ant-Design:阿里巴巴出品,基于React的UI框架
ElementUI、 iview、 ice: 饿了么出品,基于Vue的UI框架
●Bootstrap: Twitter推出的一个用于前端开发的开源工具包
●AmazeUI:又叫"妹子UI",一款HTML5跨屏前端框架.
JavaScript 构建工具
●Babel: JS编译工具,主要用于浏览器不支持的ES新特性,比如用于编译TypeScript
●WebPack: 模块打包器,主要作用是打包、压缩、合并及按序加载
注:以上知识点将WebApp开发所需技能全部梳理完毕

三端合一

混合开发(Hybid App)

主要目的是实现一套代码三端统一(PC、Android:.apk、iOS:.ipa )并能备够调用到底层件(如:传感器、GPS、 摄像头等),打包方式主要有以下两种:
●云打包: HBuild -> HBuildX, DCloud出品; API Cloud
●本地打包: Cordova (前身是PhoneGap)
后端技术
 前端人员为了方便开发也需要掌握一定的后端技术, 但我们Java后台人员知道后台知识体系极其庞大复杂,所以为了方便前端人员开发后台应用,就出现了NodeJS这样的技术。
 NodeJS的作者已经声称放弃NodeJS (说是架构做的不好再加上笨重的node_ modules,可能让作者不爽了吧),开始开发全新架构的Deno
 既然是后台技术,那肯定也需要框架和项目管理工具,NodeJS 框架及项目管理工具如下:
●Express: NodeJS框架
●Koa: Express简化版
●NPM:项目综合管理工具,类似于Maven
●YARN: NPM的替代方案,类似于Maven和Gradle的关系

后端技术

前端人员为了方便开发也需要掌握一定的后端技术, 但我们Java后台人员知道后台知识体系极其庞大复杂,所以为了方便前端人员开发后台应用,就出现了NodeJS这样的技术。
NodeJS的作者已经声称放弃NodeJS (说是架构做的不好再加上笨重的node_ modules, 可能让作者不爽了吧),开始开发全新架构的Deno
既然是后台技术,那肯定也需要框架和项目管理工具,NodeJS框架及项目管理工具如下:
●Express: NodeJS框架
●Koa: Express简化版
●NPM:项目综合管理工具,类似于Maven
●YARN: NPM的替代方案,类似于Maven和Gradle的关系

主流前端框架

Vue.js

iView

iview是一个强大的基于Vue的UI库,有很多实用的基础组件比elementui的组件更丰富,主要服务于PC界面的中后台产品。使用单文件的Vue组件化开发模式基于npm + webpack +babel开发,支持ES2015高质量、功能丰富友好的API,自由灵活地使用空间。
●官网地址
●Github
●iview- admin
备注:属于前端主流框架,选型时可考虑使用,主要特点是移动端支持较多

ElementUI

Element是饿了么前端开源维护的Vue UI组件库,组件齐全,基本涵盖后台所需的所有组件,
文档讲解详细,例子也很丰富。主要用于开发PC端的页面,是-个质量比较高的Vue UI组件库。
●官网地址
●Github
●vue-element-admin
备注:属于前端主流框架,选型时可考虑使用,主要特点是桌面端支持较多

ICE

飞冰是阿里巴巴团队基于React/Angular/Vue的中后台应用解决方案,在阿里巴巴内部,已经有270多个来自几乎所有BU的项目在使用。飞冰包含 了一条从设计端到开发端的完整链路,帮助用户快速搭建属于自己的中后台应用。
●官网地址
●Github
备注:主要组件还是以React为主,截止2019年02月17日更新博客前对Vue的支持还不太完善,目前尚处于观望阶段

VantUl

Vant UI是有赞前端团队基于有赞统-的规范实现的Vue组件库,提供了一整套UI基础组件和
业务组件。通过Vant,可以快速搭建出风格统-的页面,提升开发效率。
●官网地址
●Github

AtUI

at-ui是一款基于Vue 2.x的前端UI组件库,主要用于快速开发PC网站产品。它提供了- -套
npm + webpack + babel前端开发工作流程,CSS 样式独立,即使采用不同的框架实现都能保持统一的UI风格。
●官网地址
●Github

CubeUI

cube-ui是滴滴团队开发的基于Vue.js实现的精致移动端组件库。支持按需引入和后编译.轻量
灵活;扩展性强,可以方便地基于现有组件实现二次开发。
●官网地址
●Github

混合开发

Flutter

Flutter是谷歌的移动端UI框架,可在极短的时间内构建Android和ios上高质量的原生级应
用。Flutter 可与现有代码一起工作,它被世界各地的开发者和组织使用,并且Flutter是免费和开源
的。
●官网地址
●Github
备注: Google 出品,主要特点是快速构建原生APP应用程序,如做混合应用该框架为必选框架

lonic

lonic既是一个CSS框架也是- -个Javascript UI库, lonic 是目前最有潜力的一款HTML5手
机应用开发框架。通过SASS构建应用程序,它提供了很多UI组件来帮助开发者开发强大的应用。它
使用JavaScript MVVM框架和AngularJS/Vue来增强应用。提供故据的双向绑定,使用它成为
Web和移动开发者的共同选择。
●官网地址
●官网文档
●Github

微信小程序

mpvue

mpvue是美团开发的一-个使用Vue.js 开发小程序的前端框架,目前支持微信小程序、百度智能
小程序,头条小程序和支付宝小程序。框架基于Vue.js. 修改了的运行时框架runtime 和代码编
译器compiler 实现,使其可运行在小程序环境中,从而为小程序开发引入了Vue.js 开发体验。
●官网地址
●Github
备注:完备的Vue开发体验,井且支持多平台的小程序开发,推荐使用

WeUI

WeUl是-套同微信原生视觉体验一致的基础样式库, 由微信官方设计团队为微信内网页和微信小
程序量身设计,令用户的使用感知更加统- -。包含button. cell. dialog. toast, article. icon 等
各式元素。
●官网地址
●Github

MVC

后端为主的MVC时代

为了降低开发的复杂度,以后端为出发点,比如: Struts、 SpringMVC 等框架的使用,就是后端
的MVC时代;
SpringMVC 流程为例:

在这里插入图片描述
●发起请求到前端控制器( DispatcherServlet )
●前端控制器请求HandlerMapping 查找Handler,可以根据xml配置、注解进行查找
●处理器映射器HandlerMapping 向前端控制器返回Handler
●前端控制器调用处理器适配器去执行Handler
●处理器适配器去执行Handler
●Handler 执行完成给适配器返回ModelAndView
●处理器适配器向前端控制器返回ModelAndView. Mode lAndView是SpringMVC 框架的-一个底层
对象,包括Model 和View
●前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图( ISP )
●视图解析器向前端控制器返回View
●前端控制器进行视图渲染,视图渲染将模型数据(在Mode lAndView对象中)填充到request 域
●前端控制器向用户响应结果

优点

MVC是一个非常好的协作模式,能够有效降低代码的耦合度,从架构,上能够让开发者明白代码应该写在哪里。为了让View更纯粹,还可以使用Thymeleaf. Freemarker 等模板引擎,使模板里无法写入Java代码,让前后端分工更加清晰。

缺点

●前端开发重度依赖开发环境,开发效率低,这种架构下,前后端协作有两种模式:

  • 第一种是前端写DEMO,写好后,让后端去套模板。好处是DEMO可以本地开发,很高效。不足是还需要后端套模板,有可能套错,套完后还需要前端确定,来回沟通调整的成本比较
    大;
  • 另一种协作模式是前端负责浏览器端的所有开发和服务器端的View层模板开发。好处是UI相关的代码都是前端去写就好,后端不用太关注,不足就是前端开发重度绑定后端环境,环境成为影响前端开发效率的重要因素。

●前后端职责纠缠不清:模板引擎功能强大,依旧可以通过拿到的上下文变量来实现各种业务逻辑。这样,只要前端弱势-点,往往就会被后端要求在模板层写出不少业务代码。还有一个很大的灰色地带是Controller ,页面路由等功能本应该是前端最关注的,但却是由后端来实现。Controller本身与Model 往往也会纠缠不清,看了让人咬牙的业务代码经常会出现在Controller层。这些问题不能全归结于程序员的素养,否则JSP就够了。

●对前端发挥的局限性:性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作,但由于后端框架限制,我们很难使用[Comet] 、[BigPipe] 等技术方案来优化性能。

注:在这期间(2005 年以前),包括早期的JSP. PHP可以称之为Web 1.0时代。在这里想说一句,如果你是-名Java初学者,请你不要再把一-些陈旧的技术当回事了,比如JSP,因为时代在变.技术在变、什么都在变(引用扎克伯格的一句话:唯-不变的是变化本身) ;当我们去给大学做实训时,有些同学会认为我们没有讲什么干货.其实不然,只能说是你认知里的干货对于市场来说早就过时了而已。

基于AJAX带来的SPA时代

时间回到2005年AJAX (Asynchronous JavaScript And XML,异步JavaScript和XML,老技术新用法)被正式提出并开始使用CDN 作为静态资源存储,于是出现了JavaScript王者归来(在这之前JS都是用来在网页上贴狗皮膏药广告的)的SPA (Single Page Application)单页面应用时代。

优点

这种模式下,前后端的分工非常清晰,前后端的关键协作点是AJAX接口.看起来是如此美妙,但回过头来看看的话,这与JSP时代区别不大。复杂度从服务端的JSP里移到了浏览器的JavaScript,浏览器端变得很复杂。类似Spring MVC,这个时代开始出现浏览器端的分层架构:

在这里插入图片描述

缺点

前后端接口的约定: 如果后端的接口一塌糊涂,如果后端的业务模型不够稳定,那么前端开发会很痛苦;不少团队也有类似尝试,通过接口规则、接口平台等方式来做。有了和后端一起沉淀的接口规则,还可以用来模拟数据,使得前后端可以在约定接口后实现高效井行开发。
前端开发的复杂度控制: SPA 应用大多以功能交互型为主,JavaScript 代码过十万行很正常。大量JS代码的组织,与View层的绑定等,都不是容易的事情。

前端为主的MV*时代

此处的MV*模式如下:

●MVC (同步通信为主) : Model. View. Controller
●MVP (异步通信为主) : Model. View. Presenter
●MVVM (异步通信为主) : Model. View. ViewModel
为了降低前端开发复杂度,涌现了大量的前端框架,比如: AngularJS、 React、 Vue.js .EmberJs等,这些框架总的原则是先按类型分层,比如Templates. Controllers. Models. 然后再在层内做切分,如下图:
在这里插入图片描述

优点

前后端职责很清晰:前端工作在浏览器端,后端工作在服务端。清晰的分工,可以让开发并行,测试数据的模拟不难,前端可以本地开发。后端则可以专注于业务逻辑的处理,输出RESTful等接口.
前端开发的复杂度可控:前端代码很重, 但合理的分层,让前端代码能各司其职。这一块蛮有意思的,简单如模板特性的选择,就有很多很多讲究。并非越强大越好,限制什么留下哪些自由,代码应该如何组织,所有这一切设计, 得花一本书的厚度去说明。
部署相对独立: 可以快速改进产品体验

缺点

●代码不能复用。比如后端依旧需要对数据做各种校验,校验逻辑无法复用浏览器端的代码。如果可以复用,那么后端的数据校验可以相对简单化。
●全异步,对SEO不利。往往还需要服务端做同步渲染的降级方案。
●性能并非最佳,特别是移动互联网环境下。
●SPA不能满足所有需求,依旧存在大量多页面应用。URL Design需要后端配合,前端无法完全掌控。

NodeJS带来的全栈时代

前端为主的MV*模式解决了很多很多问题,但如上所述,依旧存在不少不足之处。随着NodeJS的兴起,JavaScript 开始有能力运行在服务端。这意味着可以有一种新的研发模式:

在这种研发模式下,前后端的职责很清晰。对前端来说,两个UI层各司其职:
●Front-end UI layer处理浏览器层的展现逻辑。通过CSS渲染样式,通过JavaScript添加交互功能,HTML的生成也可以放在这层,具体看应用场景。
●Back-end UI layer处理路由、模板、数据获取、Cookie等。通过路由,前端终于可以自主把控URL Design,这样无论是单页面应用还是多页面应用,前端都可以自由调控。后端也终于可以摆脱对展现的强关注,转而可以专心于业务逻辑层的开发。

通过Node, Web Server层也是JavaScript代码,这意味着部分代码可前后复用,需要SEO的场景可以在服务端同步渲染,由于异步请求太多导致的性能问题也可以通过服务端来缓解。前一种模式的不足,通过这种模式几乎都能完美解决掉。

与JSP模式相比,全栈模式看起来是一种回归,也的确是一种向原始开发模式的回归, 不过是一种螺旋上升式的回归。

基于NodeJS的全栈模式,依旧面临很多挑战:

●需要前端对服务端编程有更进一步的认识。 比如TCP/IP等网络知识的掌握。
●NodeJS层与Java层的高效通信。NodeJS模式下,都在服务器端,RESTful HTTP通信未必高效,通过SOAP等方式通信更高效。一切需要在验证中前行。
●对部署、运维层面的熟练了解,需要更多知识点和实操经验。
●大量历史遗留问题如何过渡。这可能是最大最大的阻力。

注:看到这里,相信很多同学就可以理解,为什么我总在课堂上说:“前端想学后台很难, 而我们后端程序员学任何东西都很简单”;就是因为我们后端程序员具备相对完善的知识体系.
全栈! So Easy!

总结

综上所述,模式也好,技术也罢,没有好坏优劣之分,只有适合不适合;前后分离的开发思想主要
是基于soC (关注度分离原则) ,上面种种模式,都是让前后端的职责更清晰,分工更合理高效。

在这里插入图片描述

第一个Vue程序

Vue

Vue (读音/vju/, 类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库(如: vue-router, vue-resource, vuex)或既有项目整合。

MVVM模式的实现者

●Model:模型层,在这里表示JavaScript对象
●View:视图层,在这里表示DOM (HTML操作的元素)
●ViewModel:连接视图和数据的中间件,Vue.js就是MVVM中的ViewModel层的实现者

在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而ViewModel就是定义了一个Observer观察者

●ViewModel能够观察到数据的变化,并对视图对应的内容进行更新
●ViewModel能够监听到视图的变化,并能够通知数据发生改变

至此,我们就明白了,Vue.js 就是一个MVVM的实现者,他的核心就是实现了DOM监听与数据绑定

为什么要使用Vue.js

●轻量级,体积小是一个重要指标。Vue.js 压缩后有只有20多kb (Angular 压缩后56kb+ ,React压缩后44kb+ )
●移动优先。更适合移动端,比如移动端的Touch事件
●易上手,学习曲线平稳,文档齐全
●吸取了Angular (模块化)和React (虚拟DOM)的长处,并拥有自己独特的功能,如:计算属性
●开源,社区活跃度高

第一个Vue程序

[说明] IDEA 可以安装Vue的插件!
在这里插入图片描述

在这里插入图片描述

注意: Vue不支持IE8及以下版本,因为Vue使用了1IE8 无法模拟的ECMAScript5特性。但它支持所有兼容ECMAScript 5的浏览器。

下载地址

●开发版本

  • 包含完整的警告和调试模式: https://vuejs.org/js/vue.js
  • 删除了警告,30.96KB min + gzip: htps://uejs.org/is/vue.min.js
    ●CDN
  • <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
  • <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>

第一个Vue

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>狂神说Java</p><!--view层 模板-->
<div id="app"><span v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</span><p>{{message}}</p>
</div>
</body><!--导入js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>var vm = new Vue({el: "#app",data: {message: "hello,vue"}})
</script>
</html>

什么是MVVM

MVVM (Model-View-ViewModel) 是一种软件架构设计模式,由微软WPF (用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight (类似于Java Applet,简单点说就是在浏览器上运行的WPF)的架构师Ken Cooper和Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。由John Gossman (同样也是WPF和Silverlight的架构师)于2005年在他的博客上发表。

MVVM 源自于经典的MVC (ModI-View-Controller) 模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用,其作用如下:

  • 该层向上与视图层进行双向数据绑定
  • 向下与Model层通过接口请求进行数据交互

在这里插入图片描述
MVVM已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。当下流行的MVVM框架有Vue.jsAngularJs 等。

为什么要使用MVVM

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处:

  • 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  • 可复用:你可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
  • 可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

MVVM的组成部分

在这里插入图片描述

View

View是视图层,也就是用户界面。前端主要由HTML 和Css来构建,为了更方便地展现ViewModel或者Model 层的数据,已经产生了各种各样的前后端模板语言,比如FreeMarker、Thymeleaf等等,各大MVVM框架如Vue.js, AngularJS, EJS 等也都有自己用来构建用户界面的内置模板语言。

Model

Model是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展开。这里的难点主要在于需要和前端约定统-的接口规则

ViewModel

ViewModel是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的Model数据进行转换处理,做二次封装,以生成符合View层使用预期的视图数据模型。

需要注意的是ViewModel所封装出来的数据模型包括视图的状态和行为两部分,而Model层的
数据模型是只包含状态的

●比如页面的这-块展示什么,那一块展示什么这些都属于视图状态(展示)
●页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互)

视图状态和行为都封装在了ViewModel里。这样的封装使得ViewModel可以完整地去描述View层。由于实现了双向绑定,ViewModel 的内容会实时展现在View层,这是激动人心的,因为前端开发者再也不必低效又麻烦地通过操纵DOM去更新视图。

MVVM框架已经把最脏最累的一块做好了,我们开发者只需要处理和维护ViewModel,更新数据视图就会自动得到相应更新,真正实现事件驱动编程。

View层展现的不是Model 层的数据,而是ViewModel 的数据,由ViewModel 负责与Model层交互,这就完全解耦了View层和Model层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环

MVVM模式的实现者

  • Model : 模型层,在这里表示JavaScript对象

  • View : 视图层,在这里表示DOM (HTML操作的元素)

  • ViewModel : 连接视图和数据的中间件,Vue.js就是MVVM中的ViewModel层的实现者

在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而ViewModel就是定义了一个Observer观察者

  • ViewModel 能够观察到数据的变化,并对视图对应的内容进行更新

  • ViewModel 能够监听到视图的变化,并能够通知数据发生改变

至此,我们就明白了,Vue.js 就是一个MVVM的实现者,他的核心就是实现了DOM监听与数据绑定

VUE基本语法

V-BIND

​ 现在数据和DOM已经被建立了关联,所有的东西都是响应式的。我们在控制台操作对象的属性,界面可以实时更新。

​ 我们可以使用v-bind来绑定元素属性!

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>狂神说Java</p><!--view层 模板-->
<div id="app"><span v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</span>
</div>
</body><!--导入js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>var app = new Vue({el: "#app",data: {message: "hello,vue"}})
</script>
</html>

你看到的v-bind等被称为指令。指令带有前缀v-,以表示它们是Vue提供的特殊特性。可能你已经猜到了,它们会在渲染的DOM.上应用特殊的响应式行为。在这里,该指令的意思是:“将这个元素节点的title 特性和Vue实例的message属性保持一致”。

如果你再次打开浏览器的JavaScript控制台,输入app.message = '新消息’,就会再一-次看到这个绑定了title 特性的HTML已经进行了更新。

v-if,v-else

仕么是条件判断语句,就不需要我说明了吧以下两个属性!

  • v-if
  • v-else
    上代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>狂神说Java</p><!--view层 模板-->
<div id="app"><h1 v-if="type==='A'">A</h1><h1 v-else-if="type==='B'">B</h1><h1 v-else>C</h1>
</div>
</body><!--导入js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>var vm = new Vue({el: "#app",data: {type: "A"}})
</script>
</html>

v-for

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>狂神说Java</p><!--view层 模板-->
<div id="app"><li v-for="item in items">姓名:{{item.name}},年龄:{{item.age}}</li>
</div>
</body><!--导入js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>var vm = new Vue({el: "#app",data: {items: [{name: "zhangsan", age: 12},{name: "lisi", age: 10},{name: "wangwu", age: 16}]}})
</script>
</html>

v-on

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><button v-on:click="sayHi">click</button>
</div><!--1.导入Vue。js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>var vm = new Vue({el: "#app",data: {message: 'huang'},methods: {sayHi: function (event) {alert(this.message)}}});</script>
</body>
</html>

Vue:表单双绑、组件

什么是双向数据绑定

Vuejs是-个MVVM框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。这也算是Vue.js的精髓之处了。

值得注意的是,我们所说的数据双向绑定,-定是对于UI控件来说的,非UI控件不会涉及到数据双向绑定。单向数据绑定是使用状态管理工具的前提。如果我们使用vuex ,那么数据流也是单项的,这时就会和双向数据绑定有冲突。

为什么要实现数据的双向绑定

在Vue.js 中,如果使用vuex ,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI控件来说,对于我们处理表单,Vue.js 的双向数据绑定用起来就特别舒服了。即两者并不互斥,在全局性数据流使用单项,方便跟踪;局部性数据流使用双向,简单易操作。

在表单中使用双向数据绑定

你可以用v-model 指令在表单<input><textarea><select> 元素上创建双向数据绑定它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对-些极端场景进行一些特 殊处理。

注意: v-model 会忽略所有表单元素的value. checked. selected 特性的初始值而总是将Vue实例的数据作为数据来源。你应该通过JavaScript在组件的data选项中声明初始值!

v-model

用v-model 指令在表单<input><textarea><select> 元素上创建双向数据绑定

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app">
输入文本:<input type="text" v-model="message"> {{message}}
</div><div id="app2">下拉框:<select v-model="selected"><option disabled value="">--请选择--</option><option>A</option><option>B</option><option>C</option></select>{{selected}}
</div><div id="app3">性别:<input type="radio" name="sex" value="" v-model="huang"><input type="radio" name="sex" value="" v-model="huang"><p>选中了:{{huang}}</p>
</div><!--1.导入Vue。js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>var vm = new Vue({el: "#app",data: {message: ''}});var vm2 = new Vue({el: "#app2",data: {selected: ''}});var vm3 = new Vue({el: "#app3",data: {huang: ''}});</script>
</body>
</html>

注意:如果v-model 表达式的初始值未能匹配任何选项, 元素将被渲染为“未选中”状态。在ios中,这会使用户无法选择第-个选项。因为这样的情况下,ios不会触发change事件。因此,更推荐像上面这样提供一个值为空的禁用选项。

什么是组件

组件是可复用的Vue实例,说白了就是一组可以重复使 用的模板,跟JSTL 的自定义标签、Thymeleaf的th:fragment 等框架有着异曲同工之妙。通常一个应 用会以一棵 嵌套的组件树的形式来组织:

例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件.

第一个Vue组件

注意:在实际开发中,我们并不会用以下方式开发组件,而是采用vue-cli创建.vue模板文件的方式开发,以下方法只是为了让大家理解什么是组件。
使用Vue.component()方法注册组件,格式如下:

Vue.component()

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><huang v-for="item in items" v-bind:jia="item"></huang>
</div><!--1.导入Vue。js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>//定义一个Vue组件componentVue.component("huang",{props:['jia'],template:'<li>{{jia}}</li>'});var vm = new Vue({el: "#app",data: {items:["JAVA","Linux","前端"]}});</script>
</body>
</html>

在这里插入图片描述

说明:

v-for="item in items" :遍历Vue 实例中定义的名为items 的数组,并创建同等数
量的组件
v-bind:item="item" :将遍历的item 项绑定到组件中props 定义的名为item属性上; =号左边的item为props定义的属性名,右边的为item in items中遍历的item项的值

Vue: Axios异步通信

什么是Axios

Axios是一个开源的可以用在浏览器端和NodeJS 的异步通信框架,她的主要作用就是实现AJAX
异步通信,其功能特点如下:

  • 从浏览器中创建XMLHttpRequests
  • 从node.js创建http请求
  • 支持Promise API [JS中链式编程]
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF (跨站请求伪造)

GitHub: https://github.com/axios/axios
中文文档: http://www.axios-js.com/

在这里插入图片描述

为什么要使用Axios

由于Vue.js 是一个视图层框架并且作者(尤雨溪)严格准守SoC (关注度分离原则) ,所以Vue.js并不包含AJAX的通信功能,为了解决通信问题,作者单独开发了一个名为vue- resource的插件,不过在进入2.0版本以后停止了对该插件的维护并推荐了Axios 框架。少用jQuery,因为它操作Dom太频繁!

第一个Axios应用程序

咱们开发的接口大部分都是采用JSON格式,可以先在项目里模拟一段JSON数据,数据内容如下:创建一个名为data.json的文件并填入上面的内容,放在项目的根目录下

data.json

{"name": "狂神说Java","url": "https://blog.kuangstudy.com","page": 1,"isNonProfit": true,"address": {"street": "含光门","city": "陕西西安","country": "中国"},"links": [{"name": "bilibili","url": "https://space.bilibili.com/95256449"},{"name": "狂伸说java","url": "https://blog.kuangstudy.com"},{"name": "百度","url": "https://www.baidu.com/"}]
}
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-for="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>狂神说Java</title><!--v-cloak 解决闪烁问题--><style>[v-cloak] {display: none;}</style>
</head>
<body><div id="vue" v-cloak><div>名称:{{info.name}}</div><div>地址:{{info.address.country}}-{{info.address.city}}-{{info.address.street}}</div><div>链接:<a v-bind:href="info.url" target="_blank">{{info.url}}</a></div>
<hr><li v-for="link in info.links">{{link.name}}--><a v-bind:href="link.url" target="_blank">{{link.url}}</a></li>
</div><!--引入 JS 文件-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="text/javascript">var vm = new Vue({el: '#vue',data() {return {info: {name: null,address: {country: null,city: null,street: null},url: null,links: [{name: null,url: null}]}}},mounted() { //钩子函数axios.get('../data.json').then(response => (this.info = response.data));}});
</script></body>
</html>

运行结果

在这里插入图片描述

Vue:计算属性、内容分发、自定义事件

什么是计算属性

计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词) .这里的计算就是个函数:简单点说,它就是一-个能够将计算结果缓存起来的属性(将行为转化成了静态的属性),仅此而已;可以想象为缓存!

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>狂神说Java</title><script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
</head>
<body><div id="vue"><!--注意,一个是方法,一个是属性--><h3>{{message}}</h3><p>调用当前时间的方法:{{currentTime1()}}</p><p>当前时间的计算属性:{{currentTime2}}</p>
</div><script type="text/javascript">var vm = new Vue({el: '#vue',data: {message: 'Hello Vue'},methods: {currentTime1: function () {return Date.now();}},computed: {//currentTime2 ,这是一个属性!不是方法currentTime2: function () {this.message;return Date.now();}}});
</script>
</body>
</html>

注意: methods和computed里的东西不能重名

说明:

●methods: 定义方法,调用方法使用currentTime1(), 需要带括号

●computed:定义计算属性,调用属性使用currentTime2,不需要带括号; this.message 是为了能够让currentTime2观察到数据变化而变化

●如何在方法中的值发生了变化,则缓存就会刷新!可以在控制台使用vm. message-“qinjiang” ,改变下数据的值,再次测试观察效果!

结论:

调用方法时,每次都需要进行计算,既然有计算过程则必定产生系统开销,那如果这个结果是不经常变化的呢?此时就可以考虑将这个结果缓存起来,采用计算属性可以很方便的做到这-点计算属性的主要特性就是为了将不经常变化的计算结果进行缓存,以节约我们的系统开销;

内容分发<slot>

在Vue.js中我们使用<slot> 元素作为承载分发内容的出口,作者称其为插槽,可以应用在组合组件的场景中;

测试

比如准备制作一个待办事项组件(todo) ,该组件由待办标题(todo-title) 和待办内容(todo-items)组成,但这三个组件又是相互独立的,该如何操作呢? ’
第-步:定义一个待办事项的组件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<body>
<div id="vue"><!--:是v-bind的缩写--><todo><todo-title slot="todo-title" :vtitle="title"></todo-title><todo-items slot="todo-items" v-for="(item, index) in todoItems" v-bind:vitem="item" v-bind:vindex="index":key="index"></todo-items></todo>
</div>
<script type="text/javascript">Vue.component('todo', {template: '<div>\<slot name="todo-title"></slot>\<ul>\<slot name="todo-items"></slot>\</ul>\</div>'});Vue.component('todo-title', {props: ['vtitle'],template: '<div>{{vtitle}}</div>'});Vue.component('todo-items', {props: ['vitem', 'vindex'],template: '<li>{{vindex + 1}}. {{vitem}}</li>'});var vm = new Vue({el: '#vue',data: {title: '秦老师系列课程',todoItems: ['狂神说Java', '狂神说运维', '狂神说前端']}});
</script>
</body>
</html>

运行结果
在这里插入图片描述

自定义事件内容分发

​ 通过以上代码不难发现,数据项在Vue的实例中,但删除操作要在组件中完成,那么组件如何才能删除Vue实例中的数据呢?此时就涉及到参数传递与事件分发了,Vue为我们提供了自定义事件的功能很好的帮助我们解决了这个问题;

​ 使用this.$emit (‘自定义事件名’,参数)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">
</head>
<body>
<div id="app"><todo><todo-title slot="todo-title" v-bind:name="title"></todo-title><todo-items slot="todo-items" v-for="(item,index) in todoItems" v-bind:item="item"v-bind:index="index" v-on:vremove="removeItems(index)"></todo-items>//v-on自定义绑定事件</todo>
</div><!--1.导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>//slot 插槽 这个组件要定义在前面不然出不来数据Vue.component("todo", {template: '<div>\<slot name="todo-title"></slot>\<ul>\<slot name="todo-items"></slot>\</ul>\<div>'});Vue.component("todo-title", {//属性props: ['name'],template: '<div>{{name}}</div>'});Vue.component("todo-items", {props: ['item','index'],//只允许绑定当前组件template: '<li>{{index}}---{{item}} <button @click="remove">删除</button></li>',methods: {remove: function (index) {// this.$emit 自定义事件分发this.$emit('vremove',index)}}});let vm = new Vue({el: "#app",data: {//标题title: "图书馆系列图书",//列表todoItems: ['三国演义', '红楼梦', '西游记', '水浒传']},methods: {removeItems: function (index) {console.log("删除了"+this.todoItems[index]+"OK");this.todoItems.splice(index,1);}}});
</script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

Vue小结

Vue入门小结

核心:数据驱动,组件化
优点:借鉴了AngulaJS的模块化开发和React的虚拟Dom,虚拟Dom就是把Dom操作放到内存中执行;
常用的属性:
●v-if
●v-else-if
●v-else
●v-for
●v-on绑定事件,简写@
●v-model数据双向绑定
●v-bind给组件绑定参数,简写 :
组件化:
●组合组件slot插槽
●组件内部绑定事件需要使用到this . $emit("事件名",参数);
●计算属性的特色,缓存计算数据

遵循SoC关注度分离原则,Vue是纯粹的视图框架,并不包含,比如Ajax之类的通信功能,为了解决通
信问题,我们需要使用Axios框架做异步通信;

说明

Vue的开发都是要基于NodeJS,实际开发采用vue-cli脚手架开发,vue-router路由,vuex做状态管理; Vue UI,界面我们一般使用ElementUl(饿了么出品),.或者ICE(阿里巴巴出品!)来快速搭建前端项目~
官网:
●https://element.eleme.cn/#/zh-CN
●https://ice.work/

Vue:第-个vue-cli项目

什么是vue-cli

vue-cli官方提供的一个脚手架,用于快速生成-个vue的项目模板;

预先定义好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速;

主要的功能:
●统一的目录结构
●本地调试
●热部署
●单元测试
●集成打包.上线

需要的环境

●Node.js : http://nodejs.cn/ download/
安装就无脑下一步就好,安装在自己的环境目录下
●Git : https://git-scm.com/ downloads
镜像:https://npm.taobao.org/mirrors/git-for-windows/
确认nodejs安装成功:
●cmd下输入node -v,查看是否能够正确打印出版本号即可!
●cmd下输入npm-v ,查看是否能够正确打印出版本号即可!
这个npm,就是-一个软件包管理工具就和linux下的apt软件安装差不多!

安装Node.js淘宝镜像加速器(cnpm)
这样子的话,下载会快很多~

# -g就是全局安装,一次安装一劳永逸
npm insta11 cnpm -g
#或使用如下语句解决npm速度慢的问题,每次安装都需运行一次
npm install --registry=https://registry.npm. taobao.org

安装过程可能有点慢~ ,耐心等待!虽然安装了cnpm,但是尽量少用!
安装的位置: C: \Users \Administrator\AppData \Roaming\npm

安装vue-cli

cnpm install vue-cli -g
#测试是否安装成功
#查看可以基于哪些模板创建vue 应用程序,通常我们选择webpack
vue list

在这里插入图片描述

第一个vue-cli应用程序

1.创建一个Vue项目,我们随便建立- -个空的文件夹在电脑上,我这里在D盘下新建一个目录D: \Project\vue-study ;
2.创建一个基于webpack模板的vue应用程序

#这里的myvue是项目名称,可以根据自己的需求起名
vue init webpack myvue

一路都选择no即可;

说明:

●Project name:项目名称,默认回车即可
●Project description:项目描述,默认回车即可

初始化并运行

cd myvue
npm insta11
npm run dev

执行完成后,目录多了很多依赖

Vue: Webpack学习

什么是Webpack

本质上,webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler)。当webpack处理应用程序时,它会递归地构建一个依赖关 系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle.

Webpack是当下最热门的前端资源模块化管理和打包工具,它可以将许多松散耦合的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分离,等到实际需要时再异步加载。通过loader转换,任何形式的资源都可以当做模块,比如CommonsJS、AMD、ES6、 CSS、JSON、CoffeeScript. LESS等;
伴随着移动互联网的大潮,当今越来越多的网站已经从网页模式进化到了WebApp模式。它们运行在现代浏览器里,使用HTML5. CSS3、ES6等新的技术来开发丰富的功能,网页已经不仅仅是完成浏览器的基本需求; WebApp通常是一个SPA (单页面应用) ,每一个视图通过异步的方式加载,这导致页面初始化和使用过程中会加载越来越多的JS代码,这给前端的开发流程和资源组织带来了巨大挑战。

前端开发和其他开发工作的主要区别,首先是前端基于多语言、多层次的编码和组织工作,其次前端产品的交付是基于浏览器的,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源,并且保证他们在浏览器端快速、优雅的加载和更新,就需要-一个模块化系统,这个理想中的模块化系统是前端工程师多年来一直探索的难题。

模块化的演进

Script标签

<script src="module1.js"></scirpt>
<script src="module2.js"></scirpt>
<script src="module3.js"></scirpt>
<script src="module4.js"></scirpt>

这是最原始的JavaScript文件加载方式,如果把每一个文件看做是一个模块,那么他们的接口
通常是暴露在全局作用域下,也就是定义在window对象中,不同模块的调用都是.一个作用域。
这种原始的加载方式暴露了一些显而易见的弊端:

●全局作用域下容易造成变量冲突
●文件只能按照<script>的书写顺序进行加载
●开发人员必须主观解决模块和代码库的依赖关系
●在大型项目中各种资源难以管理,长期积累的问题导致代码库混乱不堪

CommonsJS

服务器端的NodeJS遵循CommonsJS规范,该规范核心思想是允许模块通过require方法来同步加载所需依赖的其它模块,然后通过exports或module.exports来导出需要暴露的接口。

require("module");
require(". ./module.js");
export.doStuff = function() {};
module.exports = someValue;

优点:

●服务器端模块便于重用
●NPM中已经有超过45万个可以使用的模块包
●简单易用

缺点:

●同步的模块加载方式不适合在浏览器环境中,同步意味着阻塞加载,浏览器资源是异步加载的
●不能非阻塞的并行加载多个模块

实现:

●服务端的NodeJS
●Browserify, 浏览器端的CommonsJS实现,可以使用NPM的模块,但是编译打包后的文件体积较大
●modules-webmake,类似Browserify,但不如Browserify 灵活
●wreq, Browserify 的前身

AMD

Asynchronous Module Definition规范其实主要一个主要接口define(id?,dependencies?, factory);它要在声明模块的时候指定所有的依赖dependencies,并且还要当做形参传到factory中,对于依赖的模块提前执行。

define( "module", ["dep1", "dep2"], function(d1, d2) {
return someExportedvalue;
});
require(["module", "../file.js"], function(module, file) {});

优点

●适合在浏览器环境中异步加载模块
●可以并行加载多个模块

缺点

●提高了开发成本,代码的阅读和书写比较困难,模块定义方式的语义不畅
●不符合通用的模块化思维方式,是-种妥协的实现

实现

●RequireJS
●curl

CMD

Commons Module Definition规范和AMD很相似,尽量保持简单,并与CommonsJS和NodeJS的Modules规范保持了很大的兼容性。

define(function(require, exports, module) {
var $ = require("jquery");
var Spinning = require("./spinning");
exports .doSomething = ...;
module. exports = ...;
});

优点:

●依赖就近,延迟执行
●可以很容易在NodeJS中运行

缺点

●依赖SPM打包,模块的加载逻辑偏重

实现

●Sea.js
●coolie

ES6模块

EcmaScript6标准增加了JavaScript语言层面的模块体系定义。ES6 模块的设计思想,尽量静态化,使编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonsJS和AMD模块,都只能在运行时确定这些东西。民

import "jquery";
export function doStuff() {}
module "localModule" {}

优点

●容易进行静态分析
●面向未来的EcmaScript标准

缺点

●原生浏览器端还没有实现该标准
●全新的命令,新版的NodeJS才支持
实现
●Babel

大家期望的模块系统
可以兼容多种模块风格,尽量可以利用已有的代码,不仅仅只是JavaScript模块化,还有CSS、图片、字体等资源也需要模块化。

安装Webpack

WebPack是一款模块加载器兼打包工具,它能把各种资源,如JS. JSX. ES6、SASS. LESS.图片等都作为模块来处理和使用。

安装:

npm install webpack -g
npm install webpack-cli g

测试安装成功:
webpack -V
webpack-cli -V

配置

创建webpack.config.js 配置文件
entry: 入口文件,指定WebPack用哪个文件作为项目的入口
output: 输出,指定WebPack把处理完成的文件放置到指定路径
module: 模块,用于处理各种类型的文件
plugins: 插件,如:热更新、代码重用等
resolve:设置路径指向
watch:监听,用于设置文件改动后直接打包

module.exports = {
entry :
output: {
path:”",
filename:
},
module: {
loaders: [
{test: /\.js$/ ,loader: “"}
]
},
p1ugins: {},
resolve :{},
watch: true
}

直接运行webpack命令打包

使用webpack

1.创建项目
2.创建一个名为mgdules的目录,用于放置JS模块等资源文件
3.在modules下创建模块文件,如hello.js.用于编写JS模块相关代码

//暴露一个方法:sayHi
exports.sayHi = function () {document.write("<div>He11o WebPack</div>");
};

4.在modules下创建- -个名为main.js的入口文件,用于打包时设置entry属性

//require导入一个模块,就可以调用这个模块中的方法了
let hello=require("./hello");
hello.sayHi()

5.在主目录创建webpack-config.js
webpack-config.js 这个相当于webpack的配置文件 enrty请求main.js的文件 output是输出的位置和名字

module.exports = {entry: './modules/main.js',output: {filename: "./js/bundle.js"}
};

6.在idea命令台输入webpack命令(idea要设置管理员启动)
在这里插入图片描述

7.完成上述操作之后会在主目录生成一个dist文件 生成的js文件夹路径为/dist/js/bundle.js
8.在主目录创建index.html 导入bundle.js
index.html

<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="dist/js/bundle.js"></script>
</head>
<body>
</body>
</html>

运行截图

在这里插入图片描述

说明:

#参数--watch用于监听变化
webpack -watch

VUE-ROUTER路由

​ Vue Router是Vue.js官方的路由管理器(路径跳转)。它和Vue.js的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:

  • 嵌套的路由/视图表

  • 模块化的、基于组件的路由配置

  • 路由参数、查询、通配符

  • 基于Vue.js过渡系统的视图过渡效果

  • 细粒度的导航控制

  • 带有自动激活的CSS class的链接

  • HTML5历史模式或hash模式,在IE9中自动降级

  • 自定义的滚动条行为

安装

​ 基于第一个vue-cli进行测试学习;先查看node_modules中是否存在 vue-router
 vue-router 是一个插件包,所以我们还是需要用 npm/cnpm 来进行安装的。打开命令行工具,进入你的项目目录,输入下面命令。

npm install vue-router --save-dev

如果在一个模块化工程中使用它,必须要通过Vue.use()明确地安装路由功能:

import Vue from 'vue '
import VueRouter from ' vue-router "
Vue .use(VueRouter);
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 男人割韩式双眼皮手术哪最好

    ...

    2024/5/7 15:49:13
  2. 双眼皮整形网

    ...

    2024/5/7 15:45:37
  3. 南京华美哪位专家做双眼皮最好

    ...

    2024/4/30 10:55:34
  4. 医院双眼皮怎么样

    ...

    2024/4/30 12:56:37
  5. 开眼角韩式焊接韩式埋线双眼皮多少钱

    ...

    2024/4/30 10:39:05
  6. 路桥博爱 昆明双眼皮整形

    ...

    2024/4/29 11:30:40
  7. 使用xlsx进行angular2的导入导出功能

    写项目时&#xff0c;遇见了导入导出功能&#xff0c;感觉xlsx插件最方便&#xff0c;记录一下&#xff08;我使用的是Zorro组件库&#xff09; 下载插件 cnpm install xlsx --save执行命令后&#xff0c;确定是否下载成功&#xff08;我用的版本是0.12.8&#xff0c;其他版本…...

    2024/4/30 23:58:03
  8. Flash动画制作视频教程

    Flash是由macromedia公司推出的交互式矢量图和 Web 动画的标准,由Adobe公司收购。做Flash动画的人被称之为闪客。网页设计者使用 Flash 创作出既漂亮又可改变尺寸的导航界面以及其他奇特的效果。Flash的前身是Future Wave公司的Future Splash,是世界上第一个商用的二维矢量动…...

    2024/4/30 16:19:25
  9. 韩式徐州双眼皮整形

    ...

    2024/4/30 20:55:17
  10. angular 响应式表单FormGroup和模型驱动表单[(ngModel)] —angular学习笔记4

    文章目录响应式表单和模型驱动表单相同与不同之处响应式表单创建案例模板驱动表单创建案例表单底层原理&#xff08;底层构造块&#xff09;&#xff1a;响应式表单fromGroup与FormBuilder对比1.1.再在xx.ts部分用FormGroup定义表单&#xff1a;1.1或者再在xx.ts部分用FormBuil…...

    2024/4/29 12:16:07
  11. 北京割双眼皮费用

    ...

    2024/4/30 23:21:32
  12. Angular2学习_2(表单)

    参考《angular权威指南》 表单 表单的基本单位FormControl和FormGroup是最基础的表单对象。 组成结构&#xff1a;FormControl > FormGroup FormControl&#xff1a;代表单一输入字段&#xff0c;是angular表单中的最小单位&#xff0c;封装了这些字段的值和状态&#xff…...

    2024/4/30 19:29:46
  13. angular总结4-表单处理

    angular表单 angular表单分为两类&#xff1a; 1. 模板式表单&#xff1a;表单的数据模型是通过组件模板中的相关指令来定义的&#xff0c;因为使用这种方式定义表单的数据模型时&#xff0c;我们会受限于HTML的语法&#xff0c;所以&#xff0c;模板驱动方式只适合用于一些简…...

    2024/5/3 15:04:40
  14. Angular2框架入门笔记(二):路由、服务、HTTP、表单

    接上一篇&#xff1a;Angular2框架入门笔记&#xff08;一&#xff09;&#xff1a;概念、搭建环境、模板语法、组件   这篇学习笔记主要整理记录Angular的路由、服务、HTTP与表单的功能。路由可以实现不同页面和结构之间导航跳转的功能&#xff0c;服务与HTTP可以对数据进行…...

    2024/5/1 1:40:56
  15. 双眼皮隆鼻

    ...

    2024/4/30 7:52:17
  16. Angular学习笔记44:响应式表单-获取两层FormGroup嵌套值得变化和两层FormGroup赋值

    继Angular学习笔记43&#xff1a;响应式表单&#xff1a;FormGroup嵌套以后。 获取FormGroup中值得变化 在 FormGroup 中&#xff0c;有时需要捕获这个控件的值得变化&#xff0c; 捕获name的输入值得变化 在构造方法中&#xff0c;订阅validateForm中name这个实例值得变化。…...

    2024/4/30 20:15:36
  17. 【荐】Angular 最佳实践

    推荐文章 Armen Vardanyan &#xff1a; Angular: Best Practices 推荐理由 作者根据自身的项目实践&#xff0c;总结出了一些Angular的最佳实践。主要包涵了TypeScript类型的最佳使用&#xff0c;组件的合理使用&#xff0c;通用服务的封装&#xff0c;模版的合理定义。 …...

    2024/5/2 2:46:00
  18. 第五章 angular中的表单

    Angular中的表单 表单控件FormControl&#xff1a;封装了表单的输入&#xff0c;并提供了一些可供操作的对象。验证器validator&#xff1a;让我们能够以自己喜欢的任何方式验证表单的输入。观察者observer&#xff1a;让我们能够监听表单的变化&#xff0c;并作出相应的回应。…...

    2024/4/21 6:32:45
  19. Angular2响应式表单

    本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面。 原文地址。 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件。 响应式表单是一项响应式风格的ng2技术&#xff0c;本文将解释响应式表单并用来创建一个英雄详情编辑器。 包含内容&…...

    2024/5/2 18:49:47
  20. 构建一个自定义 angular2 输入组件

    构建一个自定义 angular2 输入组件 今天我们来学习如何正确的构建和一个具有和 <input type"text"> 同样作用&#xff0c;但同时也具有自己的逻辑的输入组件。 在读这篇文章之前&#xff0c;希望你已经把官方的文档和案例都看过至少一遍了&#xff0c;具体的一…...

    2024/5/2 10:42:30

最新文章

  1. 语音识别技术初级应用

    ⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…...

    2024/5/7 17:34:02
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 54.螺旋矩阵

    题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。示例 1&#xff1a;输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a;输入&#xff1a;matrix …...

    2024/5/7 9:54:07
  4. 前端学习<二>CSS基础——17-CSS3的常见边框汇总

    CSS3 常见边框汇总 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}​body {background-c…...

    2024/5/6 2:11:37
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57