自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

翻译 Node.js的事件循环

什么是事件循环?让nodejs执行非阻塞I/O操作的就是事件循环–尽管事实上JavaScript是单线程–它无论何时都尽可能把操作丢给系统内核(相当于一个管家把任务都丢给手下)。因为大多数现代内核都是多线程,在这样的背景下内核就能处理多线程操作的执行。当这些操作中的一个完成后,内核会告诉nodejs以便适当的回调函数会被添加到轮询队列然后被执行。接下来我们将解释更多的细节在这篇文章中。事件循...

2019-01-20 09:00:11 217

原创 浏览器实现文件下载

浏览器中输入一个URL后浏览器是如何判断是要浏览还是要下载呢?这主要和http协议Response Header中的两个字段相关:Content-TypeContent-Type主要标识文件的类型,浏览器在默认情况下会展示返回的文件内容,但是有一个值比较特殊:application/octet-stream,这表示未知的二进制类型文件,为了安全起见,浏览器会将其存储到磁盘,从而实现下载的功能。这样实现的下载功能有一个缺点是浏览器并不知道下载文件的类型,所以对一些特定类型文件的处理可能就会失效。此方法实现

2021-04-23 16:42:27 1118

原创 配置与启动Mongodb

MongoDB数据库config:unix系统中日志文件存放在/etc/mongodb.conf首先将配置文件权限设置为可编辑sudo chmod -R 777 /etc/mongodb.conf修改配置文件# mongodb.conf# Where to store the data.dbpath=/var/lib/mongodb# where to loglogpath=/var/log/mongodb/mongodb.loglogappend=truebi

2021-03-26 19:44:44 275 1

原创 GridFS在nodejs中的应用

问题的产生:众所周知,在mongodb中单个文档的大小默认限制为16M,如果要存储的数据超过这个限制那么程序就会抛出异常,当然你可以通过修改数据库的限制将16M提高到32M甚至更大,但是这会有两个问题:在实际业务中数据库管理员并不会同意这种要求可能你要存的数据大小你也不知道上限在哪?所以Mongodb提出了一种大文件存储方案:GridFS。使用场景要存储的数据有可能超过16M的情况:视频、音频文件超大的字符串:在使用爬虫时爬取到的数据日志数据GridFS通过查阅Mong

2021-03-19 13:51:09 1044

原创 浏览器拖拽操作

可拖拽的元素:定义draggable熟悉指明元素可拖拽(文本、图片默认可拖拽)可放置的区域:监听dragover事件,阻止事件默认行为(返回false或者调用e.preventDefault())指明该区域可放置元素。此事件会被浏览器频繁调用,应减少这里的逻辑。可放置的区域:如果该区域可放置元素则会触发drop事件,否则不触发。将元素放置在可放置区域需要在drop事件中需要自行操作,如使用appendChild。...

2021-03-12 17:47:16 583

原创 husky不生效

husky在升级到v5版本之后变化较大,其配置方式和v4完全不兼容。而且如果在安装完v5之后在退回v4也会导致v4的配置方式不起作用,大概是因为v5会对.git/hooks中的一些文件做出修改,但重新安装v4后没有恢复修改。解决方案:将项目的当前修改先保存到一个临时分支推送到远端,然后删除项目重新从远端拉取就好了...

2021-03-05 16:20:57 3499

原创 webpack5 nodejs模块polyfill(Buffer)

