整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Vue.js入门篇

Vue.js入门篇

· 引入Vue.js

· Vue.js是什么

· 声明式渲染Hello World

· 条件与循环

· 处理用户点击

· 综合示例

1. 引入Vue.js安装Vue可以通过查看官方安装教程来了解其他安装 Vue 的选项。但对webpack Node.js等打包构建工具不了解的同学不推荐直接使用vue-cli搭建项目脚手架。

最简单的方式是在本地创建的 .html 文件中通过如下方式引入 Vue:

<script src="https://unpkg.com/vue/dist/vue.js"></script>

2. Vue.js是什么?

Vue.js(读音 /vju?/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层。不仅易于上手(对比其它框架),还便于与第三方库或既有项目整合。另一方面,当与单文件组件Vue 生态系统支持的库结合使用时,Vue 也完全能够为复杂的单页应用程序提供驱动。

学习Vue.js时要抛开jQuery手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM。它通过一些特殊的HTML语法,将DOM和数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。

· Vue.js是一种MVVM框架(Model-View-ViewModel),其中html是view层,js是model层,ViewModel是Vue.js的核心,

· 它是一个Vue实例。Vue实例是作用于某一个HTML元素上的。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

当创建了ViewModel实例后,双向绑定的过程分为以下几步:

1、上图中的DOM Listeners和Data Bindings是实现双向绑定的关键。

2、从View侧看,ViewModel中的DOM Listeners工具会帮我们监测页面上DOM元素的变化,如果有变化,则更改Model中的数据;

3、从Model侧看,当我们更新Model中的数据时,Data Bindings工具会帮我们更新页面中的DOM元素。

3. Hello World

Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM

3.1文本插值实现数据绑定

Vue.js有多种数据绑定的语法,最基础的形式是文本插值,使用mustache语法,在运行时{{ message }}会被数据对象的message属性替换,所以页面上会输出"Hello World!"。

<div id="app"> {{ message }}</div>

//这是定义视图View

new Vue({

el: '#app', //指向view 将Vue实例挂载

data: {

message: 'Hello World!'

} //指向model

})

// 用来连接 View 与 Model

3.2 输出纯HTML

使用{{message}}的mustache语法只能将数据解释为纯文本,为了输出HTML,可以使用v-html指令:

<div id="app">

<div v-html="text"></div>

</div>

new Vue({

el: '#app',

data: {

text:'<h1>hello</h1>'

}

})

关于指令:

Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,

将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute)。

3.3双向数据绑定

MVVM模式本身支持双向绑定,在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定。

<div id="app">

<p>{{ message }}</p>

<input type="text" v-model="message"/>

</div>

这样无论是改变输入框的内容还是通过控制台修改message的值,另一个值都会同时被改变。

3.4 给元素的属性绑定数据

定义在Vue实例的data接口上的数据的绑定很灵活,既可以绑定在DOM节点内部,也可以绑在属性上

<div id="app" v-bind:title='message' v-bind:style='color' v-once>

<a :href='url'>{{message}}</a>

</div>

v-once指令能够让你执行一次性的插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上所有的数据绑定。

var vm=new Vue({

el: '#app',

data:{

message: 'Google',

color: 'color:green',

url:'https://google.com'

}

})

Mustache 不能在 HTML 属性中使用,绑定数据到节点属性上时,需要使

用v-bind指令。利用这个指令将元素节点div的 title属性和 Vue 实

例的 message属性绑定到一起,从而建立数据与该属性值的绑定。v-bind

指令可以缩写为一个冒号,

如a标签中的v-bind:href="url"的缩写方式:href="url"。

<button v-bind:disabled="someDynamicCondition">Button</button>

v-bind指令对布尔值的属性也有效 —— 如果条件被求值为 false 的话该属

性会被移除。

4.条件与循环

4.1 根据条件表达式的值来执行元素的插入或者删除行为的是v-if指令:

<div id="app">

<h1 v-if="num > 0">Num: {{ num }}</h1>

<p v-if="seen">now you see me</p>

</div>

var app=new Vue({

el: '#app',

data: {

num:12,

seen: true,

name:'WannaCry'

}

})

v-if指令可以绑定一个属性值为布尔型的属性,当值为真时,元素将

显示,反之则消失。如果在控制台设置app.seen=false,你会发现

页面上的“now you see me ”消失了。

