最近组织了源码共读活动,大家一起学习源码,每周学习200行左右的源码,已进行到13期。于是搜寻各种值得我们学习,且代码行数不多的源码。
我们上一篇讲解了通过修改源码的方案,让protobufjs能正常运行在jsb环境上。这个方案适合将protobufjs源码直接放到项目中,而我们使用npm来管理三方库的方式,这种方案就显得不太优雅。
这个其实不用多说了,如今的前端项目哪里还有用不到打包工具的呢,而webpack又作为打包工具中的王者我们又有什么理由不去搞明白它呢。
本文最终实现的简易版 vite 可通过github 地址(https://github.com/levelyu/simple-vite)下载,代码实现地较为简单(不到 100 行)可运行后再看此文,阅读效果可能更佳~
在开发过程中,会经常用到 Node.js (https://nodejs.org/dist/latest-v16.x/docs/api) ,它利用 V8 提供的能力,拓展了 JS 的能力。而在 Node.js 中,我们可以使用 JS 中本来不存在的 path (https://github.com/nodejs/node/blob/v16.14.0/lib/path.js) 模块,为了我们更加熟悉的运用,让我们一起来了解一下吧~
你是不是在想,这需求俺根本不用koa、koa-router,原生的node模块就可以搞定。
Vite 的发布是不是意味着 webpack 的终结?当然不是, webpack 存在这么多年是解决了不少奇奇怪怪的问题而且也适合处理那些深度复杂的场景,这一点 Vite 肯定是还有些距离的,而且尤雨溪在前不久的直播中针对 Vite 做了解释,他说到 Vite 的设计初衷就是为了改善开发时的反馈速度,是改善体验而不是干掉 webpack 。
背景 前端渲染有很多框架,而且形式和内容在不断发生变化。这些演变的背后是设计模式的变化,而归根到底是功能划分逻辑的演变:MVC—>MVP—>MVVM(忽略最早混在一起的写法,那不称为模式)。近几年兴起的React、Vue、Angular等框架都属于MVVM模式,能帮我们实现界面渲染、事件绑定、路由分发等复杂功能。但在一些只需完成数据和模板简单渲染的场合,它们就显得笨重而且学习成本较高了。 例如,在美团外卖的开发实践中,前端经常从后端接口取得长串的数据,这些数据拥有相同的样式模板,前端需要将这些数据在同一个样
前一段时间我把webpack源码大概读了一遍,webpack 到4.x版本后,其源码已经比较庞大,对各种开发场景进行了高度抽象,阅读成本也愈发昂贵。
目前社区两大Vue+Electron的脚手架:electron-vue和vue-cli-plugin-electron-builder,
ejs项目大名鼎鼎,应该就不需要介绍了,主要收获就是得知了实现一个模板引擎的流程,ejs是将模板作为字符串逐个解析,遇到正常的html代码,就放进一个数组中去,遇到js代码则进行过滤器、包含等的处理,最后数组join成一个可以成为Function构造函数第二个参数的字符串,构造成构造函数之后就是调用返回最终的html字符串。以下是阅读源码的笔记,因为源码中遗憾有很多说明,所以笔记很少。
path.sep,是路径片段分隔符。它在 Windows 上是\,在 Unix 上是/。它用于指定文件(夹)的路径中。
和自动化构建工具(jenkins、travia)区别:自动化构建工具在服务端执行,无法覆盖本地操作且定制自动化的构建工具需要用到Java等后端语言,对前端不友好。
VSCode实现调试主要就是靠的编写lauch.json文件来实现。下面就来看看几种场景。
本文讲述了利用不安全的加密存储(Insecure_Cryptographic_Storage)漏洞和服务端反射型XSS漏洞,实现对麦当劳网站(McDonalds.com)注册用户的密码窃取,进一步测试,还可能获取到网站注册用户的更多信息。 POC-利用反射型XSS漏洞绕过AngularJS框架沙箱 麦当劳网站McDonalds.com设置有一个搜索页面,该页面存在XSS反射型漏洞,可以返回搜索参数值,假设搜索参数q为***********-test-reflected-test-***********
0、委婉的表白 Python 代码: import string l = string.ascii_letters s = [] s.append(l[34]) s.append(l[11]) s.append(l[14]) s.append(l[21]) s.append(l[4]) s.append(l[24]) s.append(l[14]) s.append(l[20]) s.insert(1, " ") s.insert(6, " ") string = "".join(s) print(str
源码结构: - /utils/ - actionTypes.js - isPlainObject.js 判断是否是简单对象 - warning.js 一些警告在控制台打印 - applyMiddleware.js - bindActionCreator.js - combineReducer.js - compose.js - index.js
七夕情人节来了,表白素材奉上,赶紧。。。还来的及!!! 委婉的表白 Python 代码: import stringl = string.ascii_letterss = []s.append(l[34])s.append(l[11])s.append(l[14])s.append(l[21])s.append(l[4])s.append(l[24])s.append(l[14])s.append(l[20])s.insert(1, " ")s.insert(6, " ")string = "".join
如果你有个框架作者的老板是种什么感觉?是的,我的老板就是框架作者!要说周会唯一开心的事儿莫过于他第一个汇报工作,他的汇报总是带着技术分享的,他总是说就是随便讲讲,你会发现他讲的都是思考,都是原理,都是源码,甚至会分析这么干的优劣,还会带着更好的实现思路。
前言 本篇主要是讲一些全家桶的优化与完善,基础功能上一篇已经讲得差不多了。直接开始: Source Maps 当javaScript抛出异常时,我们会很想知道它发生在哪个文件的哪一行。但是webpack 总是将文件输出为一个或多个bundle,我们对错误的追踪很不方便。Source maps试图解决这一个问题,我们只需要改变一下配置项即可。 在webpack.dev.config.js中加入: devtool:"inline-source-map" css编译 这里以less-loader为例,先安装 l
webpack 编译器(compiler)能够识别遵循 ES2015 模块语法、CommonJS 或 AMD 规范编写的模块。然而,一些第三方的库(library)可能会引用一些全局依赖(例如 jQuery 中的 $)。这些库也可能创建一些需要被导出的全局变量。这些“不符合规范的模块”就是 shimming 发挥作用的地方。 shimming 另外一个使用场景就是,当你希望 polyfill 浏览器功能以支持更多用户时。在这种情况下,你可能只想要将这些 polyfills 提供给到需要修补(patch)的浏览器(也就是实现按需加载)。
七夕快到了,表白素材赶紧先准备好。。。 0、委婉的表白 Python 代码: import string l = string.ascii_letters s = [] s.append(l[34]) s.append(l[11]) s.append(l[14]) s.append(l[21]) s.append(l[4]) s.append(l[24]) s.append(l[14]) s.append(l[20]) s.insert(1, " ") s.insert(6, " ") string =
前段时间一直在看函数式编程,上周总结了下,准备了分享,一开始是熟悉的keynote。
利用Babel自动解析源码属性上的注释生成对应Markdown文档,这个场景的应用主要包括在组件库文档对组件属性的介绍中,这一篇就通过编写一个Babel插件来实现这个功能~
上一篇文章,我们简单介绍了XMLHttpRequest及其他可以发起AJAX请求的API,那部分大家有兴趣可以自己去扩展学习。另外,简单介绍了怎么去读以及我会怎么写这个系列的文章,那么下面就开始真正的axios源码实现,跟紧我的步伐,你会发现其实阅读源码并不是一件很复杂的事情。另外,我在上一篇概要中附上的链接,大家一定要去看,至少要了解一下XMLHttpRequest的相关属性和方法都有哪些,因为接下来的核心内容,其实都是基于此的。
可以避免浏览器被误关闭,支持缩小在右下角系统托盘中,支持通知栏和声音访客新消息提醒
重装完系统后,打开Laya IDE,当我切换到场景编辑器的时候,弹出错误框让我备受煎熬。
作者:海因斯坦,原文链接:https://juejin.im/post/6893809205183479822
最近在项目内部创建了一个vue组件库,希望通过组件库的形式,统一项目中组件的逻辑和样式,让代码的复用性更强。
在日常使用 Node 进行开发的时候,会使用到一些文件系统、路径操作等基础 API,这里整理一下,方便大家理解和直接使用。
本文仓库 https://github.com/lxchuan12/read-pkg-analysis.git,[1]
接下来我们需要移除无序列表中的行头前缀。 在src文件夹中创建css文件夹,再从css文件夹中创建index.css文件,并写好样式代码。
分析完端代码后我们看下前端代码,先抓下网络请求,可以看到,多数请求是websocket请求。
对项目的构建,本质上就是执行一段程序,让我们编写的代码,处理成一个符合实际场景需要的可执行的程序文件。当然对于Vue3的构建也不例外。在Vue3中,根据实际需要的不同,执行构建的命令是:pnpm run build或pnpm run dev。这里用pnpm还是npm没什么区别,为什么呢?因为执行pnpm run dev或npm run dev,本质上都是执行一个js程序,而这个js文件是一样的,从package.json可以找到对应的文件。我们看下面代码:
morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。本文由浅入深,内容主要包括:
最近在做公司的网站,但是有一个是比较麻烦的事情就是需要做的一个国际化,我们都知道后端其实做国际化的话是直接可以配置的,相对来说是比较简单的,但是前端做国际化的话是很麻烦的一件事情,但是不是说不可以做,我之前呢是准备直接做两套网站,这样一样可以实现国际化的效果,其实这也是过去网站国际化的一个做法,包括现在也有人这样做,这个办法我们就不具体的写了,因为很简单,直接一模一样的写两份,一份是中文的一份是英文的就行了!其实我没写之前看了很多的资料,关于国际化的,很多的大神提供了很多的办法,但是都不是很详细,写的很模糊,所以我查看很多资料以后决定写这篇博客,总结一下自己的想法,同时希望可以帮助很多的人解决这个问题!
no-clean表示打包时不删除build文件夹(https://cli.vuejs.org/zh/config/#outputdir) 作用就是为了后边的按需打包,下表。
在使用 webpack 的时候,很常见的一个构建优化手段就是缩小构建目标。比如在构建阶段只构建 src 里面的模块代码,对于 node_modules 里面所引入的三方包不进行构建操作。
如何从零开始一个vue+webpack前端工程工作流的搭建,首先我们先从项目的目录结构入手。一个持续可发展,不断加入新功能,方便后期维护的目录结构究竟是长什么样子的?接下来闰土大叔带你们一起手摸手学起来。 初级前端初始化目录篇 项目伊始,我们肯定是先在terminal终端命令行(以下简称terminal)cd进入<project name>根目录,然后输入: npm init 初始化一个npm项目,在项目根目录下面就会出现一个package.json文件。 然后就可以安装依赖了,直接在termina
其中,page.js是入口文件,subPageA.js和subPageB.js共同引用module.js。下面,我们按照代码引用的逻辑,从底向上展示代码:
前言 前面也学习了一些Node.js的基本入门知道,现在开始进入Web开发的部分; Node.js提供了http模块,这个模块中提供了一些底层接口,可以直接使用,但是直接开发网站那还是太累了,所以http模块也不单讲了,可以去看官方API:http://nodejs.org/api/http.html 下面我们直接从Express框架着手去进行Web开发,它实现好了更高层的接口,让Web开发更简单快捷... 简介和安装 Express是一个轻量级、简洁、易用的Node.js Web MVC
上一篇文章我们介绍了webpack-dev-server,我们在package.json配置webpack-dev-server 选项实现了自动编译,自动打开浏览器,自动更新等。 当然我们也可以在webpack.config.js中进行配置
mapboxGL升级到2的版本之后,用官方的引用token是必须要有的,为了能够离线使用,我们需要对源码做一定的修改后编译,本文讲述如何进行mapboxGL的离线应用。
在写爬虫经常会遇到很多JS代码,比如说某些参数加密,可以只用用Python来翻译,但是有时候代码不容易阅读(JS渣渣),所以这里直接去找一条捷径,直接用Python的第三方库去调用JS代码。
•微信公众号 《JavaScript全栈》•掘金 《合一大师》•Bilibili 《合一大师》
nodejs的进程在重启的时候,用户去访问服务,就会出现短暂的 502 bad gateway
来到这家公司之后,一直在使用webpack,也写了不少笔记,但是都比较零散,现在决定整理一下webpack相关的知识点,由浅入深,方便自己后续查漏补缺,后续会一直更新。
上一篇文章主要从 Native 的角度分析了 React Native 的初始化流程,并从源码出发,总结了几个 React Native 容器初始化的优化点。本文主要从 JavaScript 入手,总结了一些 JS 侧的优化要点。
领取专属 10元无门槛券
手把手带您无忧上云