GVKun编程网logo

7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E](前端面试开放性问题)

12

最近很多小伙伴都在问7个开放式CSS面试题及回答策略[每日前端夜话0x2E]和前端面试开放性问题这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展13个帮你提高开发效率的现代CSS框

最近很多小伙伴都在问7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E]前端面试开放性问题这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展13个帮你提高开发效率的现代CSS框架[每日前端夜话0x67]、15个 Vue.js 高级面试题[每日前端夜话0xF2]、23 个初级 Vue.js 面试题[每日前端夜话0xF0]、7 个Web开发工程师面试题和回答策略 [每日前端夜话0x34]等相关知识,下面开始了哦!

本文目录一览:

7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E](前端面试开放性问题)

7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E](前端面试开放性问题)

7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E]

京程一灯 前端先锋

每日前端夜话0x2E
每日前端夜话,陪你聊前端。
每天晚上18:00准时推送。
正文共:2360 字 1 图
预计阅读时间: 6 分钟

7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E]

翻译:疯狂的技术宅
原文:https://www.indeed.com/hire/interview-questions/css

不管你是面试官还是求职者,里面的思路都能让你获益匪浅。

1 你用 CSS 多久了?

解析:

这个问题可以让面试官了解求职者使用 CSS 的经验。它还可以告诉面试官该人是否将该技能作为业余爱好或在学术或专业环境中学习。

面试官想知道些什么:

  • 求职者使用 CSS 的经验
  • 对创建网站的兴趣
  • 是否持续关注新技术

    参考答案:

我在高中时就开始用 CSS 了。当时我和一些朋友为我们喜欢的电视节目搭了一个网站。不过这些页面很差劲,因为它们没有统一的风格。每个页面的字体和颜色都不一样。后来我学会了 CSS,这样就可以很轻松的使页面风格统一。

2 你最喜欢的 CSS 功能是什么?

解析:

求职者最喜欢 CSS 的哪些功能并不重要。通过这个人是否能够熟练的地谈论 CSS,能够看出他 CSS 了解多少。

面试官想知道些什么:

  • 求职者对 CSS 的经验
  • 对 CSS 的了解
  • 如何用 CSS 节省时间

    参考答案:

我非常喜欢用 CSS 改变页面布局这个功能,因为这样可以适配不同的屏幕尺寸。现在有各种尺寸和形状的设备。如果你能正确的使用 CSS,在任何设备上访问你网站的体验都会很好,不管是用 iPhone 还是用 PC 浏览你的网站都没关系。

3 你有没有把 CSS 与其他语言结合使用?

解析:

Web开发人员通常依赖好几种语言来构建动态网站。通过面试者的答案可以得知他都知道哪些开发语言。如果面试官单独提出某种语言,还可知道面试者对该语言的理解有多深。

面试官想知道些什么:

  • 对前端设计的兴趣
  • 其他语言技能
  • 是否具有创造性解决问题的能力

    参考答案:

通常我用 CSS 来创建网站页面的总体布局并进行美化。另外我还将用 HTML 为页面提供一些结构。当我需要向网站添加交互式元素、动画、音乐或其他功能时,更喜欢使用 JavaScript,因为它能够很方便的实现一些逻辑。“

4 你能告诉我一个让你学到新 CSS 技术的项目吗?

解析:

这个问题鼓励面试者反思他们使用CSS的经历。答案可能会揭示一些事情,例如面试者对 CSS 有多少经验,以及他们如何使用批判性思维来解决困难问题。

面试官想知道些什么:

  • 对 CSS 的了解
  • 使用 CSS 的经验
  • 是否具有批判性思维

    参考答案:

我在大学里做过一个项目,这个项目能帮助图书管理员和工程师团队对内容进行数字化。我的小团队打算把图书馆里收藏的大量手写诗集数字化。花费精力最多的一个功能是:写了一个能够容纳各种大小和形状的诗词稿件的样式。

5 你最喜欢的一个项目是什么?

This question gives you some insight into what the interviewee enjoys. The answer says more about the applicant’s personality than programming skills.
通过这个问题可以深入了解求职者的经验。答案更多地揭示了求职者的个性而不是编程技巧。

面试官想知道些什么:

  • 了解 CSS 的好处
  • 能够创造性的解决问题
  • 面试者如何应对挑战

    参考答案:

我帮一位朋友写了一个发布文章、照片、音乐和各种媒体的在线杂志,这个项目并不难,几个小时后,他的网站从 OK 变为优秀。它让我想起为什么了解 CSS,JavaScript 和其他常用语言非常重要。如果没有一个好的网站来展示它,你所做的都没有什么意义。

6 当你忘记某个 CSS 的功能时,是怎么解决的?

解析:

程序员不能把所有东西都放在脑子里,所以当他们能想起特定的功能和术语时,会依赖一些资源。这个问题的答案能够知道求职者有没有可靠的资源,这些资源在未来开展项目时可能会派上用场。

面试官想知道些什么

  • 深入了解 CSS 资源
  • 在哪里去查找 CSS 功能的资料
  • Insider kNowledge of CSS
  • 是否懂得 CSS 更深层次的知识

    参考答案:

Mozilla开发者网络,简称 MDN,为我节省了大量的时间。这是一个在线资源,其中包含有 CSS、HTML和JavaScript 的资料。我也喜欢 w3schools.com 上的 CSS 教程。

7 你最不喜欢 CSS 的哪些东西?

解析:

所有人都有不喜欢的工作。对这个问题的诚实回答可以帮助面试官为求职者提供合适的团队。例如,如果一个人喜欢在 CSS 文件中发现错误,那么你可能希望聘请这个人与一个喜欢专注于大局的创意人一起工作。

面试官想知道些什么:

  • 了解 CSS 的优缺点
  • 了解求职者可以扮演什么角色
  • 了解求职者的其他兴趣

    参考答案:

CSS 使网页设计变得更加容易,但它仍然感觉有点单调乏味。理想情况下,我想用动态语言让用户与网站进行互动。但就目前而言,我很乐意磨练自己的 CSS 技能并向更有经验的人学习。

13个帮你提高开发效率的现代CSS框架[每日前端夜话0x67]

13个帮你提高开发效率的现代CSS框架[每日前端夜话0x67]

每日前端夜话0x67