这个例子演示了我们不仅可以绑定 DOM 文本到数据,也可

以绑定 DOM 结构到数据。而且,Vue 也提供一个强大的过渡效果

系统,可以在 Vue 插入/更新/删除元素时自动应用过渡效果

4.2 v-show也是条件渲染指令,和v-if指令不同的是,使用

v-show指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性。

<h1 v-show="name.indexOf('Walker') >=0">Name: {{ name }}</h1>

在控制台打开,可以看到<h1>Name:WannaCry</h1>

元素被设置了style="display:none"样式。

4.3 可以用v-else指令为v-if或v-show添加一个“else块”。

<div id="app">

<h1 v-if="age >=25">Age: {{ age }}</h1>

<h1 v-else>Name: {{ name }}</h1>

</div>

v-else元素必须立即跟在v-if,v-else-if或v-show元素的后面——否

则它不能被识别。

var vm=new Vue({

el: '#app',

data: {

age:20,

name: 'Alan Walker',

sex: 'Man'

}

})

v-else元素是否渲染在HTML中,取决于前面v-if的值true还是

false。

如果v-if的值为false,则后面v-else的内容不会渲染到HTML。

4.4 数组数据循环渲染列表使用v-for指令:

<div class="title">

<ul>

<li v-for="todo in todos">

{{ todo.text }}

</li>

</ul>

</div>

v-for指令基于一个数组渲染一个列表,它和JavaScript的遍历语法相似:

v-for="todo in todos"

todos是一个数组,todo是当前被遍历的数组元素。

var app=new Vue({

el: '.title',

data: {

//定义todos数组

todos: [

{ text: 'study hard' },

{ text: 'find a girlfriend' },

{ text: 'around the world' }

]

}

})

页面显示如下:

· study hard

· find a girlfriend

· around the world

控制台里,输入 app.todos.push({ text: 'coding' }),你会发现列表中新添加了一项。

5. 处理用户点击

当用户点击页面,我们可以用 v-on指令绑定一个事件监听器,通过它调用我们在Vue 实例中定义的方法:

<div class="title">

<p>{{ message }}</p>

<button v-on:click="reverseMessage">反转消息</button>

</div>

v-on指令用于给监听DOM事件,它的用语法和v-bind是类似的。

new Vue({

el: '.title',

data: {

message: 'Hello Vue.js!'

},

methods: {

reverseMessage: function () {

this.message=this.message.split('').reverse().join('')

//split()用于将字符串转化为数组

//reverse()用于颠倒数组中元素顺序

//join()用于将数组转化为字符串

}

}

})

v-on指令可以缩写为@符号。

6. 综合示例

Vue+Bootstrap实现todolist的小Demo

一、Html样式

<div class="container" id="box">

<form role="form">

<div class="form-group">

<label for="username">username:</label>

<!-- 用v-model指令将input内的值与实例data内的值绑定在一起 -->

<input type="text" class="form-control"

id="username" v-model="username"

placeholder="Please enter your username">

</div>

<div class="form-group">

<label for="password">password:</label>

<input type="password" class="form-control" id="password"

v-model="password" placeholder="please enter your password">

</div>

<!-- 用v-on指令绑定点击click事件 -->

<button type="button" class="btn btn-primary" v-on:click="add">submit</button>

<button type="reset" class="btn btn-danger">reset</button>

</form>

<hr>

<table class="table table-bordered table-hover">

<caption class="h3 text-center text-muted">用户信息表</caption>

<tr class="text-danger">

<th class="text-center">id</th>

<th class="text-center">username</th>

<th class="text-center">password</th>

<th class="text-center">option</th>

</tr>

<tr class="text-center" v-for="(item,index) in myData">

<!-- 用v-for指令循环渲染列表 index为索引值 -->

<td>{{index+1}}</td>

<td>{{item.name}}</td>

<td>{{item.pwd}}</td>

<td>

<button class="btn btn-info btn-sm"data-toggle="modal"

data-target="#myModal" v-on:click="nowIndex=index">delete</button>

</td>

</tr>

<!--用v-show指令 根据条件返回的布尔值决定是否渲染 -->

<tr v-show="myData.length !=0">

<td colspan="4" class="text-right">

<button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#myModal" v-on:click="{

nowIndex=all,modalTitle='confirm delete all?'}">

delete all</button>

</td>

</tr>

