![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
nodejs
code_xin~
这个作者很懒,什么都没留下…
展开
-
node中EventMitter实现
// 发布订阅模式function EventEmitter() { this.events = {} // 事件存放对象 this._maxListener = 10; // 默认最大绑定函数个数}EventEmitter.prototype.on = EventEmitter.prototype.addListener = function(type,listener) { if (this.events[type]) { this.events[type].push(list原创 2021-09-27 15:38:05 · 257 阅读 · 0 评论 -
实现一个简单的koa
不完全的koa~lib > 目录request.jsresponse.jscontext.jsbody-parser.jscookie-parser.jskoa-router.jskoa-static.jskoa.jskoa.js > 主入口文件const http = require('http');const request = require('./lib/request');const response = require('./lib/respons原创 2021-08-24 21:00:36 · 221 阅读 · 0 评论 -
webpack plugin
webpack plugin插件编写AsyncPluginmodule.exports = class AsyncPlugin { apply(compiler) { compiler.hooks.emit.tapAsync('AsyncPlugin', (compilation, cb) => { setTimeout(() => { console.log('tapAsync wait 500ms'); // 延迟500ms输出 c原创 2021-07-26 21:18:51 · 75 阅读 · 0 评论 -
webpack loader
webpack几个常用loader原理babel-loaderconst babel = require('@babel/core'); // 需要babel核心模块对es6代码进行解析转换const loaderUtils = require('loader-utils');module.exports = function (source) { const options = loaderUtils.getOptions(this); // 获取babel配置的options参数原创 2021-07-26 19:29:22 · 63 阅读 · 0 评论 -
nodejs实现一个http-server静态文件服务器
nodejs实现一个http-server静态文件服务器目录结构bin 存放配置信息和启动程序node_modulessrc 存放主体资源package.jsonpackage-lock.jsonbin > www.js 启动文件#! /usr/bin/env node// 指定脚本的解释程序是node,必需添加const program = require('commander'); // 在终端上显示信息提示const options = require('./conf原创 2021-07-25 14:48:16 · 1031 阅读 · 1 评论 -
Node ReadStream实现
node ReadStream 实现fs.createReadStream 继承自 stream模块const fs = require('fs');const EventEmitter = require('events');class ReadStream extends EventEmitter { constructor(path, options = {}) { super(); this.path = path; this.encoding = opt原创 2021-06-22 11:01:38 · 416 阅读 · 0 评论 -
Node 实现 require 加载模块
require 实现原理 mini 版const fs = require('fs');const path = require('path');const vm = require('vm');// require模块查找文件规范// 1. 核心模块、内置模块、node自带模块// 2. 文件模块,引用都是相对路径// node最新版本: 默认先查找同名文件,如果没有找到则尝试查找.js或者.json文件,如果仍然没有就查找到同名文件夹(会当成一个包)// 先查找package.jso原创 2021-06-22 10:51:31 · 278 阅读 · 0 评论 -
实现一个简易express
实现一个简易expressconst http = require('http');const url = require('url');function createApplication() { const app = function (req, res) { const { pathname } = url.parse(req.url); for (let i = 0; i < app.routes.length; i++) { let route =原创 2021-06-19 11:00:30 · 141 阅读 · 0 评论 -
Node.js Request用法
Node.js Request用法server.jsconst express = require('express');const bodyParser = require('body-parser');const multer = require('multer'); // 解析form-data数据const UUID = require('uuid'); //生成一串uuidconst storage = multer.diskStorage({ destination: 'sr原创 2021-06-09 16:14:11 · 1459 阅读 · 0 评论 -
Node.js WriteStream模块实现
Node.js WriteStream模块实现const fs = require('fs');const EventEmitter = require('events');class WriteStream extends EventEmitter { constructor(path, options) { super(path, options); this.path = path; this.encoding = options.encoding || 'utf原创 2021-06-08 22:37:50 · 287 阅读 · 0 评论 -
Node.js 递归创建和删除目录结构
Node.js 递归创建和删除目录结构const fs = require('fs');function mkdirp(dir) { const paths = dir.split('/'); console.log(paths); !function next(index) { let current = paths.slice(0,index).join('/'); console.log(current) if (index > paths.lengt原创 2021-06-08 17:27:21 · 207 阅读 · 0 评论 -
Node.js 实现Express.static静态文件中间件
Node.js 实现Express.static静态文件中间件const http = require('http');const mime = require('mime'); // 获取文件的类型,需npm 安装const fs = require('fs');const url = require('url');const path = require('path');function static(root, options = {}) { return function (re原创 2021-06-08 17:25:04 · 325 阅读 · 0 评论 -
Node.js 实现一个body-parse中间件
Node.js 实现一个body-parse中间件bodyParse.jsconst fs = require('fs');const querystring = require('querystring');const qs = require('qs');function BodyParser() {}// 解析 application/x-www-form-urlencoded 数据BodyParser.prototype.urlencoded = function (optio原创 2021-06-08 15:56:21 · 211 阅读 · 0 评论