暂时未有相关云产品技术能力~
掘金平台优质作者,目前就职于猿辅导研发工程师岗位,擅长前端工程化技术
最近在研究前端模块化,大多数文章都提到了 AMD,关于 AMD 的模块标准(或者说规范)将的都很清楚,什么异步加载、保证正确顺序,对付八股很够,但是唯独没有关于 AMD 的实操工程,大多数是纸上谈
最近研究了一下 Vue 和 React 编译出来的版本文件,我发现 Vue 提供了 CommonJS|ES Module|ES Module browser|UMD 四种格式,而 React 提供 CommonJS|UMD 两个版本,对于 CommonJS|ES Module 对应的八股可以说是很多了,而里面夹杂的 UMD 又是什么东西呢?
之前的一篇 基于 Webpack 从 0 到 1 启动一个 React 项目 文章中有介绍的是如何从 0 到 1 配置 React 项目中的 JSX 转换,在查阅文档时有介绍到从本质,JSX 只是为
解决过 TypeScript 的项目大概都是从两个方向,Vue3 方向和 React Native 方向,而在 React Native 方向上我经常会遇到一个烦人的错误,这个问题的场景通常出现于 t
继 Webpack、Vite 等前端工具链系列的了解之后,又碰到了 Rollup,我之前对 Rollup 的了解仅停留在 Vite 打包时使用、组里的大佬使用 Rollup 写过一个静态官网页面,为了
#built-in 是 type-challenges 库中的一个 tag,里面一共包括了 7 个类型,其中前两个就是之前介绍过的 类型体操之实现 Pick 和 Omit 中的 Pick 和 Omit
之前深信服前端一面的时候,面试官问我会 TypeScript 吗?想到我之前说 Vue3 原理时顺便提了一口 Vue3 是基于 TypeScript 写的,我既然懂 Vue3 原理,那说不会一点 TypeScript 那实在是有点说不过去
继上一篇文章介绍了如何实现 XSS 攻击之后,后面留下了伏笔,我们应该如何去防御文章介绍的 XSS 各种攻击呢?废话少说,直接上车!
XSS 攻击理论知识学习完成的同学可以参考这篇一些攻击实现,理论背的再好还是要实践呀
目前的前端现代工程化中,npm 的生态已经成为密不可分的一环,而每个基于 npm 包的项目的 npm init 之后,都会有一个 package.json,在 npm install 之后又会有一个 package-lock.json,它们极为相似的名称让我很感兴趣,package-lock.json 究竟是何方神圣?毕竟平常我只修改 package.json
之前就有在上一次更文挑战中看到掘金博主介绍过 Web Components,而最近也是有一篇文章介绍已经有一个组件库 Quark Design 是基于 Web Components 实现,并且已经在生产环境中验证过了,所以这就有必要研究一下了
之前已经写了两篇关于 CSRF 的文章,其中昨天的一篇手把手教你实现一次 CSRF 攻击 留下了防御的悬念,而今天这篇就是教导如何防御 CSRF 攻击
之前写过一篇 CSRF 攻击文章,介绍了定义、触发方式、防御方式,但唯独没有给出一个实现方式,今天就借这篇文章重新写出一个实现方式
一般跨域听得比较多的方案是 Nginx 代理,CORS,而 JSONP 和 iframe 的跨域解决往往只在背八股文的时候出现,而且老是只给 JSONP 的实际操作手段,老是找不着 iframe 的实际操作,所以这篇文章就是介绍如何基于 iframe 解决跨域
如果不使用 Vite 官方提供的 template 选项,要如何从一个 Vite 依赖的情况下逐步配置启动个 React?如何实现 Webpack 的静态资源服务,如何实现基于 Webpack 的 loader 的 JSX 的自动转换?
之前写了了篇文章介绍了如何基于 Webpack 从 0 到 1 启动一个 Vue 项目,那么就很有必要介绍一下 Vue 的竞品 React 是如何基于 Webpack 从 0 到 1 启动 下面是这个
这几天一直在研究 Webpack 这些打包工具链,在研究项目启动的过程中,初步认识到平时开发时是通过 Webpack-dev-server 调用 Webpack 的打包能力结合静态资源服务器能力开发的
昨天写了一篇文章,是关于 Vite 的,基于 Vite 从 0 到 1 启动一个 Vue2 项目,文章后面留下了几个问题是关于模块寻址问题,举个 Vue 项目里比较常用的 Vue 模块导入例子 import Vue from "vue"; 为什么不用写相对地址和绝对地址就能够导出 Vue 呢?似乎也没有配置路径?也没有配置映射,那么究竟 from "vue"; 对应的究竟是那个路径呢?
本篇文章就是教学如何基于 vite 从 0 到 1 启动一个 Vue 项目,在传统启动中,如果你是刚开始接触 HTML/CSS/JavaScript 三件套开始接触的前端,那么你可能比较熟悉或者比较能接受的引入 Vue 的方式可能是使用 CDN 的方式
面试总是问 Webpack 怎么样?有什么用?有几个 loader,有几个 plugin,结果一去写业务,全都是上的 Vue CLI,create-react-app,启动配置什么的,前辈们都配好了,所以这篇文章就是教学如何基于 Webpack 从 0 到 1 启动一个 Vue 项目
当你想开源某个内部开发很久的项目或者有一些脚本想要上传到 github,但是这个项目的 git 版本管理中包含了你以前填入的数据库密码,而且是明文,这时候就非常麻烦,这种情况需要如何处理保证项目的 git 能够保证最小修改,尽可能的不去修改过多 commit?看如下操作
什么是自动化部署 我接触到的自动化部署概念最早是在 Vercel 上提供的,Vercel 可以提供和 github 上的某个库建立‘链接’,当你 commit 到 github 远程库时就可以自动部署,Vercel 会帮你完成操作
什么是 HTTPS?众所周知 HTTP 是明文传输,并没有加密措施,容易被人抓包分析内容,过去可以使用前后端约定俗成加密规则传输,但是到现在可以使用 HTTPS 避免这一步的操作,所以 H
这里的非常规指的是,不是使用 `Vue Cli` 这种工具包去创建的项目,或者创建了但是没有加上 `ESlint` 的配置,比如下面这个
client* clientWidth/clientHeight 返回的是元素的内部宽度,它的值只包含 content + padding,如果有滚动条,不包含滚动条 clientTop 返回的是上边
好的代码,注释肯定不能少,就目前而言基于 vue 的项目大部分都是使用的 vue2,vue2 相对于 ts 的支持没有那么完善,大部分包括我目前工作所在的团队,使用的 vue 版本都是采用 vue2
定义 requestAnimationFrame 帧动画,又叫 RAF,在 requestAnimationFrame 中执行的事件叫 RAF 回调 setInterval 引用 MDN 的定义 区别
栈内存与堆内存 对于 JS 不同类型的数据来说,基本数据类型(string/number/boolean/undefined/null)的值存储在栈内存中,引用数据类型(object)的值存储在堆内存
定义 跨站点请求伪造(Cross-Site Request Forgeries),在用户不知情的情况下,冒充用户发起请求, 完成一些违背用户意愿的事情,比如修改用户信息,删评论等(如果找到 XSS 漏
闭包指的是那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。- 《Javascript高级程序设计(第四版)》 注意:匿名函数不是闭包 一个函数和对其周围状态(lexical envi
XSS(cross site scripting)跨站脚本攻击,就是攻击者想尽一切办法将可以执行的代码注入到网页中。 为什么不叫 CSS 攻击? 因为在 XSS 出现的时候,CSS 在前端领域已经被广
题目链接: 341. 扁平化嵌套列表迭代器 前排提示,这是一道跟树有关的题目,而且是 N 叉树,关于 N 叉树的入门题目可以参考我之前的一篇文章,leetcode 之浅谈 N 叉树 题目 给你一个嵌套
机制 标记清除 JS 中最常见的垃圾回收方式是标记清除 标记清除的概念也好理解,从根部出发看是否能达到某个对象,如果能达到则认定这个对象还被需要,如果无法达到,则释放它,这个过程大致分为三步:
前端的面试有时候会问 KeepAlive,而 KeepAlive 中运用到了 LRU 缓存,是它的原理之一,LRU 在 leetcode 中也对应了 146. LRU 缓存这道题目
我们在浏览器中通信用的比较多的是 HTTP 和 HTTPS 两种协议,但是用 HTTPS 时浏览器总是会有一个小锁的标志,提醒我们这是安全链接,而 HTTP 它就会提醒我们这是不安全的链接,好家伙,只
题目链接:18. 四数之和 这个人已经靠 n 数之和水了好几篇文章了,已经不想再水了 我之前写过好几篇的 nSum 相关的文章,在我的个人主页里面搜索可以发现有三篇相关的文章,当然看的人不多,但是还是决定要把这个类型题写完,也就是今天的终章 `nSum`
题目链接: 1. 两数之和 上一篇文章我介绍一道非常多人熟悉的题目就是反转链表,最近反转链表的位置似乎有些松动,在某脉 APP 上形容面试官想要给你过面试的算法题逐渐从反转链表变成 twoSum,也许
之前的一篇文章讲了两种在 vue 项目中调试的方法,一个是在项目源码中手动加入断点(debugger), 然后利用 Chrome 调试,第二种是直接在 Chrome 中打断点调试,但是需要知道怎么找到
我觉得调试很多人应该都是做过的,以我为例,大一学 C 语言的时候我特喜欢调试,别人的做题做不出来我让他在 codeBlock 上调试一下就行了,其实这是因为那时候写的 C 语言就几行代码,文件结构简单
之前看`防抖`和`节流`的时候,看到短时间内大量的事件触发会引起浏览器卡死,浪费浏览器性能,那么为什么事件触发会引起阻塞页面的情况呢?引起页面阻塞的原因真的是因为事件触发太多了吗?
这篇是 vue-router matcher 系列的总结篇,这里提示一下 matcher 就是 vue-router 中的路由匹配器,负责路由的增删查,当我们进行路由跳转时,是通过 matcher 去匹配到正确路径,然后拿到 component(重定向除外)
之前的两篇文章讲了, vue-router 的 Matcher 对初始的 routes 进行了标准化(normalized)处理以及别名(alias)处理,但还有matcher 处理 route 的匹配
之前的文章讲了, vue-router 找到待渲染的 vue 组件时,对 route route 的处理过程,但是还有 route 的 alias(别名) 是如何操作没有解释,对于别名在 vue-ro
在之前的一篇文章中曾经说过,页面的切换其实就是一个找组件的过程,也就是 vue-router 里面的 Matcher, 看过 vue-router4 的源码后,发现 matcher 其实是非常重要的一
这两天看了一下后端给的接口文档,每一个都要求筛选,而且这个筛选还是多条件的,还是不能固定的,要求根据用户的输入然后筛选,我之前的实现大概是这样子,当用户想要筛选的时候就去检索条件,并输入相关的内容进行筛选
如果你现在用 PC 端浏览器看这篇文章,不妨打开控制台,cltr + c 一下去看下掘金图片的后缀/格式究竟是什么?
前端路由需要实现两个核心, 1. 修改 URL 而不引起页面刷新, 2. 检测 URL 的变化, 这两个核心取决于你采用的前端路由技术选择的方案, 即 hash 和 history, 当选择了技术后,
写路由相关的代码的时候,写完页面组件的相关的代码后,就可以直接一把梭哈 vue-router,但是 vue-router 是怎么实现它们间的切换的呢?
之前写了两篇文章,涉及到了页面访问整个过程的一些分析,比如页面生命周期的介绍,页面访问时渲染过程中 HTML、JS 的关系,前面两篇只是抓住了 JS,没有囊括 CSS,并且在复现上没
前几天面试官问我能不能讲一下 vue-router 两种模式,好家伙不就是 #/path 和 /path 这还用问?面试官浅笑一下,呵呵,讲得有点表面,深层的地方没有讲出来