程晓磊

程晓磊 查看完整档案

北京编辑墨尔本皇家理工大学  |  计算机应用技术 编辑某某某科技有限公司  |  前端工程师 编辑 devland.cn 编辑
编辑

前端老垃圾

个人动态

程晓磊 赞了文章 · 1月19日

「代码水平」当我们遇到Switch语句时,可以用Map/Object literal来提高代码的level

来一栗switch语句

function test(feup) {
  switch (feup) {
    case '妲己':
      return ['法师', '控'];
    case '鲁班':
      return ['射手', '腿短'];
    case '安其拉':
      return ['法师', '喜欢读魔法书'];
    case '前端指北':
      return ['成长', '进阶','面试题'];
    default:
      return ['starkwang'];
  }
}

//test results
test(null); // ['starkwang']
test('安其拉'); // ['法师', '喜欢读书']

上面的代码看起来没什么问题,但是我发现它相当冗长。同样的结果也可以通过使用更清晰的 object literal 来实现:

const hero = {
  daji: ['法师', '控'],
  luban: ['射手', '腿短'],
  anqila: ['法师', '喜欢读魔法书'],
  qianduanzhibei:['成长', '进阶','面试题']
};

function test(feup) {
  return hero[feup] || [];
}

或者,你也可以使用 Map 来达到同样的结果:

  const hero = new Map()
    .set('daji', ['法师', '控'])
    .set('luban', ['射手', '腿短'])
    .set('anqila',  ['法师', '喜欢读魔法书'])
    .set('qianduanzhibei', ['成长', '进阶','面试题'])

function test(color) {
  return hero.get(color) || [];
}

Map详细知识了解可以去这了解:https://developer.mozilla.org...

Map 是自 ES2015以来可用的对象类型,允许您存储键值对。

我们应该禁止 switch 语句的使用吗?不要把自己局限于此。就我个人而言,只要有可能,我就会使用 object literal,但我不会设置硬性规则来阻止它,而是使用任何对您的场景有意义的方法。

对于上面的例子,我们实际上可以通过重构代码来使用 Array.filter 实现相同的结果。

const hero = [
    { name: 'daji', ability: '法师' },
    { name: 'luban', ability: '射手' },
    { name: 'anqila', ability: '喜欢读魔法书' },
    { name: 'qianduanzhibei', ability: '成长' }
];

function test(ability) {
  return hero.filter(f => f.ability == ability);
}

总有不止一种方法可以达到同样的结果,当写代码的时候,我们要思考怎么用更优雅的方式来表达,这样当别人review代码的时候,会体现出自己的水平。

查看原文

赞 6 收藏 4 评论 2

程晓磊 发布了文章 · 2020-11-08

next.js实现服务端缓存

nextjs使用memory-cache插件实现服务端缓存

import cacheData from 'memory-cache';

async function putCache(url, options) {  // url为缓存标识
    const value = cacheData.get(url); // 获取缓存
    if (value) {
     // 如果有缓存 
      *codeing*
    } else {
        const hours = 24;  
      // 请求接口 获取data
        cacheData.put(url, data, hours * 1000 * 60 * 60); // url 为缓存标识   data为数据  第三参数为以毫秒为单位的时间
        return data;
    }
}
查看原文

赞 0 收藏 0 评论 0

程晓磊 分享了头条 · 2020-11-05

next服务端缓存的方式 很详细

赞 0 收藏 0 评论 0

程晓磊 提出了问题 · 2019-01-23

node.js 获取post图片存储 但写入后图片损坏 是什么情况

问题描述

看的官方文档 直接复制的官方文档代码 已成功写入图片 但是图片打开失败 显示损坏

问题出现的环境背景及自己尝试过哪些方法

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer = require('multer');

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/' }).array('image'));

app.get('/index.htm', function (req, res) {
    res.sendFile(__dirname + "/" + "index.htm");
})

app.post('/file_upload', function (req, res) {

console.log(req.files[0]);  // 上传的文件信息

var des_file = __dirname + "/image" + req.files[0].originalname;
fs.readFile(req.files[0].path, function (err, data) {
    fs.writeFile(des_file, data, function (err) {
        if (err) {
            console.log(err);
        } else {
            response = {
                message: 'File uploaded successfully',
                filename: req.files[0].originalname
            };
        }
        console.log(response);
        res.end(JSON.stringify(response));
    });
    });
})

var server = app.listen(3000, function () {

    var host = server.address().address
    var port = server.address().port

    console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

你期待的结果是什么?实际看到的错误信息又是什么?

希望大神能帮我解决一下 谢谢啦

clipboard.png

clipboard.png

关注 3 回答 2

程晓磊 提出了问题 · 2019-01-23

node.js 获取post图片存储 但写入后图片损坏 是什么情况

问题描述

看的官方文档 直接复制的官方文档代码 已成功写入图片 但是图片打开失败 显示损坏

问题出现的环境背景及自己尝试过哪些方法

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer = require('multer');

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/' }).array('image'));

app.get('/index.htm', function (req, res) {
    res.sendFile(__dirname + "/" + "index.htm");
})

app.post('/file_upload', function (req, res) {

console.log(req.files[0]);  // 上传的文件信息

var des_file = __dirname + "/image" + req.files[0].originalname;
fs.readFile(req.files[0].path, function (err, data) {
    fs.writeFile(des_file, data, function (err) {
        if (err) {
            console.log(err);
        } else {
            response = {
                message: 'File uploaded successfully',
                filename: req.files[0].originalname
            };
        }
        console.log(response);
        res.end(JSON.stringify(response));
    });
    });
})

var server = app.listen(3000, function () {

    var host = server.address().address
    var port = server.address().port

    console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

你期待的结果是什么?实际看到的错误信息又是什么?

希望大神能帮我解决一下 谢谢啦

clipboard.png

clipboard.png

关注 3 回答 2

程晓磊 关注了专栏 · 2019-01-23

前端指北

关注devland团队「https://www.devland.cn」,每天进步一点。

关注 279

程晓磊 关注了用户 · 2018-12-28

starkwang @devland

从事web开发多年,前端、后端、服务架构都有涉猎,经历过大公司、创业公司,擅长前端及公司技术选型。

关注 624

程晓磊 关注了专栏 · 2018-12-19

前端指北

关注devland团队「https://www.devland.cn」,每天进步一点。

关注 279

认证与成就

  • 获得 0 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2018-10-18
个人主页被 257 人浏览