2024年前端最新Vue3+ElementPlus 根据路由 自动创建二级菜单,2024年最新96道前端面试题

总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

meta: {

isShow: true,

title: ‘H币’,

icon: ‘el-icon-money’

},

component: () => import(‘…/views/Wallet/Hcoin.vue’)

},

{

path: ‘/Coupon’,

name: ‘Coupon’,

meta: {

isShow: true,

title: ‘优惠券’,

icon: ‘el-icon-tickets’

},

component: () => import(‘…/views/Wallet/Coupon.vue’)

},

{

path: ‘/MyWallet’,

name: ‘MyWallet’,

meta: {

isShow: true,

title: ‘钱包’,

icon: ‘el-icon-coin’

},

component: () => import(‘…/views/Wallet/MyWallet.vue’)

}

]

},

{

path: ‘/NeiRongChuangzuo’,

name: ‘NeiRongChuangzuo’,

meta: {

isShow: true,

title: ‘内容创作’,

icon: ‘el-icon-document’

},

component: Layout,

children:[

{

path: ‘/PublishBlog’,

name: ‘PublishBlog’,

meta: {

isShow: true,

title: ‘发布博客’,

icon: ‘el-icon-folder-add’

},

component: () => import(‘…/views/Produce/PublishBlog.vue’)

},

{

path: ‘/PublishQuestion’,

name: ‘PublishQuestion’,

meta: {

isShow: true,

title: ‘发布问题’,

icon: ‘el-icon-question’

},

component: () => import(‘…/views/Produce/PublishQuestion.vue’)

},

{

path: ‘/UploadResource’,

name: ‘UploadResource’,

meta: {

isShow: true,

title: ‘上传资源’,

icon: ‘el-icon-house’

},

component: () => import(‘…/views/Produce/UploadResource.vue’)

},

{

path: ‘/UploadVideo’,

name: ‘UploadVideo’,

meta: {

isShow: true,

title: ‘上传视频’,

icon: ‘el-icon-video-camera’

},

component: () => import(‘…/views/Produce/UploadVideo.vue’)

}

]

},

{

path: ‘/NeiRongGuanLi’,

name: ‘NeiRongGuanLi’,

meta: {

isShow: true,

title: ‘内容管理’,

icon: ‘el-icon-date’

},

component: Layout,

children:[

{

path: ‘/BlogManage’,

name: ‘BlogManage’,

meta: {

isShow: true,

title: ‘博客管理’,

icon: ‘el-icon-document-copy’

},

component: () => import(‘…/views/Manage/BlogManage.vue’)

},

{

path: ‘/CategoryManage’,

name: ‘CategoryManage’,

meta: {

isShow: true,

title: ‘类别管理’,

icon: ‘el-icon-notebook-2’

},

component: () => import(‘…/views/Manage/CategoryManage.vue’)

},

{

path: ‘/CommentManage’,

name: ‘CommentManage’,

meta: {

isShow: true,

title: ‘评论管理’,

icon: ‘el-icon-chat-line-square’

},

component: () => import(‘…/views/Manage/CommentManage.vue’)

},

{

path: ‘/QuestionManage’,

name: ‘QuestionManage’,

meta: {

isShow: true,

title: ‘问答管理’,

icon: ‘el-icon-microphone’

},

component: () => import(‘…/views/Manage/QuestionManage.vue’)

},

{

path: ‘/ResourceManage’,

name: ‘ResourceManage’,

meta: {

isShow: true,

title: ‘资源管理’,

icon: ‘el-icon-takeaway-box’

},

component: () => import(‘…/views/Manage/ResourceManage.vue’)

},

{

path: ‘/SubscribeManage’,

name: ‘SubscribeManage’,

meta: {

isShow: true,

title: ‘订阅管理’,

icon: ‘el-icon-present’

},

component: () => import(‘…/views/Manage/SubscribeManage.vue’)

},

{

path: ‘/VidoManage’,

name: ‘VidoManage’,

meta: {

isShow: true,

title: ‘视频管理’,

icon: ‘el-icon-camera’

},

component: () => import(‘…/views/Manage/VidoManage.vue’)

}

]

},