<tr v-show="myData.length==0">

<td colspan="4" class="text-center text-muted">

<p>暂无数据...</p>

</td>

</tr>

</table>

<!-- 模态框 -->

<div role="dialog" class="modal fade bs-example-modal-sm"

id="myModal">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button"

class="close" data-dismiss="modal"><span>×</span></button>

<h4 class="modal-title">{{modalTitle}}</h4>

</div>

<div class="modal-body text-right">

<button class="btn btn-primary btn-sm" data-dismiss="modal" v-on:click="remove(nowIndex)">yes</button>

<button class="btn btn-danger btn-sm" data-dismiss="modal">no</button>

</div>

</div>

</div>

</div>

</div>

二、JS部分

<link rel="stylesheet" href="./bootstrap/css/bootstrap.min.css">

<script src="./libs/jquery-3.2.1.min.js"></script>

<script src="./bootstrap/js/bootstrap.min.js"></script>

<script src="./libs/vue.js"></script>

window.onload=function(){

new Vue({

el:"#box",

data:{

myData:[],

username:'',

password:'',

nowIndex:'',//当前用户的索引

modalTitle:'confirm delete?'//模态框的title

},

methods:{

add:function(){

var name=this.username.trim();

var pwd=this.password.trim();

this.myData.push({

name:name,

pwd:pwd

});

this.username='';

this.password='';

},

remove:function(index){

if(index=='all'){

//删除所有

this.myData=[];

}else{

//删除索引为index的那条信息

this.myData.splice(index,1);

}

}

}

})

};


上图是视图的开发指导,官方给了个链接。

国内地址:

https://developer.android.google.cn/guide/topics/ui/index.html

view的使用

"直译"

窗口中的所有视图都排列在一棵树中.

可以通过代码或通过在一个或多个XML布局中指定视图树来添加视图.

有许多专门的视图子类可以充当控件,或者可以显示文本,图像或其他内容。

创建视图树后,通常可能需要执行几种类型的常见操作.



"人话"

窗口也就是windows,windows上有视图"树",我们在画页面时其实就是往视图树上添加view,当然,添加的方式即可以是xml也可以是代码的形式。下面那两句话,举个例子就是TextView的常见类型操作setText();


总结

我们对整个view学习要建立一个体系,有一个脉络。(自己脑海中有一个大体的脉络,再去补充一个一个知识点)

view的基本概念->view如何使用->如何自定义view

之后我会分享我的"脉络",希望大家多多支持.


后续:

第一期:view的简单介绍。

第二期:view添加到页面的方式。

下一期:view的属性和方法。

期开始尝试将新文章预发表,预发表的文章仅展示在公众号主页(不会群发),以供提前预览,想要看新文章的可以在主页查看,有问题欢迎随时指出。新文章会在合适的时间群发给各位小伙伴!

全文约 5800 字,预计阅读需要 20 分钟

作为一名前端开发,Chrome Devtools 是最常用的工具之一,它提供了很多实用的调试功能。Chrome 团队也在一直积极地更新新版本,本文就来盘点自 Chrome 110 以来,Devtools 中新增的实用调试功能,总有一个你用的上!

Chrome 118

Elements > Styles 中自定义属性查看

该版本中,在Elements面板的Styles选项中新增了一个自定义属性部分。通过使用@property CSS 规则,可以明确地定义CSS自定义属性,并在样式表中进行注册,而无需编写任何JavaScript代码。

通过在Elements > Styles中悬停在属性名称上,可以查看其描述符并通过工具提示来查看已注册属性的详细信息。点击工具提示中的链接可以展开显示已注册属性的部分。

搜索增强

现在搜索结果会显示每行代码中找到的所有匹配项。之前,每行代码只显示第一个匹配项。这种新的行为在搜索压缩文件时特别有用。当点击搜索结果时,它会在编辑器中打开文件,并且不仅在垂直方向上滚动到匹配位置,还会在水平方向上进行滚动。

此外,搜索功能得到了速度提升。下面是改变前(左侧)和改变后(右侧)的对比。

另外,搜索功能现在支持忽略列表,并且不会显示已忽略文件的搜索结果。

Sources 面板改进

现在可以通过拖放的方式重新排列 Sources 面板左侧的边栏。

