总结
为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。
内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
前端面试题汇总
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
JavaScript
性能
linux
可悲的是,答案是否定的。据统计,已经证明 ,53%的用户不会选择花时间在这些应用程序上,需要超过3秒加载。构建具有优化性能的应用程序将平滑用户体验并逐步增加用户交互。
不幸的是,大多数开发人员不了解性能的重要性,最终构建了具有性能问题的广泛应用。我想你不想成为这些开发人员之一。开发应用程序具有挑战性,但开发优化的性能应用程序更具挑战性。为了减轻您的挑战,我提出了这个关于vuejs性能优化的博客,这将有助于您了解如何优化您的Vue.js应用程序的结构,以及您如何管理vue js性能。
介绍
VueJS 是开发网站最受欢迎、最稳定的 JavaScript 框架,但与其他框架一样,如果您忽略它,性能就会受到影响。
如果你正在寻找肯定拍摄Vue js性能优化提示或只是想知道vue最佳实践,为您的大规模应用程序,你选择了正确的博客。无需多方讨论,让我们详细讨论如何优化 Vue js 应用程序的性能。
首先了解 Vue js 应用架构至关重要。通过了解它的重要性,我们可以意识到它是多么重要,我们将开始更严肃地对待它。因此,让我们来看看为什么需要优化您的大规模应用程序。请记住,任何应用程序的优化是必不可少的,但正如本博客所关注的那样,我们将讨论 vue 性能优化。
为什么我们需要 Vue JS 性能优化?
任何程序员都不希望,即使在编码了数千行之后,用户也不想花时间在应用程序上,因为执行用户操作需要花费时间。
世界各地的产品所有者为用户开发产品,这些用户主要关心的是其流畅的互动。如果程序员对 Vue js 的性能、速度和效率不满意,则与最终用户在 Vue JS 应用架构上投入了多少精力无关。
因此,是的,这就是为什么它成为强制性标准,以优化性能,最终将满足最终用户的需求。
Vue 性能不佳背后的主要原因
让我们看看 Vue js 是如何工作的, 以及 Vue js 性能不佳背后的重要原因。
降低 Vue 性能的原因取决于您的 Vue js 应用结构。例如,Vue jS 单页应用程序 (SAS) 中性能不佳的重要原因之一可能与处理服务器侧渲染(SSR) 的 VueJS 项目不同。
任何开发人员都能考虑应用程序是 SPA 还是具有 SSR 的主要原因是捆绑大小。捆绑尺寸越大,Vue js 性能越慢。因此,我们可以得出结论,捆绑大小与应用程序性能成反比。
Vue js 大应用程序背后的一些常见原因 -
- 不明智地使用第三方库
- 忽略代码分割和惰性加载
- 对 API 请求的不必要的点击
- 未正确构建 JS 和 CSS 文件
在讨论如何减少捆绑大小之前,让我们看看如何检查 Vue js 和 Vue js 企业应用程序的捆绑大小的大小。
如何检查您的 VueJS 应用的大小?
我将向您展示两种方法来检查 Vue js 应用程序的大小。
1. 生成报告
生成报告可直观地描述所使用的各种包的大小。此外,您可以找出如何替换任何比预期空间更大的包。您可以使用命令生成报告生成应用程序报告。请记住,此命令将构建一个应用程序的报告,其中安装了webpack-bundle-analyzer。
运行上述命令后,打开包.json 文件并添加此内容
"build-report": "vue-cli-service build --report"
然后执行此 。
npm run build-report
执行所有这些之后,将在dist文件夹中创建一个名为 "报告.html的文件。
打开该文件时,您将观察此
2. 运行命令和npm 运行生成
你会看到类似这样的图像。
现在,在找到捆绑包大小后,斗争是减少它。无需进一步讨论,让我们继续探索 Vue .js应用性能优化的方法。
如何优化 Vue js 应用程序的性能?
下面是一些 VueJS 性能提示,您可以实现以优化 Vue .js应用程序的性能。
1. 在 Vue js 中懒加载
根据名称,Vue js 中的懒加载是懒加载应用程序中的模块的方法,即当用户实际需要该模块时。大多数时候,每当用户访问网站时,无需加载 JavaScript 捆绑包中的所有模块。
有一些组件具有模式和工具尖,可在需要时加载。如果您正在处理两个或三个模态或工具尖,则看不到结果,但是,假设您有一个具有这么多模式和工具尖的广泛 Vue 应用程序;一次加载它们会降低您的性能。
它根本不值得每次页面加载时加载整个捆绑包。因此,它加载有助于您划分捆绑包并在使用时加载它们。这样,它通过不下载和解析不必要的代码来节省时间。
要检查网站中使用的实际 JavaScript 代码
- Click devtools
- cmd + shift + p
- Type coverage
- Click record
带有红色高光的网格不使用,可以懒加载。通过利用懒加载,您可以将捆绑大小减少 60%。
这是关于什么和为什么我们应该装组件和模块懒加载地大规模应用:让我们来探讨如何执行它。
我们可以使用 Webpack 动态导入而不是常规导入来分离必须懒加载的模块。
这就是您导入 JavaScript 文件时的输入方式,对吗?
// demo.js
const Demo = {
testDemo: function () {
console.log("This is just a demo!")
}
}
export default Demo
// app.js
import Demo from './demo.js'
Demo.testDemo()
它将添加文件演示.js作为应用程序的节点.js在其依赖图中,并通过以这种方式导入它将其捆绑在一起。因此,每当捆绑包被加载时,演示.js将加载,无论其需要如何。
但是,如果我们要加载演示.js仅作为某些用户操作响应。在这种情况下,我们将实施动态导入,告诉应用程序下载此模块仅在需要时。
以下是对上述代码的修改,用于执行用于测试 Vue .js 应用程序的动态导入
// app.js
const getDemo = () => import('./demo.js')
// later when some user action tasks place as hitting the route
getDemo()
.then({ testDemo } => testDemo())
因此,您可以注意到,我已宣布一个功能,该功能确实返回了导入功能, 而不是直接导入演示模块。这就是我们所说的动态导入,因此 Webpack 会知道它必须将此模块保留在单独的文件中。功能得到Demo(), 其中包含动态导入,返回承诺。我们基本上切断节点(这里演示)从依赖图,然后下载它,当需要时(如路线更改或点击)。请记住,演示中导入的模块 .js也将从捆绑包中分离出来。
Vue js 中的懒加载是减少捆绑尺寸和优化性能的最佳做法之一。养成一种习惯,即知道您不需要哪些模块,除非有明确的用户操作,并懒洋洋地下载它们以获得更好的性能。
2. 基于路线的代码拆分
假设您必须开发一个带有两个网页的小型 VueJS 网站 - 仪表板和联系人。即使对于这两页,您也需要在项目中实现 vue 路由器。
您的路由文件可能看起来像这样 -
// routing.js
import Dashboard from './Dashboard.vue'
import Contact from './Contact.vue'
const routes = [
{ path: '/', component: Dashboard }
{ path: '/contact, component: Contact }
]
由于采用了这种标准的编码方法,即使用户访问另一个页面(我们既不想下载Dashboard也不想下载Contact),也会下载组件——Dashboard和Contact(使用lodash)。 这是因为我们在同一个bundle中有两个路由。 你可能会想,多下载两个页面有什么大不了的。 但是,当您在处理具有大量包的大型应用程序时,这一点很重要。
为了避免不必要的组件下载,我们将使用分割代码。
为此,我们将为不同的路径使用不同的包,我们遵循动态导入的技术。
您现在将通过动态路由,而不是直接导入组件。让我们看看如何实现这一点。
// routing.js
const routes = [
{ path: '/', component: () => import('./Dashboard.vue') }
{ path: '/contact, component: () => import('./Contact.vue') }
]
通过遵循此实践,您可以将捆绑包大小缩小到其一半!但为此,您需要确定哪些组件可用于动态导入。相信我, 这样的vue js 练习将有助于你的应用程序更具执行力。
3.Vue js预加载组件
让我们继续深入研究Vue js预加载组件是一种在用户请求页面之前下载资源的技术。 例如,如果您确定大多数用户将从类别页面访问产品页面,则可以考虑预取产品页面。 您需要记住,只有在初始呈现之后才能进行预抓取。 预取的另一个好处是,它可以在不影响性能的情况下消除由于延迟加载而导致的不希望看到的结果。
对于它的实现,你只需要添加 <链接rel="预插"href=“url”/>标签。很简单,对吧?但是,在处理 Webpack 时,情况就不同了,Webpack 会根据模块的顺序生成捆绑名称。幸运的是,webpack包有magic comments,很容易预加载。magic comments是影响构建过程的注释。 我们需要使用- /* webpackPrefetch: true */来预取模块。 只是保持它在你的动态导入如下所示
components: {
ModalView: () => import(/* webpackPrefetch: true */ './ModalView.vue')
}
在执行代码时,Webpack 将搜索神奇的评论,并在头部分添加 <链接 rel="预插"url=“资源-url”/>。
< link rel="prefetch" href="path-to-chunk-with-modal-view" />
每当用户请求 ModalView 模块时,它就会被预先控制并立即访问。
4. 优化第三方库
当您检查捆绑包大小是多少,并惊讶于如果它越过理想数字时,它并不总是因为您的代码:很多时候,原因是加载的第三方库的使用。是的,我们都使用第三方库,而不知道它们对应用程序性能的影响。我们的代码可能是捆绑大小的一小部分。
您可以使用bundlephobia来了解不同的库如何影响性能。您只需要将Vuejs库名称添加到这个奇妙的网站,您就会获得许多与网站数据相关的知识。 例如,我已经使用了lodash库,这里是信息。
了解更多关于库及其对性能的影响不是很棒吗?
如果您想知道哪些Vue js 库对您的 VueJS 应用程序有更大的影响,那么您可以单击此处扫描您的软件包。除此之外,我已经明确了分析捆绑大小的各种方法。
最后
中年危机是真实存在的,即便有技术傍身,还是难免对自己的生存能力产生质疑和焦虑,这些年职业发展,一直在寻求消除焦虑的依靠。
-
技术要深入到什么程度?
-
做久了技术总要转型管理?
-
我能做什么,我想做什么?
-
一技之长,就是深耕你的专业技能,你的专业技术。(重点)
-
独立做事,当你的一技之长达到一定深度的时候,需要开始思考如何独立做事。(创业)
-
拥有事业,选择一份使命,带领团队实现它。(创业)
一技之长分五个层次
-
栈内技术 - 是指你的前端专业领域技术
-
栈外技术 - 是指栈内技术的上下游,领域外的相关专业知识
-
工程经验 - 是建设专业技术体系的“解决方案”
-
带人做事 - 是对团队协作能力的要求
-
业界发声 - 工作经验总结对外分享,与他人交流
永远不要放弃一技之长,它值得你长期
信仰持有
。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue 等等。