Skip to content

fish-nodejs/ext-mimetype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

我本来想看看它的源代码,结果异常晦涩难懂,本来我是怀疑自己的水平,后来我觉得这是作者的问题

  1. JS语法上没有类型系统,导致根本不知道他的这个函数想接受什么参数,有什么返回值类型。(赶紧上ts的车)

  2. 使用函数作用域链查找的规则。 这个真的蠢。你这样写这个函数怎么复用?都不知道它使用了哪些变量。如果不打算复用它,又为什么要写成一个函数?

  • 一个函数可以使用宿主环境自带的变量
  • 不应该使用作用域链查找规则引用上层作用域的变量
  • 需要用到闭包的时候,可以例外
  1. 滥用函数变量提升的规则,这样写根本不符合人类顺序阅读的方式。

  2. 滥用exports。

  • 必须使用module.exports,禁止使用exports
  • 必须把module.exports 放在代码的最下方
  1. 函数定位不清楚 一般函数和对象的交互有两种
// 函数的返回值赋值给对象的属性或方法
obj.a = foo()

// mixin的方式,就像vue或者delegates一样
// 把对象当做参数,利用引用类型的机制,加工对象
mixinState(obj)

但是,你这种写法。。。

exports.extensions = Object.create(null)
exports.types = Object.create(null)

populateMaps(exports.extensions, exports.types)

真的是把我搞蒙蔽了。

extension --> mimetype

开发web服务非常重要的一点:根据extension 推断出mimetype,写在response headers里面。

方法很简单:

  • 就是读取mime-db
  • 遍历 extension, 反转
  • 只是有一个问题,extesion 可能冲突,这种情况他有一个判断,我没怎么看懂,以后再说吧

我之前想要不要更具结果生成一个缓存的json文件,后来想想没有必要。上面的函数只会执行一次就行了。

About

阅读 jshttp/mime-types 源码的感受

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published