每日前端夜话,陪你聊前端。

每天晚上18:00准时推送。

正文共:1566 字

预计阅读时间: 5 分钟

翻译:疯狂的技术宅

来源:1stwebdesigner

本文将向你介绍一系列顶级CSS框架。有些人可能听说过,也可能对有些人是全新的。但它们都提供了各种有用的先进功能,可以改善你的工作流程。开始吧!

专注于 CSS 的框架

让我们先从一些专注于 CSS 的框架开始。你将找到所有类型的布局和UI元素来自己构建项目的基础。有些甚至可能包含一些 JavaScript 来帮你处理更复杂的功能。

Tailwind CSS

Tailwind CSS

Tailwind与其他框架的区别在于它没有任何预构建的UI组件。相反,它更专注于程序本身,CSS类可以帮助你在构建网站方面领先一步。尺寸、颜色和定位等元素对它来说才是关键。

官网:https://tailwindcss.com

Bulma

Bulma

Bulma是围绕CSS Flexbox构建的,是一个免费的开源框架。你会发现它有许多易于定制的UI元素。它是模块化的,这意味着你可以只导入所需的元素 —— 如列或按钮。

官网:https://bulma.io/

Picnic CSS

Picnic CSS

Picnic CSS 是一个超轻量级的框架,压缩后小于10KB。它具有基于Flexbox的网格布局以及大量的UI元素,可以快速启动项目。你甚至可以找到一个简单的导航栏和模态窗口。

官网:https://picnicss.com/

Materialize

Materialize

Google 的 Material Design 的粉丝肯定喜欢 Materialise。该框架基于流行的设计语言,包括大量基于 CSS 和 JavaScript 的元素。它聚焦于微交互,以使用户界面更加友好。值得注意的是,Materialise 还支持自定义主题。

官网:https://materializecss.com/

Pure.css

Pure.css

Pure.css在压缩后仅为3.8KB,以移动优的先理念为中心。它是模块化的,所以你只需导入要使用的元素包。你还可以下载和安装许多常用布局。

官网:https://purecss.io/

Base

Base

Base 是一个模块化框架,正如它的名字所要说明的,其旨在为你的项目提供坚实的基础。它建立在 Normalize.css 之上,提供易于定制的基本样式。你在这里找不到任何太多的东西,但这恰恰就就是重点所在!

官网:https://getbase.org/

mini.css

mini.css

mini.css 是一个在轻量级和功能丰富之间取得平衡的包。它确实达到了目标,压缩后大约10KB,同时拥有相当多的UI元素和布局。通过它提供的文档你可以深入了解这一切是如何运作的。

官网:https://minicss.org/

Concise CSS

Concise CSS

Concise CSS 提供了一个基于实用程序的框架来使设计师“杜绝臃肿”,它可以让你快速入门。如果你需要UI元素的话可以通过单独的套件去添加它们。

官网:https://concisecss.com/

Mobi.css

Mobi.css

Mobi.css 非常小(压缩后仅 2.6KB),主要针对移动用户。但是其内置主题和插件系统还有很大的增长空间。如果基本样式不能满足你的要求,可以在框架之上以模块化的方式进行构建。

官网:http://getmobicss.com/

Spectre.css

Spectre.css

Spectre.css 被称为“轻量级、响应式、现代化”,是一个基于Flexbox的框架。你会发现一些基本的布局、UI和排版风格。此外还有许多功能组件(手风琴、弹出窗口、标签等)都是用纯CSS构建的。总的来说,它做到了很好的平衡性。

官网:https://picturepan2.github.io/spectre/

超越CSS范畴的框架

有些场景需要更强大的框架 —— 下面这些选择可以帮你完成这项工作。它们不仅提供了大量基于 CSS 的元素,而且还可以找到基于 HTML 和 JavaScript 的功能。从某种意义上来说,几乎就像是从完成了一半的模板开始构建你的网站,你可以通过自定义来满足自己的需求。

Bootstrap

Bootstrap

Bootstrap 是由 Twitter 创建的,因为它维护得很好,并提供了一个庞大的预建功能库,所以它几乎无处不在。虽然你可以使用默认设置,但 Bootstrap 也非常易于扩展。通过添加主题或自定义组件能够帮你进一步开发个性化的 UI。

官网:https://getbootstrap.com/

Foundation

Foundation

Foundation 是模块化组件库,可以为你量身打造自己的项目。它有各种各样的选项 —— 从响应式布局到动画。 Foundation 也有自己的 JavaScript 插件API。最后,该框架附带了ARIA属性和角色,用于构建具有可访问性的站点。

官网:https://foundation.zurb.com/

Semantic UI

Semantic UI

有时框架可以包含仅对其原始开发人员有意义的 CSS 类名。Semantic UI 希望通过使用自然语言来改变叙述。逻辑是很容易遵循的,应该可以加快开发速度。除语言之外,你还可以找到超过 3,000 个主题变量 —— 根据需要,你可以编辑或删除所有这些变量。

官网:https://semantic-ui.com/

依赖框架更好地工作

完成你的项目需要做很多工作 —— 这就是框架存在的原因。它为我们处理了一些繁重的工作,并为之后的一切提供了基础。

原文:https://1stwebdesigner.com/modern-css-frameworks-to-speed-up-the-design-process/

 

下面夹杂一些私货:也许你和高薪之间只差这一张图

2019年京程一灯课程体系上新,这是我们第一次将全部课程列表对外开放。

愿你有个好前程,愿你月薪30K。我们是认真的 !


在公众号内回复“体系”查看高清大图

长按二维码,加大鹏老师微信好友

拉你加入前端技术交流群

唠一唠怎样才能拿高薪

 往期精选 

  • BootstrapVue 入门

  • JavaScript的工作原理:引擎、运行时和调用堆栈

  • 用 TypeScript 开发 Node.js 程序

  • 快速上手最新的 Vue CLI 3

  • JavaScript 程序员可以从C ++中学到些什么

  • 在同一基准下对前端框架进行比较

  • Edge 拥抱 Chromium 对前端工程师意味着什么?

  • 使你的 JavaScript 代码简单易读

  • Node.js多线程完全指南

  • deno如何偿还Node.js的十大技术债

  • 实战!半小时写一个脑力小游戏

  • CSS Flexbox 可视化手册

  • 世界顶级公司的前端面试都问些什么

  • V8引擎内部机制及优化代码的5个技巧