由于在webpack5中移除了nodejs核心模块的polyfill自动引入,所以需要手动引入,如果打包过程中有使用到nodejs核心模块,webpack会提示进行相应配置,根据上图提示可以解决在require或者import过程中模块路径的问题,但是对于Buffer这种在nodejs中的全局变量还需要进行自动引入: plugins: [ new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"] }) ] /

2020-11-24 18:20:49 9019

原创 webpack服务端渲染踩坑记录

1.window is not defined本来一直在用的是内联样式,但现在有个地方不得不用到了css选择器,目的是设置所有image的max-width为100%,然后看webpack文档使用了如下配置: module: { rules: [ { test: /\.css$/, use: [ { ...

2019-08-02 16:57:22 299

原创 css居中问题详解

居中分为水平he垂直居中,具体实现还要分不同的情况:假设情境为:父元素宽高不知,需要居中的子元素的宽高不知水平居中:块级元素:margin: 0 auto;行内(块)元素text-align: center;垂直居中:行内块法display: inline-block;将行高和父元素高度设置为相同的值。注意:此方法虽简单但是需要父元素高度表格布局法...

2019-07-29 21:05:54 157

原创 关于css中的background

css中有一个属性为background,其一般写法为<'background-color'> || <bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>这是众...

2019-07-27 20:53:36 178

原创 以API为线索来理解koa源码

代码结构:整个模块以applacation文件为主,其余context、request、response三个文件返回三个对象供applacation文件调用application.js:Class Applacationconstructor()listen()callback()handleRequest()createContext()inspect()onerror(...

2019-06-11 10:25:06 172

原创 koa-session源码理解--思路

主要代码:module.exports = function(opts, app) { // session(app[, opts]) 当没有传入opts参数时,第一个参数代表app,此时需要交换opts和app if (opts && typeof opts.use === 'function') { [ app, opts ] = [ opts, app ];...

2019-06-10 16:43:38 303

原创 经典的js代码——koa-compose

总有一些js代码写出来让人啧啧称奇,就比如koa-compose的源码:koa-compose就是用来处理koa的中间件的,其主要代码就是如下函数:function compose (middleware) { if (!Array.isArray(middleware)) throw new TypeError('Middleware stack must be an array!')...

2019-06-07 18:07:35 350

原创 nodejs的事件循环探索

在看了nodejs的Event Loop模型之后难免会让人产生疑问:promise等microtask在哪执行???于是有了如下代码探索:(基于nodejs11以上)const fs = require('fs')fs.readFile('./application.js',{},()=>{ console.log("=====fs1=====") setImmediate...

2019-06-06 19:41:14 255

原创 一个简单webpack配置实例详解

一个简单webpack配置实例详解在没有入门webpack之前,你可能觉得一大堆的配置让人眼花缭乱,无法理解。但当你理解之后,其实每一个配置背后都是非常合理的。现在你想要对你的项目进行打包,那么在配置中你就必须说明这三个问题:从哪里开始?如何打包?、到哪里去?。那么与之对应的就是三个配置项:entry、module、outputentry与output顾名思义就是webpack从哪里开...

2019-05-20 17:16:53 114

原创 js中变量预解析

话不多说先看代码var a;function a(){}console.log(a)这里的打印出来的a 你多半知道是函数,var a = 0;function a(){}console.log(a)这里的引出来的呢?两段代码的不同之处在于a是否多了赋值操作。根据变量预解析的规则,首先将var a;声明,然后声明函数,然后执行a=1所以a的值为1。然后再来看functio...

2019-04-25 11:50:10 327

原创 nodejs动态加载代码

使用场景:将一段nodejs代码字符串执行起来方法一:假设存在文件bundle.js,main.js,其中bundle.js中为要执行的代码//main.jsconst fs = require('fs')fs.readFile = util.promisify(fs.readFile)const bundle = await fs.readFile('./bundle.js', '...

2019-03-03 13:37:18 5956

原创 Nodejs模块的循环调用

模块循环调用你有没有想过nodejs中假如两个模块循环调用是不是就回陷入一个死循环?你可以尝试创建三个文件:a.js、b.js和main.js,然后运行如下代码:// a.jsconsole.log('a 开始');exports.done = false;const b = require('./b.js');console.log('在 a 中,b.done = %j', b.d...

2019-03-03 09:56:16 873

翻译 Node.js复杂计算的处理方法

在看着一篇的时候尽量先理解Node.js的事件循环nodejs的复杂计算是由事件循环去处理的,一旦遇到复杂计算,事件循环将在计算完成之前完全被阻塞住。为什么要防止事件循环阻塞呢?原因很简单,假设你的网站有很多接口,但其中只有一个含有复杂的计算叫做a接口,而且假设这个计算要花费5s。这时有一百个人访问你的网站,这100个人都没有访问a接口,你的网站延迟很低,性能不错。但这时候第101个人来了,他访...

2019-01-22 08:45:42 1611 1

原创 JavaScript设计模式--单例模式

单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池、全局缓存、浏 览器中的 window 对象等。在 JavaScript 开发中,单例模式的用途同样非常广泛。试想一下,当我 们单击登录按钮的时候,页面中会出现一个登录浮窗,而这个登录浮窗是唯一的,无论单击多少次登录按钮,这个浮窗都只会被创建一次,那么这个登...

2018-11-28 19:57:36 125

原创 Node.js 登录验证模块passport基本用法

首先就是引包const passport = require('koa-passport');const LocalStrategy = require('passport-local').Strategy;然后别忘了在你的app.js入口文件中写入:app.use(passport.initialize());app.use(passport.session());然后设...

2018-08-17 09:05:18 7457

原创 关于koa中使用async/await返回404的问题

在使用async/await的过程中遇到了不少坑,今天就说说koa框架中一种404问题, 模块:koa2,koa-router 在开发一个博客网站的过程中,写一个异步返回的情况 假设在 /v1/user/test这一路由中的主要逻辑为: var sleep = function (time) { return new Promise(function (resolv...

2018-08-06 10:30:20 5073

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除