现在,Sources面板具备以下功能:

  • 对于以下脚本类型,可以对其中的内联JavaScript进行打印美化:moduleimportmapspeculationrules
  • 对于包含JSON的importmapspeculationrules脚本类型,可以突出显示其语法。

辅助功能改进

DevTools 现在支持更多的导航按键操作:

  • CSS Overview:使用上下箭头在左侧边栏中导航到各个部分。
  • Memory:在左侧边栏中,使用Tab键聚焦到快照旁边的保存按钮,然后按Enter键选择文件夹。

Chrome 117

更快地本地覆盖网页内容

优化了本地覆盖功能,因此可以在没有访问权限的情况下,通过 Network 面板轻松模拟远程资源的响应头和网页内容。

要覆盖网页内容,需要打开 Network 面板,右键点击一个请求,然后选择“Override content”。

如果已经在DevTools中设置了本地覆盖但将其禁用了,现在 DevTools 会自动启用本地覆盖功能。如果尚未设置本地覆盖,DevTool s会在操作栏中提醒你选择一个文件夹来存储覆盖内容,并授权 DevTools 访问该文件夹。

设置完本地覆盖后,DevTools 会进入 Sources > Overrides > Editor 页面,可以进行网页内容的覆盖操作。

请注意,在 Network 面板中,被覆盖的资源会以“Saved.”的标识显示。将鼠标悬停在图标上可以查看哪些内容被覆盖了。

覆盖XHR和fetch请求内容

现在还可以覆盖XHRfetch请求的内容。通过这样的覆盖,即使后端和API尚未准备好,也可以模拟API的响应来调试网页。

DevTools 目前支持以下请求类型的内容覆盖:图像(例如avif、png)、字体、fetch和XHR、脚本(css和js)以及文档(html)。对于不支持的类型,DevTools 现在会将“Override content”选项置灰。

隐藏Chrome扩展请求

为了帮助开发者专注于编写代码,因此,Network 面板新增了一个过滤器,过滤掉了可能在Chrome中安装的扩展程序发送的无关请求。要过滤掉所有发送到chrome-extension:// URL的请求,可以勾选“Hide extension URLs”选项。

此外,DevTools 现在不会尝试加载扩展程序的源映射文件,因此将不会看到与代码无关的“无法加载源映射”警告。另外,由代码导致的类似警告现在会显示在Sources面板底部的信息栏中,而不是控制台中显示。

HTTP状态码可读性更强

现在在请求的头部中,HTTP状态码旁边会显示易于理解的文本,以便更快地了解请求的处理情况。以往只能看到数字状态码,现在还提供了相应的可读性更强的描述性文本,使得解读和理解请求的处理结果更加方便。

还可以将鼠标悬停在请求表中的状态码上,以查看相同的文本信息。

JSON 子类型响应格式美化

现在在请求的响应选项卡中,对于具有应用程序/[子类型]+json MIME子类型(如ld+json、hal+json等)的请求,会正确解析响应并提供更美观的显示效果。可以对响应数据进行格式化,使其更易读和易于理解。以前可能只能以原始的、紧凑的形式展示 JSON 数据,而现在提供了更好的可视化格式化效果。

性能改进:查看网络事件的获取优先级变化

Performance 面板现在在网络轨迹中的事件摘要中显示两个优先级字段:初始优先级和(最终)优先级,而不仅仅是单一的优先级。通过这个额外的字段,可以看到事件的获取优先级是否发生了变化,并调整下载顺序。

此外,还可以在 Network 面板的优先级列中找到相同的信息,并通过启用“Big request rows”设置来查看。

默认启用的源代码设置:代码折叠和自动文件显示

现在,默认情况下启用了 Settings > Preferences > Code folding 选项。该选项允许折叠代码块。

如果需要折叠代码块,将鼠标悬停在代码块开始旁边的行号上,然后单击折叠图标即可。再次单击{...}以展开该代码块。

此外,Settings > Preferences > Automatically reveal files in the sidebar选项现在也默认启用。该设置使得在切换标签页时,Sources -> Page 中的文件树会选择当前在编辑器中打开的文件。

在 Application 面板中调试预加载

Chrome 团队正在重新引入用户可能导航到的未来页面的完全预渲染。为了进行调试,开发者工具将在 Application 面板中添加Preloading 部分。新的预取和预渲染(统称为“导航预加载”)使用了 Speculation Rules API,而不是基于链接的资源提示。

