随笔分类 - 十、前端面试 / 前端面试集合
摘要:前端项目开发流程通常包括以下几个步骤: 1. 需求分析和规划:与项目团队一起明确项目的需求和目标,确定项目的功能和设计要求。 2. UI/UX设计:根据需求分析和规划的结果,进行用户界面和用户体验设计。这包括设计页面布局、色彩搭配、图标等。 3. 前端开发:根据UI/UX设计,使用HTML、CSS和
阅读全文
摘要:①建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑 ②准备好组件的数据输入。即分析好逻辑,定好props里的数据、类型 ③准备好组件的数据输出。即根据组件逻辑,做好要暴露出来的方法 ④封装完毕了,直接调用即可
阅读全文
摘要:1、了解搜索引擎如何抓取网页和如何索引网页。 2、Meta标签优化。 3、如何选取关键词并在网页中放置关键词。 4、了解主要的搜索引擎。 5、主要的互联网目录 6、按点击付费的搜索引擎。 7、搜索引擎登录。 8、链接交换和链接广泛度(Link Popularity)。 9、标签的合理使用:标签的语义
阅读全文
摘要:一、登录权限控制 实现哪些页面能被未登录的用户访问,哪些页面只有用户登录后才能被访问 1、实现: 在路由对象中以添加meta的方式去实现登录页面权限控制 需要登录才能显示的页面设置meta.need_login属性 export const routes = [ { path: '/login',
阅读全文
摘要:1、模块化【代码逻辑角度划分】 用于保证每个模块的只能单一 比如药品管理,就是一个模块,包含了列 表,添加,修改,删除; 2、组件化【UI界面角度划分】 页面上的每个独立区域,都可作为一个组件,便于组件复用 3、区别 划分角度不同 4、为什么要使用模块化和组件化 开发和调试的效率更高 可维护性强 避
阅读全文
摘要:XSS:Cross Site Scripting【跨站脚本攻击】 一、概念 黑客向HTML文件或者DOM中添加恶意脚本 从而在用户浏览页面时利用插入的恶意代码,对用户实施攻击 二、分类 存储型XSS攻击 黑客向存在漏洞的服务器插入一段恶意JavaScript代码 当用户向服务器请求资源的时候就会请求
阅读全文
摘要:1. 首先应该考虑使用https协议,因为http协议是不安全的,一般来说购买服务器的时候厂商都会送 免费的https 的ssl证书,只需要在nginx配置就可以了。 2. 接口应该开启加密,分为对称加密和非对称加密 3. 对称加密:客户端和服务端使用同一个秘钥 4. 非对称加密: 5. 数据验签,
阅读全文
摘要:1、401状态码的含义 axios向服务器端发送请求时,服务器端有些api接口要求传递token,token失效或没有传递,就会报401错误 服务端要求传递token信息,而实际发送请求时没有传递。 发送请求时有传递token到达服务器端,但由于时间比较久,这个token在服务器中已经过期了(服务器
阅读全文
摘要:有的系统为了安全性会要求用户多长时间不操作的时候退出到登录页面 实现这个功能的时候是 我们是由前端实现的,接下来看一下我们是怎么实现的 1、实现的思路: 是记录用户操作的最后一次时间, 还有再次操作的时间, 后面的时间戳减去前面一次的时间戳,如果换算出来的时间内大于三十分钟,则退出到登录页面即可 2
阅读全文
摘要:一、前端缓存分类【http缓存|浏览器缓存】 1、http缓存分类:强缓存 协商缓存 都是服务端设置 HTTP Header 来实现的 (1)强缓存 不需要发送请求到服务端,直接读取浏览器本地缓存 // 在 Chrome 的 Network 中显示的 HTTP 状态码是 200 在 Chrome 中
阅读全文
摘要:1、创建Storage类 定义 对应的get set remove clear api 通过set函数添加过期时间参数来实现过期时间的记录 设置存储时存储当前值和过期时间 get取值的时候先验证当前值是否存在 以及时间是否大于过期时间 如果存在且不大于过期时间既可返回对应的值否则返回空 class
阅读全文
摘要://1. function Person1(name,age){ this.name='zhangsan' this.age=20 this.run = function(){ alert('yundong') } } Person.prototype.sex = '男' Person.protot
阅读全文
摘要:1. ts函数定义 // es5函数声明 function run3(){ return 'run' } // es5匿名函数 var run4 = function(){ return 'run' } // ts函数声明 function run5():string{ return 'run' }
阅读全文
摘要:1.js有的类型 boolean类型、number类型、string类型、array类型、undefined、null 2.ts多出的类型 tuple类型(元组类型)、enum类型(枚举类型)、any类型(任意类型) 3.特别的类型 void类型(没有任何类型)表示定义方法没有返回值 never类型
阅读全文
摘要:一、使用Array.apply let arr= Array.apply(null, { length: 10 }).map((item,index)=>{ return index; }); console.log(arr); //(10) [0, 1, 2, 3, 4, 5, 6, 7, 8,
阅读全文
摘要:1、思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中 function unique(arr) { let newArr = [arr[0]]; for (let i = 1; i < arr.length; i++) { let repea
阅读全文
摘要:触发钩子的完整顺序: 将路由导航、keep-alive、和组件生命周期钩子结合起来的,触发顺序,假设是从a组件离开,第一次进入b组件: 1. beforeRouteLeave:路由组件的组件离开路由前钩子,可取消路由离开。 2. beforeEach: 路由全局前置守卫,可用于登录验证、全局路由lo
阅读全文
摘要:这个时候可以用this. set()这个方法了 methods:{ btn(){ Vue.set(
阅读全文
摘要:代码层面的优化 v-if 和 v-show 区分使用场景 computed 和 watch 区分使用场景 v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 长列表性能优化 事件的销毁 图片资源懒加载 路由懒加载 第三方插件的按需引入 优化无限列表性能 服务端渲染 SSR or
阅读全文
摘要:因为JavaScript的特性所导致,在component中,data必须是以函数的形式存在,不可以是对象。 简单来说,就是为了保证组件的独立性和可复用性,如果 data 是个函数的话,每复用一次组件就会返回新的 data,类似于给每个组件实例创建一个私有的数据空间,保护各自的数据互不影响 若单纯的
阅读全文