资讯专栏INFORMATION COLUMN

好久没写东西了,叨叨两句

netmou / 1950人阅读

摘要:最近写了个简单的命令行工具,用满足一些工作上的需求。后面加上了图片压缩,以及图片转的功能。就在写这个图片处理工具的过程中,自己得到了一些理解。不过这里更好的解决方法是可以提示用户图片体积过大,程序可以先自动压缩图片,再生成。

最近写了个简单的命令行工具,用node 满足一些工作上的需求。是一个处理图片的脚本,一开始只有一个指令,将指定图片输出成配置好的不同大小尺寸的图片。后面加上了图片压缩,以及图片转base64的功能。就在写这个图片处理工具的过程中,自己得到了一些理解。

项目结构

项目一开始的几个文件夹,先新建好。什么constants,lib,utils之类的都安排上。虽然麻烦点,但起码看着舒服,别人查看你的项目的时候也方便。至少不会觉得你外行(就在写这个的同时,突然想到可以在自己的脚手架工具中加一个文件夹结构生成指令。。。哈哈哈

代码结构

代码风格一定要统一好,linter 选一个自己用的惯的,可以参考别的大佬怎么配置,总之就是要有一套统一的代码风格。这一块在编辑器上可以安装上插件帮忙检测,code formater 也可以帮忙调整。

上面提到的项目结构这里就有用了。在敲代码的时候总归会用到一些常量,工具函数,这时候就可以把这些要用到的常量,工具函数统一管理起来,分配好。一开始会觉得麻烦,但是相信我。这个习惯养成了自己的代码质量也会提高(同时很装逼

可以适当的在边编写代码的时候边运用一些设计模式。虽然说设计模式在一些简单的项目中可能是画蛇添足,但是从简单的项目练习起来,形成思维习惯,不失为一个好的锻炼。
TL;DR
我这次就遇到一个代码设计模式上的缺陷,我所写的一些指令方法其中的logger和主程序都写在了一个主函数中。这时有了一个场景,我在转base64的指令中发现当图片提及过大,生成的base64编码量是很庞大的,这时候就加了个图片体积的限制。不过这里更好的解决方法是可以提示用户图片体积过大,程序可以先自动压缩图片,再生成base64。然而这里实现起来就限于我之前提到的,代码耦合,导致主要的脚本程序无法得到复用,从而增加了工作量。
以上,我描述了我在敲代码时的一个场景。而我接下来做的可能就是会去把各个指令的主要程序从执行函数中抽离出来,给代码解藕,这样就可以很自如的应对不同的需求挑战

建议阅读一些关于设计模式的知识,一开始理解起来会比较抽象,但总得有开始咯

实际代码中的嗨点

我是前端程序员,慢慢的在写JS的时候,发现一些很舒服的点(自嗨)

适当的运用闭包,尖头函数,高阶函数,这些概念要多去理解,多运用。实践起来之后真的很嗨

比如:

const handleGenerateFail = spinner => err => {
  spinner.text = `压缩图片失败:

${err}`
  spinner.fail()
}

const handleGenerateSucceed = spinner => _output => {
  spinner.text = `压缩图片成功`
  spinner.succeed()
  console.log("
查看", _output)
}

const spinner = ora(`图片压缩中`).start()
const failHandler = handleGenerateFail(spinner)
const successHandler = handleGenerateSucceed(spinner)

最后

记录一下自己在洗澡的时候想到的一些东西(厕所真的是一个激发灵感的好地方

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99856.html

相关文章

  • SegmentFault 社区访谈 | Felix:一个如同空气般存在的人

    showImg(https://segmentfault.com/img/bVWOEd?w=900&h=385); 阔别已久的社区访谈又双叒叕和大家见面来,介绍我们这次嘉宾之前,清蒸先来简单地说下以后的社区专访将会加入的两个小模块:访谈嘉宾的优质内容以及为期一个星期的提问时间,在本文发布这天开始计时,在接下来的一个星期,你们可以对专访嘉宾进行提问,唔,注意提问姿势(太过八卦的就不会给予回复啦(//...

    刘玉平 评论0 收藏0
  • SegmentFault 社区访谈 | Felix:一个如同空气般存在的人

    showImg(https://segmentfault.com/img/bVWOEd?w=900&h=385); 阔别已久的社区访谈又双叒叕和大家见面来,介绍我们这次嘉宾之前,清蒸先来简单地说下以后的社区专访将会加入的两个小模块:访谈嘉宾的优质内容以及为期一个星期的提问时间,在本文发布这天开始计时,在接下来的一个星期,你们可以对专访嘉宾进行提问,唔,注意提问姿势(太过八卦的就不会给予回复啦(//...

    trilever 评论0 收藏0
  • ABROAD:将系统的VC模式扩展为MVC模式

    摘要:规范首先从框架规范起将不规范的模式扩展为较为规范的模式,再就是平时写代码时命名数据库设计命名文件夹命名等规范,还有诸如语句书写的规范关键词大写表名和字段名用标识等,感谢大神小志公子和转啊转提醒。就拿的图做文章的配图啦,力顶。 ABROAD项目好久没写文章了,放了太久,这次要开始发力完成它了! 在项目停滞的这一两个月里,又学习了很多新东西,特别是最近加入了一个开发者社区(请戳http:...

    taoszu 评论0 收藏0

发表评论

0条评论

netmou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<