在下面的演示中,在 Application > Preloading 部分,可以检查以下内容:

  • Speculation Rules(规则推测):列出当前页面上找到的所有规则集。
  • Preloads(预加载):列出来自规则集的所有预取和预渲染的URL。
  • This Page(此页面):列出当前页面的预渲染状态。

新颜色

DevTools 现在有一个与Chrome更好对齐的全新外观,并使用了全新的配色方案。使用新颜色前后的对比如下图所示。

Chrome 116

改进缺失样式表的调试

DevTools 进行了多项改进,可帮助您更快地识别和调试缺少样式表的问题:

  1. Sources > Page tree 现在只显示成功部署和加载的样式表,以减少混淆。
  2. Sources > Editor现在会对失败的@importurl()href语句进行下划线和内联错误提示框的显示。

  • 控制台现在除了提供指向失败请求的链接外,还提供指向未能加载的样式表引用的精确行号的链接。

  • Network 面板始终在"Initiator"列中提供了指向引用未能加载的样式表的精确行号的链接。
  • Issues 面板列出了所有加载样式表的问题,包括损坏的URL、请求失败以及错位的@import语句。

在Elements > Styles中的 Easing Editor(缓动编辑器)中,现在支持线性时间函数。

使用 Easing Editor,可以轻松地通过点击调整过渡时间函数和动画时间函数的值。在这个版本中,Easing Editor 得到了线性时间函数的支持。

要配置线性时间函数,点击线性选择器按钮。要添加控制点,请在线上任意位置单击。要删除控制点,可以双击它。还可以选择预设之一:linear, elastic, bounce, emphasized

存储桶支持和元数据视图

Application > Storage部分现在支持存储桶。存储桶是彼此独立的,因此可以为数据片段指定驱逐优先级,并确保最有价值的数据不会被删除。每个存储桶可以存储与已建立的存储API(如IndexedDBCacheStorage)相关的数据。

打开DevTools,导航到Application > Storage > Indexed DB,并运行代码。DevTools 现在会显示存储桶及其内容。选择一个存储桶以查看其元数据。

现在,统一的元数据视图也适用于本地存储(local storage)、会话存储(session storage)和缓存存储(cache storage)部分。

Chrome 115

新的 CSS 子网格标志

Elements 面板中为子网格(subgrid)添加了一个新的标志。这个功能目前在Chrome Canary中处于实验阶段。要检查和调试嵌套的子网格,它从父网格继承轨道的数量和大小,点击标志即可。它会切换一个覆盖层,在元素视口的顶部显示列、行及其编号。

查看选择器特异性

Elements > Styles中,将鼠标悬停在选择器名称上,可在工具提示中查看它的特异性权重(优先级)。

查看自定义 CSS 属性值

Elements > Styles中,将鼠标悬停在自定义CSS属性名称上,可以查看其取值。

Sources 面板改进

Sources 面板对于预处理的CSS文件,例如SASS、SCSS和LESS,增加了以下功能:

  • 语法高亮:可以对CSS代码进行语法突出显示,提高可读性。
  • 内联编辑器支持:这些编辑器类似于Elements > Styles中的编辑器,例如颜色选择器和缓动编辑器。可以直接在 Sources 面板中进行编辑,方便修改CSS样式。

设置条件断点的快捷方式

现在可以使用快捷方式更快地设置条件断点。要打开断点对话框,请按住 Command (MacOS) 或 Control (Windows / Linux),然后单击 Sources > Editor 左侧的行号。

默认情况下忽略内容脚本

现在 Settings > Ignore List > Content scripts injected by extensions默认情况下是启用的。启用此设置后:

  1. 调试器会忽略这些脚本,并不会在其抛出的异常处中断。
  2. 在"Sources > Call Stack"面板中,会跳过被忽略的帧。要在此处关闭跳过,勾选"Show ignore-listed frames"。
  3. 在 Console 中,在堆栈跟踪中折叠被忽略的帧。点击"Show N more frames"进行展开,点击"Show less"进行折叠。

此外,忽略列表的选项有了更清晰的文本。

Network > Response 格式美化

默认情况下,Network > Response 现在会对压缩过的响应体进行格式美化,与 Sources 面板类似。

此外,SVG 文件还具有语法突出显示功能。

Chrome 114

支持调试 WebAssembly

Devtools 默认开启 Settings > Experiments > WebAssembly Debugging: Enable DWARF support

