图片链接修复
2018年05月02日

起因

在做文章索引之前,使用的是单层路径.当时没有考虑文章目录的文件夹嵌套问题.所以功能设计上,就比较简单.
在markdown渲染的时候,也不用考虑文章内链接路径转换问题.
但是在采用自动索引以后,由于需要考虑文章内链接转换问题,这个问题就暴露出来了.

排查

在打开某个带有图片的章节后,发现文章可以查看,但是图片却怎么也无法显示.
而且不管是本地图片还是网络图片

 语法:
 ![图片名称](图片路径)
 
 ![图片名称](/path/of/image.jpg)
 ![图片名称](http://path/of/image.jpg)

这就很奇怪了,清楚的记得以前可以显示的.
后来发现后台在获取图片失败的时候会抛出异常,这才发现bug的端倪.

exception:view.js

这个页面是在获取文章详细内容的时候负责渲染整个markdown内容的,但是在打开博客首页的时候,明明只需要获取概要信息,却同样调用了这个脚本.这就耐人寻味了.
后来进一步发现,之前为了解决markdown内部链接转换的中间件,忽略了一部分.

replaceLink: function (link, env) {
    if(link.indexOf('http') < 0){
        return path.join(url,link);
    }
    //return link;
}

最后注释的一行没有添加,直接导致外网图片url变成undefine(函数没有返回结果);进一步猜想才发现,在路由中已经由view.js接管了所有内容的渲染工作,这其中就包括图片,找到bug原因就好解决了.

修复

在响应请求的时候,根据请求的url,判断文件类型,交由专门的图片函数进行渲染操作.