小手一抖,资料全有。长按二维码关注前端先锋,阅读更多技术文章和业界动态。

本文分享自微信公众号 - 前端先锋(jingchengyideng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

15个 Vue.js 高级面试题[每日前端夜话0xF2]

15个 Vue.js 高级面试题[每日前端夜话0xF2]

每日前端夜话0xF2

每日前端夜话,陪你聊前端。

每天晚上18:00准时推送。

正文共:3117 字

预计阅读时间:10 分钟

翻译:疯狂的技术宅

来源:zeolearn

1. 渲染项目列表时,“key” 属性的作用和重要性是什么?

渲染项目列表时,key 属性允许 Vue 跟踪每个 Vnode。key 值必须是唯一的。

如果没有使用 key 属性,并且列表的内容发生了改变(例如对列表进行排序),则虚拟 DOM 宁愿使用更新的数据来修补节点,来反映更改,而不是上下移动元素。这是默认模式,非常有效。

当提供唯一的键值 IS 时,将根据对键的更改对元素进行重新排序(并且不使用新数据对它们进行修补),如果删除了 key(例如,删除列表中的项目时),则对应的元素节点也被销毁或删除。

请注意下图:

这里有一个父组件渲染一个子组件列表。我们看到三个列表项被渲染为三个子组件节点。这些子组件都包含一个 span 标记和一个输入框,可能还包含一个本地状态对象(可选)。现在让我们检查两种情况:

当不使用 key 属性时:例如如果列表已重新排序,则 Vue 会使用重新排序的数据简单地修补已经存在的三个节点,而不用移动这些节点。只要用户没有输入或更改这些子组件中一个或多个子组件的本地状态,此方法就可以正常工作。因此假设用户输入了组件编号为 3的输入框,重新排序列表后,组件编号为 3 的 span 标签内容将呗更改,但是输入框将与用户键入的内容击破状态数据一起保留在这里。这是因为 Vue 无法识别组件编号 3,它只是重新修补它所看到的更新数据,即 span 标签的内容。

当在子组件上使用 key 属性时,Vue 会知道该组件的身份,并且在对列表进行重新排序时,将移动节点而不是对其进行修补。这能够确保手动编辑的输入框以及整个组件移动到新位置。

在有条件地渲染组件或元素时,还可以用 key 属性来向 Vue 发出有关元素唯一性的信号,并确保元素不会被新数据重新修补。

2.你将怎样在模板中渲染原始 HTML?

在模板中输出内容的典型方法是使用 mustache 语法标签从方法、属性或数据变量输出数据。但是 mustache 标记会渲染文本。如果你尝试使用 mustache 标记来渲染 HTML,它将以文本字符串的形式去渲染,并且不会被解析。要将内容渲染和解析为 html,我们可以使用 v-html 指令,如下所示。

模板

1<div id="app" v-html=”title”></div>

App
应用

1new Vue({
2    el''#app'',
3    data: {
4      title''<h1 >Vue.js</h1>''
5    }
6});

输出

Vue.js

如上面的例子所示,v-html 指令解析所有HTML,结果上面的语句将按需渲染。开发人员必须在了解 v-html 的前提下使用。如果不恰当地使用了 v-html,可能会使网站遭受注入攻击,很有可能会从外部源注入并执行恶意代码。

3. 什么是vue-loader?

Vue-loader 是 Webpack 的加载器模块,它使我们可以用 .vue 文件格式编写单文件组件。单文件组件文件有三个部分,即模板、脚本和样式。vue-loader 模块允许 webpack 使用单独的加载器模块(例如 SASS 或 SCSS 加载器)提取和处理每个部分。该设置使我们可以使用 .vue 文件无缝编写程序。

vue-loader 模块还允许把静态资源视为模块依赖性,并允许使用 webpack 加载器进行处理。而且还允许在开发过程中进行热重装。

4. 什么是 mixin?

Mixins 使我们能够为 Vue 组件编写可插拔和可重用的功能。如果你希望在多个组件之间重用一组组件选项,例如生命周期 hook、方法等,则可以将其编写为 mixin,并在组件中简单地引用它。然后将 mixin 的内容合并到组件中。如果你要在 mixin 中定义生命周期 hook,那么它在执行时将优先于组件自己的 hook 。

5. 在开发过程中,如果你的 Vue 程序和后端 API 服务器未在同一主机上运行,该如何代理 API 请求。假设使用 Vue-CLI 3 进行设置?

Let’s say we have a Node.js backend server running on localhost:4040. To ensure it is proxyed in and accessible from the components, we can configure the vue.config.js file and include a devServer section as shown below:

假设我们有一个运行在 localhost:4040 上的 Node.js 后端服务器。为了确保代理并可以从组件中访问它,可以配置 vue.config.js 文件并包含 devServer 部分,如下所示:

在 vue.config.js 文件中:

 1module.exports: {
2    devServer: {
3        proxy: {
4            ''/api'': { 
5                target: ‘http://localhost:4040/api’, 
6                changeOrigin: true 
7            }
8        }
9    }
10}

6. prop 如何指定其类型要求?

通过实现 prop 验证选项,可以为单个 prop 指定类型要求。这对生产没有影响,但是会在开发阶段发出警告,从而帮助开发人员识别传入数据和 prop 的特定类型要求的潜在问题。

配置三个 prop 的例子:

 1props: {
2    accountNumber: {
3        typeNumber,
4        requiredtrue
5    },
6    name: {
7        typeString,
8        requiredtrue
9   },
10   favoriteColorsArray
11}

7. 什么是虚拟 DOM?

文档对象模型或 DOM 定义了一个接口,该接口允许 JavaScript 之类的语言访问和操作 HTML 文档。元素由树中的节点表示,并且接口允许我们操纵它们。但是此接口需要付出代价,大量非常频繁的 DOM 操作会使页面速度变慢。

Vue 通过在内存中实现文档结构的虚拟表示来解决此问题,其中虚拟节点(VNode)表示 DOM 树中的节点。当需要操纵时,可以在虚拟 DOM的 内存中执行计算和操作,而不是在真实 DOM 上进行操纵。这自然会更快,并且允许虚拟 DOM 算法计算出最优化的方式来更新实际 DOM 结构。

一旦计算出,就将其应用于实际的 DOM 树,这就提高了性能,这就是为什么基于虚拟 DOM 的框架(例如 Vue 和 React)如此突出的原因。

8. 什么是 Vue 插件?

Vue 插件允许开发人员构建全局级别的功能并将其添加到 Vue。用于向程序添加可以全局访问的方法和属性、资源,选项,mixin 以及其他自定义 API。VueFire 是  Vue 插件的一个例子,该插件添加了 Firebase 特定的方法并将其绑定到整个程序。之后 firebase 函数可在程序结构中的任何位置的 this 上下文中使用。

9. 什么是渲染函数?举个例子。

Vue 允许我们以多种方式构建模板,其中最常见的方式是只把 HTML 与特殊指令和 mustache 标签一起用于响应功能。但是你也可以通过 JavaScript 使用特殊的函数类(称为渲染函数)来构建模板。这些函数与编译器非常接近,这意味着它们比其他模板类型更高效、快捷。由于你使用 JavaScript 编写渲染函数,因此可以在需要的地方自由使用该语言直接添加自定义函数。

对于标准 HTML 模板的高级方案非常有用。

这里是用 HTML 作为模板的 Vue 程序

 1new Vue({
2  el''#app'',
3  data: {
4    fruits: [''Apples''''Oranges''''Kiwi'']
5  },
6  template:
7      `<div>
8         <h1>Fruit Basket</h1>
9         <ol>
10           <li v-for="fruit in fruits">{{ fruit }}</li>
11         </ol>
12      </div>`

13});

这里是用渲染函数开发的同一个程序:

 1new Vue({
2  el''#app'',
3  data: {
4    fruits: [''Apples''''Oranges''''Kiwi'']
5  },
6  renderfunction(createElement{
7    return createElement(''div'', [
8      createElement(''h1''''Fruit Basket''),
9      createElement(''ol''this.fruits.map(function(fruit
10        return createElement(''li'', fruit); 
11      }))
12    ]);
13  }
14});

输出:

Fruit Basket

  1. Apples

  2. Oranges

  3. Kiwi

在上面的例子中,我们用了一个函数,它返回一系列 createElement() 调用,每个调用负责生成一个元素。尽管 v-for 指令在基于 HTML 的模板中起作用,但是当使用渲染函数时,可以简单地用标准 .map() 函数遍历 fruits 数据数组。

10. 哪个生命周期 hook 最适合从 API 调用中获取数据?

尽管这取决于组件的用途及,但是创建的生命周期 hook 内通常非常适合放置 API 调用。这时可以使用组件的数据和响应性功能,但是该组件尚未渲染。

11. 什么时候调用 “updated” 生命周期 hook ?

在更新响应性数据并重新渲染虚拟 DOM 之后,将调用更新的 hook。它可以用于执行与 DOM 相关的操作,但是(默认情况下)不能保证子组件会被渲染,尽管也可以通过在更新函数中使用 this.$nextTick 来确保。

12. 在 Vue 实例中编写生命周期 hook 或其他 option/propertie 时,为什么不使用箭头函数?

箭头函数自己没有定义 this 上下文,而是绑定到其父函数的上下文中。当你在 Vue 程序中使用箭头函数(=>)时,this 关键字病不会绑定到 Vue 实例,因此会引发错误。所以强烈建议改用标准函数声明。

13. 什么时候使用keep-alive元素?

当由于数据属性或其他某种响应状态而动态切换组件时,每次将它们切换到渲染状态时,都会被重新渲染。尽管你可能需要这种行为,但在某些情况下重新渲染可能是不合适的。例如在创建时从 API 调用中引入数据的组件。你可能不希望每次动态切换这个组件进行渲染时都调用此 API。这时你可以将组件包含在 keep-alive 元素中。keep-alive 元素缓存该组件并从那里获取它,而不是每次都重新渲染它。

14. 在大型 Vue 程序中管理状态的推荐方法是什么?为什么?

当程序在功能和代码方面不断增长时,状态管理会变得困难,并且使用无穷无尽的下游网络 prop 和上游事件当然不是明智的决定。在这种情况下,有必要将状态管理转移到中央管理系统。Vue 生态系统中提供了 Vuex,它是官方的状态管理库,也是推荐用于集中存储状态的模式。

Vuex 允许维护中央状态。组件将 Vuex 用作响应性数据存储,并在状态更新时进行更新。多个或者不相关的组件可以依赖于相同的中央存储。

在这种情况下,Vue 充当纯 View 层。要修改状态,视图层(例如按钮或交互式组件)需要发出 Vuex Action,然后执行所需的任务。为了更新或修改状态,Vuex 提供了 Mutations

这个工作流程的目的是留下可用的操作痕迹。

15. 什么是异步组件?

当大型程序使用大量组件时,从服务器上同时加载所有组件可能是没有意义的。在这种情况下,Vue 允许我们在需要时定义从服务器异步加载的组件。在声明或注册组件时,Vue 接受提供 Promise 的工厂函数。然后可以在调用该组件时对其进行“解析”。

通过仅加载基本组件并把异步组件的加载推迟到未来的调用时间,可以节省带宽和程序加载时间。

这是一个异步组件的简单示例。

1new Vue({
2    components: {
3        ‘tweet-box’: () => import(‘./components/async/TweetBox’)
4    }
5}); 

当以这种方式使用时,Webpack 的代码拆分将用于提供此功能。

 

下面夹杂一些私货:也许你和高薪之间只差这一张图

2019年京程一灯课程体系上新,这是我们第一次将全部课程列表对外开放。

愿你有个好前程,愿你月薪30K。我们是认真的 !


在公众号内回复“体系”查看高清大图

长按二维码,加大鹏老师微信好友

拉你加入前端技术交流群

唠一唠怎样才能拿高薪

 往期精选 

  • BootstrapVue 入门

  • JavaScript的工作原理:引擎、运行时和调用堆栈

  • 用 TypeScript 开发 Node.js 程序

  • 快速上手最新的 Vue CLI 3

  • JavaScript 程序员可以从C ++中学到些什么

  • 在同一基准下对前端框架进行比较

  • Edge 拥抱 Chromium 对前端工程师意味着什么?

  • 使你的 JavaScript 代码简单易读

  • Node.js多线程完全指南

  • deno如何偿还Node.js的十大技术债

  • 实战!半小时写一个脑力小游戏

  • CSS Flexbox 可视化手册

  • 世界顶级公司的前端面试都问些什么

  • V8引擎内部机制及优化代码的5个技巧

小手一抖,资料全有。长按二维码关注前端先锋,阅读更多技术文章和业界动态。


本文分享自微信公众号 - 前端先锋(jingchengyideng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

23 个初级 Vue.js 面试题[每日前端夜话0xF0]

23 个初级 Vue.js 面试题[每日前端夜话0xF0]

每日前端夜话0xF0

每日前端夜话,陪你聊前端。

每天晚上18:00准时推送。

正文共:3969 字

预计阅读时间:10 分钟

翻译:疯狂的技术宅

来源:zeolearn

1. 为什么Vue被称为“渐进框架”?

使用渐进式框架的代价很小,从而使现有项目(使用其他技术构建的项目)更容易采用并迁移到新框架。Vue.js 是一个渐进式框架,因为你可以逐步将其引入现有应用,而不必从头开始重写整个程序。

Vue 的最基本和核心的部分涉及“视图”层,因此可以通过逐步将 Vue 引入程序并替换“视图”实现来开始你的旅程。

由于其不断发展的性质,Vue 与其他库配合使用非常好,并且非常容易上手。这与 Angular.js 之类的框架相反,后者要求将现有程序完全重构并在该框架中实现。

2. Vue.js 中的声明式渲染是什么?

Vue.js 使渲染数据变得容易,并隐藏了内部实现。例如下面的代码:

HTML

1<div id=”app”></div>

JavaScript

1const greeting = “Hello there!”;
2const appDiv = document.getElementById(“app”);
3appDiv.innerText = greeting;

上面的代码段将在 ID 为 “app” 的 div 中显示短语 “Hello there!”。代码包含实现结果所需的所有步骤。首先选择 ID 为 “app” 的 DOM 元素,然后用 innerText 属性手动设置 div 的内容。

现在,让我们看看在 Vue 中是怎么做的。

Template

1<div id=”app”>{{ greeting }}</div>

App

1new Vue({
2    data: {
3       greeting: ‘Hello There!’
4    },
5   el: ‘#app’
6});

我们在 Vue 程序中创建了一个名为 “greeting” 的数据属性,但是只需要在 div 中用 mustache 语法输入 “greeting” 即可,而不必关心内部实现。我们声明了 “greeting” 变量,其余的由 Vue 完成。这就是声明式渲染的样子。Vue 隐藏并管理内部信息。

3. 你用哪个指令遍历对象的属性?

要遍历对象或数组,可以使用 v-for 指令。下面是一个例子:

Template

1<div id="app">
2    <ul>
3      <li v-for="(value, key) in card">{{ key }} - {{ value }}</li>    </ul>
4 </div>

App

 1new Vue({
2  el''#app'',
3  data: {
4    card: {
5      name''John Doe'',
6      age25,
7      city''New York'',
8      country''US''
9    }
10  }
11});

输出

  • name - John Doe

  • age - 25

  • city - New York

  • country - US

4. 给出模板,描述 Vue 程序的输出。

模板:

1{{title}}

App:

1new Vue({ 
2    el''#app''
3    data: { 
4        title''Vue.js'' 
5    } 
6})

上面的代码将在 div 中输出字符串 <h1>Vue.js</h1>。之所以将整个标签渲染为字符串,是因为 mustache 模板标签 {{title}}将传入的数据视为字符串,而不将其解析为可执行代码。这也有助于缓解把恶意代码注入到页面的 XSS 相关的问题 。这类似于在 JavaScript 中使用 elementSelector.innerText = text 语句。

5. 如何在输入框和数据属性之间实现双向数据绑定?

要实现双向数据绑定,可以使用 v-model 指令。v-model 指令主要是语法糖:

1<input type="text" :value="nameInput" @keyup="nameInput = $event.target.value">

在上面的语句中,每当观察到 “keyup” 事件时,就会将名为 “nameInput” 的数据属性设置为输入框的值。同时,将输入框的 value 属性绑定到 “nameInput” 数据属性。这样在表单字段和数据属性之间建立了双向数据关系。

v-model 可以做到这一点,并且比手动设置更有效地。要使用 v-model 复制上述效果,请再次在同一输入框中输入以下内容:

1<input type="text" v-model="nameInput">

需要注意的是,当实现双向数据绑定时,使用的数据属性被认为是事实上的来源。在 data 属性上所做的任何更改都将优先于 form 字段上的用户输入事件。

6. 你如何捕获元素上的点击事件?

可以使用 v-on:click 指令捕获 Click 事件。该指令也可以用缩写符号 @click 表示。这是一个例子:

v-on:click 符号

1<a v-on:click=”clickHandler”>Launch!</a>

@click 符号

1<a @click=”clickHandler”>Launch!</a>

7. 什么是动态 prop?

当使用 v-bind 指令为 prop 分配值作为绑定到属性的函数时,被称为动态 prop。例如以下组件的 tweet 属性绑定到名为tweetText的数据属性。这与静态硬编码值相反。这种绑定始终是单向的,这意味着数据可以从父组件流到子组件,而绝不会反过来。

1<TweetBox :tweet=”tweetText”> 

8. Vue.js 中的指令是什么?

指令是一系列特殊属性,你可以通过将其添加到模板 HTML 标记中来赋予它们特殊的响应功能。指令允许模板中的元素使用数据属性、方法、计算或监视的属性和内联表达式根据定义的逻辑对更改做出反应。例如以下代码使用 v-on 指令在组件上实现 click 事件侦听器。

1<SignUpButton v-on:click=”doSignup” /> 

或者

1<SignUpButton @click=”doSignup” />

在这个例子中,我们使用 v-if 指令基于名为 showButton 的数据属性显示或删除元素与组件。指令以 v- 开头来指示 Vue 特定的属性。此规则的例外是 v-on 和 v-bind 的简写形式。

1<SignUpButton v-if=”showButton” />

Vue 还允许定义自己的自定义指令。

9.  v-show 指令的用途是什么?

v-show 指令允许有条件地显示元素。在下面的代码中,仅当 isDisplayed 数据属性为 true 时,才会显示该元素。

1 <TweetBox v-show=”isDisplayed”> 

使用 v-show 指令时,可使用 CSS 的 display 属性切换元素的可见性。

10. v-show 与 v-if 指令有何不同?

v-show 和 v-if 都用于有条件地显示元素,而后者提供了条件渲染的真正实现。v-show 只需切换 CSS 的 display 属性即可显示或隐藏元素,而 v-if 指令可创建或销毁组件。每次显示状态更改时,代价通常会更大。

另一方面,v-show 成本较低,因为它仅切换元素的CSS显示属性。所以如果必须经常切换元素,则 v-show 会提供比 v-if 更好,更优化的结果。

就加载元素的初始渲染成本而言,v-if 不会渲染最初隐藏的元素的节点,而 v-show 会渲染其 CSS display 属性被设置为 none 的元素。

11. 对于作为元素实现的注释框,我们希望使用户能够按下键盘上的Enter键,来将内容提交给名为 “storeComment” 的方法。在代码中对此进行演示。

可以在任何元素上使用 v-on 指令来实现事件侦听器。此外,v-on 还允许我们将按键修饰符用于 “enter”,“tab”,“esc”,“space” 等常见按键。这是一个例子:

模板

1<textarea @keyup.enter="storeComment"></textarea>

App

1new Vue({
2  el''#app'',
3  methods: {
4    storeComment(event) {
5      // access the value of the textarea box using event.target.value or use v-model to bind to a data property
6    }
7  }
8});

12. 如何在单页 Vue 应用(SPA)中实现路由?

可以通过官方的 vue-router 库在用 Vue 构建的 SPA 中进行路由。该库提供了全面的功能集,其中包括嵌套路线、路线参数和通配符、过渡、HTML5 历史与哈希模式和自定义滚动行为等功能。Vue 还支持某些第三方路由器包。

13. 使用 Vue 时调用 event.preventDefault() 的最佳方式是什么?

在事件侦听器上调用 event.preventDefault() 的最佳方式是将 .prevent 修饰符与 v-on 指令一起使用。这是一个例子:

1<a @click.prevent=”doSomethingWhenClicked”>Do Something</a>

14. 什么是过滤器?

过滤器是在 Vue 程序中实现自定义文本格式的一种非常简单的方法。它们就像可以在表达式中通过管道传递(使用管道字符)以取得结果的运算符。下面是一个可以反转文本字符串的过滤器示例:

模板

 1<div id="app">{{ title | reverseText }}</div>
2App
3new Vue({
4    el: ''#app'',
5    data: {
6      title: ''This is a title''
7    },
8    filters: {
9      reverseText(text) {
10        return text.split('''').reverse().join('''');
11      }
12    }
13});

输出

eltit a si sihT

在上面的例子中,我们创建了一个名为 reverseText 的过滤器,该过滤器反转文本字符串并返回。这是一个简单的函数,接受输入并返回处理后的输出。通过在过滤器下声明,它就可以成为可以在模板中使用的过滤器。

在模板中,我们只是将 reverseText 过滤器通过管道传递到了想要在 mustache 标签中显示的数据变量。这样可以将多个过滤器管道连接在一起。因此过滤器提供了一种非常优雅的方式来处理文本。

15. 如何动态地在元素上切换 CSS 类?

Vue 允许我们绑定到 class 属性。在下面的例子中,我们将 class 属性绑定到一个对象,该对象允许使用 data 属性切换类。

模板

1<div :class=”{ divStyle : showDiv }”></div>

App

1new Vue({
2    el''#app'',
3    data: {
4 showDivtrue
5    }
6});

在上面的代码中,只要数据属性 showDivtrue,类名 divStyle 将应用于 div。

16. 绑定 HTML 类时,该如何连接类?假设存在一个元素:Process。我们只希望使用名为 “isActive” 的数据属性动态地切换 btnActive 类。

这可以在绑定类时用 Array 来实现。以下是实现方法:

模板

1<Button :class=”[‘btn’, ‘btnRed’, { btnActive : isActive }]”>Process</button>

App

1new Vue({
2    el''#app'',
3    data: {
4      isActivetrue
5    }
6});

在上面的代码段中,将串联各个类的数组,并基于 isActive 数据属性的值对对象中的表达式进行响应式评估。

17. 什么是计算属性?

计算属性是一类特殊函数的结果,当从属属性发生变化时,这些函数会自动进行计算。用它们代替内联表达式可以更好地表达复杂的逻辑,在模板中不能作为内联表达式合并。

每个计算方法都可以在模板部分作为属性使用。当从属属性更改时,计算方法将自动计算并缓存结果,这样比使用普通方法更好。方法在访问时将始终会重新计算,而如果自上一次计算和缓存阶段以来该方法内使用的属性未发生更改,则计算的属性将不会重新计算。

需要注意的是,仅当方法中使用的属性是响应性的(例如数据属性)时,才考虑依赖关系的更改。

这是一个演示计算属性的简单例子:

模板

1<div id="app">
2  <input type="text" v-model="email" :class="{ invalid : isInvalid }">
3</div>

App

 1const emailRegEx = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
2
3new Vue({
4    el''#app'',
5    data: {
6      email''''
7    },
8    computed: {
9      isInvalid() {
10        return !emailRegEx.test(this.email);
11      }
12    }
13});

在上面的代码示例中,如果正则表达式测试针对电子邮件输入框失败,则 isValid 计算属性将返回 true。如果电子邮件验证程序认为输入的值无效,就会看到文本框便为红色(你必须创建一个名为 .invalid 的类,并将背景颜色属性设置为红色)。当用户键入内容时,将重新执行计算的方法,并且在验证格式之后,动态删除无效的类。

18. 如何确保在单文件组件中定义的 CSS 样式仅应用于该组件,而不被用于其他组件?

这可以通过样式标签上的 scoped 属性来实现。在内部 Vue 使用 PostCSS 插件为所有样式元素分配唯一的数据属性,然后使样式针对这些唯一的元素。举个例子:

1<template>
2    <div class=”title”>This is a title</div>
3</template>
4<style scoped>
5    .title {
6        font-family: sans-serif;
7        font-size20px;
8
</style>

19. 如何将数据从父组件传递到子组件?

可以用作为组件中单向入口的 prop 把数据向下传递到子组件。这是一个例子:

 1<template>
2    <div>
3      <contact-list-item v-for=”contact in contacts” :contact=”contact” />
4   </div>
5</template>
6<script>
7    import ContactListItem from ‘./ContactListItem’;
8    export default {
9name: ‘address-book’,
10datafunction({
11return {
12contacts: [.....]
13}
14},
15components: {
16ContactListItem
17}
18}
19
</script>

contact-list-item 上绑定的 prop “contact” 是一个入口,用于从用作子项的父组件接收数据。在 contact-list-item 组件中:

 1<template>
2    <div>
3        <span>{{ contact.name }}</span>
4        <span>{{ contact.email }}</span>
5   </div>
6</template>
7
8<script>
9    export default {
10     name: ‘contact-list-item’,
11props: [‘contact’]
12    }
13
</script> 

在这里声明了一个名为 “contact” 的 prop 引入数据,然后可以直接在模板部分中显示。

20. 什么是组件?

组件本质上是 Vue 实例,它们封装模板、逻辑和可选的本地响应性数据属性,能够提供可重新使用的自定义构建元素。可重用性是构建组件的核心。

使用单文件组件构建应用程序时,组件在扩展名为 .vue 的文件中定义。单文件组件包含三个部分:模板部分定义了该组件的 HTML 布局;脚本部分定义了数据、属性和逻辑单元(如方法)并将内容导出为 Vue 组件;还有一个样式部分,用于定义组件的样式表。单文件组件使用 Webpack 等模块捆绑器进行编译。

21. 什么是生命周期hook?列出一些生命周期hook。

Vue 实例(组件)从其初始化到销毁和删除都经历生命周期。在整个过程中,Vue 允许开发人员运行自定义函数的几个阶段。这些函数称为生命周期 hook。以下是一些生命周期 hook 的列表:

  • created

  • mounted

  • updated

  • destroyed

22. 什么是插槽(slot)?

插槽允许你定义可以封装和接受子 DOM 元素的元素。组件模板中的 <slot> </ slot> 元素作为通过组件标签捕获的所有DOM元素的出口。这是一个例子:

Post.vue |实现插槽的组件

1<template>
2 <div class="hello">
3   <h3 class="title">{{title}}</h3>
4   <div class="content">
5     <slot></slot>
6   </div>
7 </div>
8</template>

App.vue | 使用Post组件的App组件

1<template>
2 <div id="app">
3   <Post title="Hello from Vue!">
4Vue 是用于构建用户界面的渐进框架。与其他框架不同,Vue从头开始设计以逐渐采用。核心库仅集中在视图层,并且很容易与其他库或现有项目集成。另一方面,当与现代工具和支持库结合使用时,Vue也完全能够为复杂的单页应用程序提供支持。
5   </Post>
6 </div>
7</template>

在上面的示例中,斜体文本显示在 Post 组件中标有 <slot> 元素的区域内。

23. 什么是观察者?

观察者允许我们观察更改的特定属性,并执行定义为函数的自定义操作。尽管它们的用例与计算的属性相交叉,但是当某些数据属性发生改变时,有时需要观察者执行自定义操作或运行代价昂贵的操作。

24. 如何从子组件发出自定义事件?

可以用 $emit(''event-name'', eventPayload)发出自定义事件。然后可以像其他事件一样,用 v-on 指令在父组件上拦截。

25. 开发人员经常使用字母 “vm” 作为变量名来声明根 Vue 实例。例如 const vm = new Vue()。在这种情况下,“vm”指的是什么?

虽然这不是约定,但是开发人员经常使用变量名称 ''vm'' 来命名根 Vue 实例,该变量名称代表 ''ViewModel'',因为 Vue 本质上负责视图层,并且部分受到了 MVVM 模式的启发(Model-View-View-Model)。但是,根本没有必要将根实例命名为 “vm”。


 

下面夹杂一些私货:也许你和高薪之间只差这一张图

2019年京程一灯课程体系上新,这是我们第一次将全部课程列表对外开放。

愿你有个好前程,愿你月薪30K。我们是认真的 !


在公众号内回复“体系”查看高清大图

长按二维码,加大鹏老师微信好友

拉你加入前端技术交流群

唠一唠怎样才能拿高薪


 往期精选 

  • BootstrapVue 入门

  • JavaScript的工作原理:引擎、运行时和调用堆栈

  • 用 TypeScript 开发 Node.js 程序

  • 快速上手最新的 Vue CLI 3

  • JavaScript 程序员可以从C ++中学到些什么

  • 在同一基准下对前端框架进行比较

  • Edge 拥抱 Chromium 对前端工程师意味着什么?

  • 使你的 JavaScript 代码简单易读

  • Node.js多线程完全指南

  • deno如何偿还Node.js的十大技术债

  • 实战!半小时写一个脑力小游戏

  • CSS Flexbox 可视化手册

  • 世界顶级公司的前端面试都问些什么

  • V8引擎内部机制及优化代码的5个技巧

小手一抖,资料全有。长按二维码关注前端先锋,阅读更多技术文章和业界动态。


本文分享自微信公众号 - 前端先锋(jingchengyideng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

7 个Web开发工程师面试题和回答策略 [每日前端夜话0x34]

7 个Web开发工程师面试题和回答策略 [每日前端夜话0x34]

每日前端夜话0x34

每日前端夜话,陪你聊前端。

每天晚上18:00准时推送。

正文共:2385 字 1 图

预计阅读时间: 7 分钟

翻译:疯狂的技术宅
原文:https://www.indeed.com/hire/interview-questions/web-developer

不管你是面试官还是求职者,里面的思路都能让你获益匪浅。

目录

  • Web开发人员的职责是什么?

  • 是什么引发了你对Web开发的兴趣?

  • 什么是W3C,它为什么很重要?

  • 解释如何优化和减少Web应用的加载时间。

  • HTTP/2 和 HTTP 1.1 有什么区别?

  • 你熟悉哪种编程语言?

  • 你怎样平衡客户的苛刻要求?

Web开发人员的职责是什么?

解析:

Web工程师应该充分了解自己的角色,以及怎样为Web设计和开发做出贡献。这个问题能帮助面试官了解求职者打算怎样配合团队,以及他们是否知道自己要做些什么。

面试官想知道什么:

  • 清楚地了解Web开发过程

  • 他们强调那些职责

  • 他们打算怎样发挥自己的能力

参考答案:

Web工程师负责设计、开发、增强、测试和部署Web应用,其最终目标是创建引人入胜而且用户友好的站点布局和功能。开发人员负责收集并定义需求、维护网站、排除故障并修复错误,遵循最佳开发实践并与其他团队协作。

是什么引发了你对Web开发的兴趣?

解析:

求职者是否很早就成为了Web开发人员?他们是自学成才吗?了解候求职者选择这个方向的原因有助于确定他们对该职业的热情和信心。

面试官想知道什么:

  • 热情

  • 动机

  • 经验

参考答案:

我以前的工作是营销协调员,我经常使用在线工具来制作电子邮件广告。后来我找到了拖放功能的bug,并发现如果我直接编辑HTML,可以很灵活的实现我想要的外观。这时我开始着迷于Web开发人员具有想象力、艺术性和技术性的能力,同时想开发出一种对他人有帮助的产品。

什么是W3C,它为什么很重要?

解析:

Web开发人员应对其生成的内容负责,要确保所有用户都可以访问,并遵循W3C标准。这个问题将告诉你求职者是否具 W3C 的知识并在工作中遵循它们。

面试官想知道什么:

  • 基本知识

  • 关心标准

  • 关于他们如何遵守标准的细节

参考答案:

W3C 的意思是 World Wide Consortium,它是一个专注于开发和标准化 Web 的国际社区。作为Web开发人员,强制执行这些标准可确保所有浏览器都能访问Web内容,并优化用户体验。例如:使用符合 W3C 标准的 CSS 和 XML 可以使每个网站的功能相似,也可以改善搜索引擎优化。

解释如何优化和减少Web应用的加载时间。

解析:

几乎一半的用户希望在两秒钟内加载网页。提出此问题以了解求职者是否了解页面加载时间对用户体验的影响,以及Web开发人员应如何优化加载时间。

面试官想知道什么:

  • 他们对优化Web应用的重视程度

  • 了解可用于分析网站速度的工具

  • 他们具有优化能力的证据

参考答案:

尽管有很多技术手段能减少加载时间,但我始终依赖优化图像、启用浏览器缓存和最小化HTTP 请求。我评估网站速度的首选工具是 Google PageSpeed Insights。我曾经通过 soley 启用浏览器缓存,成功地将页面加载时间从 2.1 秒减少到 0.7 秒。

HTTP/2 和 HTTP 1.1 有什么区别?

解析:

是否了解并使用过 HTTP/2 ,能够体现求职者的知识水平,让你了解他们是否能够跟上技术的发展。

面试官想知道什么:

  • 整体 HTTP 知识

  • 能够回忆起具体细节

  • 洞察他们的技术水平

参考答案:

HTTP/2 旨在提高 Web 应用的性能,可以减少加载时间并改善浏览器与服务器之间的通信,并且能够使应用更简单、快速。我非常支持使用 HTTP/2,因为我曾经分析过相关数据,并知道了 HTTP/2 是如何将页面加载时间减少20%的。

你熟悉哪种编程语言?

解析:

HTML,CSS,SQL,PHP,Ruby,Python 和 JavaScript 是 Web 工程师应该能够轻松驾驭的常见编程语言。这个问题能帮助面试官评估求职者的经验、偏好、优势和劣势。

面试官想知道什么:

  • 熟悉的编码语言

  • 对特定语言的偏好程度

  • 是否适合岗位和公司

参考答案:

我精通 HTML、CSS 和 PHP,并且 SQL 和 JavaScript的水平也不错。我打算学习 Python,最近正在研究适合自己的Python课程,以便在空闲时间学习。

你怎样平衡客户的苛刻要求?

解析:

Web 开发工程师可能面临意想不到的挑战,包括缩短开发周期和面对过于雄心勃勃的客户。清楚地了解求职者如何处理这种情况,将有助于面试官了解他们做事的优先级和思考过程。

面试官想知道什么:

  • 在压力下的表现

  • 沟通技巧

  • 致力于发布高品质的产品

参考答案:

在我面对苛刻的需求时,会想办法充分了解对方的真正要求,优先处理自己的任务并与客户保持开放的沟通渠道。我很难容忍Bug的产生,也不赞成用一些取巧的手段破坏最终的产品形态,不过让客户满意是一个高度优先的选项。我会随时向客户通报我的进展并高效地完成任务。

求分享

如果你觉得这篇文章对你有帮助,请点击右下角的 “好看” 并分享给小伙伴们↘️↘️↘️

下面夹杂一些私货:也许你和高薪之间只差这一张图

2019年京程一灯课程体系上新,这是我们第一次将全部课程列表对外开放。

愿你有个好前程,愿你月薪30K。我们是认真的 !


在公众号内回复“体系”查看高清大图

在公众号内回复“体系”查看高清大图

长按二维码,加菲菲老师微信好友

拉你加入技术交流群

唠一唠怎样才能拿高薪



往期精选文章
CSS粘性定位是怎样工作的
CSS Flexbox 可视化手册
2018年JavaScript状态调查

世界顶级公司的前端面试都问些什么

混合内容下的浏览器行为

12个令人惊奇的CSS实验项目

实战!半小时写一个脑力小游戏

JavaScript的工作原理:引擎、运行时和调用堆栈

使用虚拟dom和JavaScript构建完全响应式的UI框架
V8引擎内部机制及优化代码的5个技巧


小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。


本文分享自微信公众号 - 前端先锋(jingchengyideng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

今天关于7 个开放式 CSS 面试题及回答策略 [每日前端夜话0x2E]前端面试开放性问题的介绍到此结束,谢谢您的阅读,有关13个帮你提高开发效率的现代CSS框架[每日前端夜话0x67]、15个 Vue.js 高级面试题[每日前端夜话0xF2]、23 个初级 Vue.js 面试题[每日前端夜话0xF0]、7 个Web开发工程师面试题和回答策略 [每日前端夜话0x34]等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇前端网页学习(css部分)(前端 网页)

下一篇简约计算器效果 html+css(简易计算器html)