这个实验特性可以让开发者在 Wasm 应用中暂停执行和调试 C 和 C++ 代码,同时提供了所有的调试信息:

  • 使用DWARF调试信息映射的原始源代码。
  • 可理解的函数名称在调用堆栈中。
  • 支持断点等功能。

使用Elements面板和Issues标签调试自动填充

Chrome的自动填充功能可以根据保存的信息(如地址或支付信息)自动填写表单。为了帮助开发者轻松调试与自动填充相关的问题,Elements面板现在可以用红色波浪线突出显示这些问题。

要查看此功能,需要启用设置:Settings > Experiments > Highlights a violating node or attribute in the Elements panel DOM tree

在DOM树中将鼠标悬停在突出显示的问题上,然后点击"View issue",就会打开Issues标签页,其中列出了所有检测到的问题并提供关于出错原因的线索。

Recorder 支持断言

现在,Recorder 面板允许在录制过程中添加断言,并提供所有运行时数据。

要添加断言,需要开始新的录制,与页面进行交互,然后点击"Add assertion"。Recorder 会插入一个waitForElement类型的步骤,可以进行自定义。

还可以配置用来断言的步骤,例如JavaScript中的条件语句、节点的子元素数、元素可见性等。

Chrome 113

覆盖网络请求响应头

现在可以在 Network 面板中覆盖响应头。之前,需要访问Web服务器才能尝试更改HTTP响应头。

通过响应头覆盖,可以在本地原型化修复各种头部,其中包括但不限于:

  • 跨域资源共享头
  • 权限策略头
  • 跨域隔离头

要覆盖一个头,可以导航至 Network > Headers > Response Headers,将鼠标悬停在头部的值上,点击编辑,并进行修改。

也可以添加自定义头:

要在一个地方编辑所有的覆盖设置,请编辑Sources > Overrides中的".headers"文件。在这个文件中,还可以点击 Add override rule,使用通配符(*)来覆盖多个请求。

Nuxt、Vite、Rollup 调试改进

为了帮助开发者在调试过程中更快地找出问题,增强的堆栈跟踪现在隐藏了来自 Nuxt 3.3 或更高版本生成的源代码中的帧。DevTools会跳过这些帧:

  • 在控制台跟踪中,在Show N more frames链接下方。
  • 在"Sources > Call Stack"中,在Show ignore-listed frames下方。

为了实现这些改进,DevTools、Nuxt、Vite 和 Rollup 团队合作采用了"X-Google-IgnoreList"源映射扩展:

  • Nuxt 3.3 Release
  • Vite Server Options
  • Rollup Configuration Options

Elements > Styles 中 CSS 改进

为了帮助开发者更快地诊断CSS问题,Styles 面板现在会在以下情况下划掉CSS属性和值:

  • 当CSS属性无效时,会划掉整个CSS声明(属性和值)。
  • 当CSS属性有效的,但值无效时,只会划掉值部分。

