![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javscript
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 评论 -
fromNow
fromNow实现一个计算出距离当时时间的相对时间值function fromNow(lastTime) { var msPerMinute = 60 * 1000; // 每分钟的毫秒数 var msPerHour = msPerMinute * 60; // 每小时的毫秒数 var msPerDay = msPerHour * 24; // 每天的毫秒数 var msPerMonth = msPerDay * 30; // 每月的毫秒数(按每月30天) var原创 2021-09-09 14:21:44 · 179 阅读 · 1 评论 -
实现一个简单的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 评论 -
tapable
tapable 原理使用方法参照https://github.com/webpack/tapablehttps://www.jianshu.com/p/273e1c9904d2module.exports.SyncHook = class { constructor(args) { this.tasks = []; } tap(name, task) { this.tasks.push(task); } call(...args) { this.tas原创 2021-07-31 12:47:39 · 61 阅读 · 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 评论 -
webpack 基础学习
先安装webpack 必需模块npm i webpack webpack-cli wepback-dev-server -D图片资源处理{ test: /\.html$/, loader: ['html-withimg-loader'] // 对html文件中的img的src引用进行处理},{ test: /\.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader', 'postcss-load原创 2021-07-20 13:20:51 · 288 阅读 · 2 评论 -
js 实现链表
js 实现链表function LinkedList() { this.Node = function(item) { this.item = item; this.next = null; } // let node = new Node(); let length = 0; let head = null; this.append = function(item) { var node = new this原创 2021-07-19 18:23:35 · 89 阅读 · 0 评论 -
js 实现二叉搜索树
js 实现二叉搜索树//二叉搜索树function BinaryTree() { let root = null; function Node(key) { this.key = key; this.left = null; this.right = null; } function insertNode (node,newNode) { if(newNode.key < root.k原创 2021-07-19 14:06:44 · 139 阅读 · 0 评论 -
js 实现队列
js 实现队列//创建队列function Queue() { let items = []; this.enqueue = function(item) { items.push(item); } this.dequeue = function() { return items.shift(); } this.front = function() { return items[0]; }原创 2021-07-19 14:00:35 · 72 阅读 · 0 评论 -
js排序算法
js排序算法 // 生成一个长度1000000的有序数组 let array = Array.from({ length: 1000000 }, (_, i) => i); //数组乱序 function fisher_yates_shuffle(arr) { for (let i = 0; i < arr.length - 1; i++) { const j = i + Math.floor(Math.random() * (arr.length - i)原创 2021-06-23 18:15:44 · 43 阅读 · 0 评论 -
js 常见基础算法问题
js 常见基础算法问题后序会继续补充// 数组扁平化const flatten = arr => [].concat(...arr.map(x => Array.isArray(x) ? flatten(x) : x)); // 节流function throttle (func, delay = 60) { let lock = false; return (...arg) => { if (lock) return; func(...arg原创 2021-06-23 18:07:38 · 62 阅读 · 0 评论 -
Vue 响应式原理
Vue 响应式原理<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> body <div id="app"> <div>{{ age }} <p> </p> </div>原创 2021-06-23 17:57:37 · 55 阅读 · 0 评论 -
js 实现HashTable
js 实现HashTable // 解决方法1:改造hash函数 class HashTable { constructor() { this.table = new Array(137); } simpleHash(data) {//简单的散列函数 除留余数法 let total = 0; for (let i = 0; i < data.length; i++) { total += data.charCodeA原创 2021-06-23 17:55:59 · 287 阅读 · 0 评论 -
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 评论 -
JS实现BinaryTree
JS实现BinaryTree<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <tit原创 2021-06-08 15:28:26 · 120 阅读 · 0 评论