![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Node.js
文章平均质量分 94
_Captain_
这个作者很懒,什么都没留下…
展开
-
GridFS在nodejs中的应用
问题的产生:众所周知,在mongodb中单个文档的大小默认限制为16M,如果要存储的数据超过这个限制那么程序就会抛出异常,当然你可以通过修改数据库的限制将16M提高到32M甚至更大,但是这会有两个问题:在实际业务中数据库管理员并不会同意这种要求可能你要存的数据大小你也不知道上限在哪?所以Mongodb提出了一种大文件存储方案:GridFS。使用场景要存储的数据有可能超过16M的情况:视频、音频文件超大的字符串:在使用爬虫时爬取到的数据日志数据GridFS通过查阅Mong原创 2021-03-19 13:51:09 · 1047 阅读 · 0 评论 -
webpack服务端渲染踩坑记录
1.window is not defined本来一直在用的是内联样式,但现在有个地方不得不用到了css选择器,目的是设置所有image的max-width为100%,然后看webpack文档使用了如下配置: module: { rules: [ { test: /\.css$/, use: [ { ...原创 2019-08-02 16:57:22 · 299 阅读 · 0 评论 -
以API为线索来理解koa源码
代码结构:整个模块以applacation文件为主,其余context、request、response三个文件返回三个对象供applacation文件调用application.js:Class Applacationconstructor()listen()callback()handleRequest()createContext()inspect()onerror(...原创 2019-06-11 10:25:06 · 173 阅读 · 0 评论 -
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 阅读 · 0 评论 -
经典的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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 5957 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Node.js复杂计算的处理方法
在看着一篇的时候尽量先理解Node.js的事件循环nodejs的复杂计算是由事件循环去处理的,一旦遇到复杂计算,事件循环将在计算完成之前完全被阻塞住。为什么要防止事件循环阻塞呢?原因很简单,假设你的网站有很多接口,但其中只有一个含有复杂的计算叫做a接口,而且假设这个计算要花费5s。这时有一百个人访问你的网站,这100个人都没有访问a接口,你的网站延迟很低,性能不错。但这时候第101个人来了,他访...翻译 2019-01-22 08:45:42 · 1611 阅读 · 1 评论 -
Node.js的事件循环
什么是事件循环?让nodejs执行非阻塞I/O操作的就是事件循环–尽管事实上JavaScript是单线程–它无论何时都尽可能把操作丢给系统内核(相当于一个管家把任务都丢给手下)。因为大多数现代内核都是多线程,在这样的背景下内核就能处理多线程操作的执行。当这些操作中的一个完成后,内核会告诉nodejs以便适当的回调函数会被添加到轮询队列然后被执行。接下来我们将解释更多的细节在这篇文章中。事件循...翻译 2019-01-20 09:00:11 · 217 阅读 · 0 评论