现在,[animation](https://developer.mozilla.org/docs/Web/CSS/animation)简写 CSS 属性中包含了指向对应 @keyframes 规则的链接,这样可以更快地在 Styles 面板中导航。

新增控制台设置:回车时自动完成

从之前的版本(112)开始,可以配置开发者工具控制台在按下回车键时应用自动完成建议。

默认情况下,要接受自动完成建议,可以按Tab键或右箭头。为了也能够使用回车键进行自动完成,需要启用设置Settings > Console > Accept autocomplete suggestion on Enter.

此外,另一个设置的文本现在更加用户友好:Treat code evaluation as user action.

命令菜单强调编写的文件

命令菜单中的快速打开对话框现在会将列入忽略列表的第三方文件变灰,以更加强调编写的文件。

Chrome 112

使用 Lighthouse 分析导出为 Puppeteer 脚本

Recorder引入了一个新的导出选项:Puppeteer(包括 Lighthouse 分析)。使用Puppeteer,您可以自动化和控制 Chrome。借助 Lighthouse 可以捕获并提高网站的性能。

打开录制,在点击下载按钮。选择 Export 选项,然后保存为 .js 文件。

运行Puppeteer脚本,以获得一个Lighthouse报告,并保存在flow.report.html文件中。

CSS 文档

现在,Elements > Styles 面板在鼠标悬停在属性上时会显示一个简短的描述。

工具提示中还有一个“ Learn more”链接,该链接会转到该属性的MDN CSS参考文档。

如果对CSS非常了解,可能会觉得这个提示很烦人。可以勾选 Don't show 来关闭所有工具提示。

要重新打开它们,就需要进行如下设置:Settings > Preferences > Elements > Show CSS documentation tooltip

CSS 嵌套支持

Elements > Styles 面板现在支持CSS嵌套语法,并将嵌套样式应用于相应的元素。

在控制台中标记日志点和条件断点

进一步改进增强的断点用户体验,控制台现在标记由断点触发的消息:

  • console.* 调用带橙色问号的条件断点
  • 带粉红色两个点的日志点消息..

现在,控制台会给出适当的源文件中断点的锚链接,而不再是Chrome创建的用于在V8上运行任何JavaScript片段的VM<number>脚本。

单击断点消息旁边的链接可直接跳转到断点编辑器。

调试时忽略不相关的脚本

为了帮助开发者专注于代码的关键部分,现在可以直接从Sources > Page面板上的文件树中将不相关的脚本添加到"忽略列表"中。

右键单击任何脚本或文件夹,然后选择与忽略相关的选项之一。可能会看到将脚本或文件夹添加到列表中或从列表中移除的选项。调试器会忽略添加到列表中的脚本,并在调用堆栈中省略它们。

所有添加到忽略列表的脚本和文件夹在文件树中都会显示为灰色。

如果选择了一个被忽略的脚本,点击Configure按钮会转到 Settings > Ignore List。

Chrome 111

使用“Styles”调试高清颜色

在Web上,将引入新的CSS颜色类型和色彩空间,DevTools 也引入了新工具来帮助开发人员创建、转换和调试高清色彩。Styles面板现在支持CSS颜色级别4规范中提到的12种新色彩空间和7种新色域。

以下是使用color()lch()oklab()color-mix()的CSS颜色定义例子。

使用 color-mix() 函数时,可以在Computed边栏中查看最终颜色输出。

颜色选择器支持所有新的颜色空间,并有更多的功能。例如,点击 color(display-p3 1 0 1) 的颜色色块。还增加了一条色域边界线,区分了 sRGB 和 display-p3 色域,以便更清楚地了解你所选颜色的色域。

DevTools 支持在不同的颜色格式之间进行转换。可以使用"更改颜色格式"图标来访问转换弹窗,或者在Styles面板中按住Shift键并点击颜色进行转换。

在进行转换时,了解是否对颜色进行了裁剪以适应空间尺寸非常重要。DevTools会在转换后的颜色旁边放置一个警告图标,提醒该颜色是否被裁剪。

此外,还可以使用新的快捷键从屏幕上拾取颜色。按下"c"键激活吸管工具,按下Escape键取消激活。吸管工具仅在sRGB色彩空间中采样颜色。例如,如果尝试采样超出sRGB色彩空间的color(display-p3 1 0 1)颜色,吸管工具将会将该颜色裁剪为sRGB空间中最接近的颜色,即洋红色(color(display-p3 0.92 0.2 0.97))。

最后,颜色格式设置现已被弃用,为新的高清色彩格式腾出空间。

增强的断点用户体验

重新设计的断点边栏允许快速访问常用功能,特别是停用、编辑和删除断点。

以下是一些亮点:

  • 两个暂停异常选项都移到了 断点 窗格中,并标上了文字,使其更易于解释。

  • 断点按文件分组,按行号或列号排序,并且是可折叠的。

  • 将鼠标悬停在断点或文件上时,可以使用新选项来停用、删除和编辑断点。

  • 单击编辑断点按钮打开断点编辑器。从这里,可以输入断点条件或切换到日志点。

自定义 Recorder 快捷键

使用快捷键可以更快地记录和重放用户流程。Recorder 引入了几个方便的快捷键,可加快用户流程的录制和重放速度。忘记快捷键了?没问题,随时点击"?"按钮查看所有快捷键。

也可以通过Settings菜单自定义这些快捷方式。

如果正在使用其他面板中,并且想要开始录制用户流程,可以使用DevTools中的命令菜单中的"Create a new recording"命令来开始录制。

在 Application 面板中重新组织缓存

现在可以在 Application 面板的 Cache 部分找到 Cache Store ,而 Back/forward cache已移至Background Services部分。