{

path: ‘/ShuJuTongJi’,

name: ‘ShuJuTongJi’,

meta: {

isShow: true,

title: ‘数据统计’,

icon: ‘el-icon-view’

},

component: Layout,

children:[

{

path: ‘/BlogData’,

name: ‘BlogData’,

meta: {

isShow: true,

title: ‘博客数据’,

icon: ‘el-icon-data-line’

},

component: () => import(‘…/views/Statistics/BlogData.vue’)

},

{

path: ‘/DownloadData’,

name: ‘DownloadData’,

meta: {

isShow: true,

title: ‘下载数据’,

icon: ‘el-icon-sold-out’

},

component: () => import(‘…/views/Statistics/DownloadData.vue’)

},

{

path: ‘/EarningsData’,

name: ‘EarningsData’,

meta: {

isShow: true,

title: ‘收益数据’,

icon: ‘el-icon-money’

},

component: () => import(‘…/views/Statistics/EarningsData.vue’)

},

{

path: ‘/FansData’,

name: ‘FansData’,

meta: {

isShow: true,

title: ‘粉丝数据’,

icon: ‘el-icon-school’

},

component: () => import(‘…/views/Statistics/FansData.vue’)

},

{

path: ‘/TopSearchEntry’,

name: ‘TopSearchEntry’,

meta: {

isShow: true,

title: ‘热搜词条’,

icon: ‘el-icon-pie-chart’

},

component: () => import(‘…/views/Statistics/TopSearchEntry.vue’)

},

{

path: ‘/VisitedReport’,

name: ‘VisitedReport’,

meta: {

isShow: true,

title: ‘受访报告’,

icon: ‘el-icon-mobile’

},

component: () => import(‘…/views/Statistics/VisitedReport.vue’)

}

]

},

{

path: ‘/GongJu’,

name: ‘GongJu’,

meta: {

isShow: true,

title: ‘工具’,

icon: ‘el-icon-s-tools’

},

component: Layout,

children:[

{

path: ‘/BlogMove’,

name: ‘BlogMove’,

meta: {

isShow: true,

title: ‘博客搬家’,

icon: ‘el-icon-s-promotion’

},

component: () => import(‘…/views/Tools/BlogMove.vue’)

},

{

path: ‘/BlogSetting’,

name: ‘BlogSetting’,

meta: {

isShow: true,

title: ‘博客设置’,

icon: ‘el-icon-set-up’

},

component: () => import(‘…/views/Tools/BlogSetting.vue’)

},

{

path: ‘/FansServe’,

name: ‘FansServe’,

meta: {

isShow: true,

title: ‘粉丝服务’,

icon: ‘el-icon-service’

},

component: () => import(‘…/views/Tools/FansServe.vue’)

}

]

},

{

path: ‘/Order’,

name: ‘Order’,

meta: {

isShow: false

},

component: Layout,

children: [

{

path: ‘/Order’,

component: () => import(‘…/views/MyOrder.vue’),

meta: {

title: ‘订单’,

icon: ‘el-icon-s-order’

}

}

]

}

]

const router = createRouter({

history: createWebHashHistory(),

routes

})

export default router

页面 Layout.vue


<el-menu

:router=“true”

:collapse=“isCollapse”

class=“el-menu-vertical-demo”

v-for=“item in menuItems” :route=“item.path” :key=“item.name” :index=“item.name”>

JavaScript

  • js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

  • 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)

  • Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?

  • JS常见的dom操作api

  • 解释一下事件冒泡和事件捕获

  • 事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?

  • 对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?

  • this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?

  • call,apply,bind

  • 显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链

  • 创建对象的多种方式

  • 实现继承的多种方式和优缺点

  • new 一个对象具体做了什么

  • 手写Ajax,XMLHttpRequest

  • 变量提升

  • 举例说明一个匿名函数的典型用例

  • 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?

  • attribute和property的区别

  • document load和document DOMContentLoaded两个事件的区别

  • JS代码调试

  • 开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3是一种流行的JavaScript框架,用于构建用户界面。它具有响应式和组件化的特性,使得开发者可以更轻松地构建交互式的Web应用程序。 Element Plus是一个基于Vue 3的UI组件库,提供了丰富的可复用组件,可以帮助开发者快速构建漂亮的用户界面。 动态路由是指根据用户的操作或者其他条件,在运行时动态地添加、修改或删除路由。在Vue 3中,可以使用Vue Router来实现动态路由。 下面是一个简单的示例,演示如何在Vue 3和Element Plus中实现动态路由: 1. 首先,安装Vue Router和Element Plus: ```bash npm install vue-router@next element-plus ``` 2. 在Vue项目的入口文件(通常是main.js)中,引入Vue Router和Element Plus,并创建一个路由实例: ```javascript import { createApp } from 'vue' import { createRouter, createWebHistory } from 'vue-router' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import App from './App.vue' const router = createRouter({ history: createWebHistory(), routes: [] }) const app = createApp(App) app.use(router) app.use(ElementPlus) app.mount('#app') ``` 3. 在路由实例中,可以使用`router.addRoute()`方法来动态添加路由。例如,可以在某个事件触发时添加一个新的路由: ```javascript router.addRoute({ path: '/dynamic', component: () => import('./views/Dynamic.vue') }) ``` 4. 在组件中,可以使用`<router-link>`和`<router-view>`来实现路由导航和路由渲染。例如,在App.vue组件中,可以添加一个动态路由链接: ```html <template> <div> <router-link to="/dynamic">Dynamic Route</router-link> <router-view></router-view> </div> </template> ``` 这样,当用户点击"Dynamic Route"链接时,将会渲染Dynamic.vue组件。 这只是一个简单的示例,实际的动态路由可能涉及更复杂的逻辑和配置。你可以根据自己的需求进行进一步的定制和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值