美文网首页
Blog折腾采坑记录

Blog折腾采坑记录

作者: 少寨主的互联网洞察 | 来源:发表于2019-12-04 17:36 被阅读0次

前言

今天无聊,整整自己的blog,发现【影集部分】(blog当中的一个小版块)挺有意思,于是想着多添加一些有意思的图片上去。但是,发现原来的图片网页里写死了图片添加的位置和方式,不是很友好,遂改之!

分析

自己的图片全部放在自建图床上面,除图片名以外的前缀部分都一样。此外,已有的影集页面模板已经比较完备,样式等都已经写好了,图片项的模板也比较固定。所以我是不是只需要维护一个我想添加的图片列表就好了呢,然后在影集页面用代码去循环列表,然后用js脚本动态往页面塞图片内容。想法可行!

尝试

由于自己前端只是个半吊子,像字符串替换啊、Json解析啊、往页面特定标签插内容啊什么的都要Google,趟了一些坑。随后出了第一版,基本功能都算是满足了的,但发现一个问题,就是我把列表写死在js代码里面了,后期维护难道还要打开代码去编辑列表变量?不行!我要把这个列表放在一个在线配置项里面,比如放在一个Json文件里面,然后Js自己去请求下载解析。

落地

按照上面的想法,这个配置文件放在哪里呢,OSS仓库里?不对,如果放在OSS仓库里,第一剥离了文件相关性,第二不方便修改,遂弃之。所以就直接放在blog代码Repo里吧。查看仓库发现已经存在一个json文件了,搜索引用,并没有发现其它位置有引用,所以直接利用之。

踩坑

有了以上的基础,很明显接下来需要做的就是在JS里down下来配置文件然后解析就好了。但前端菜鸡的我愣是在这里卡住了,尝试过$.get()的方式,$.getJson(),Ajax的方式,一步一步解决,在Console控制台能获取到,但写在代码里就是无法获取,怀疑是JS引用文件的问题,但控制台并没有报错,查看源码也印证了JS已经引入的猜想。然后在关键位置打日志,并在控制台去打印相应变量,发现就是没有发起请求的问题,网络也没有对应请求记录。找到了根源。

解决

遂去查看jQuery API文档,看见下面这样的一段实例代码:

$(document).ready(function(){
    $("button").click(function(){
        $.getJSON("demo_ajax_json.js",function(result){
            $.each(result, function(i, field){
                $("div").append(field + " ");
            });
        });
    });
});

因此怀疑是不是我之前的写法其实只是相当于定义了一个函数,而没有对应的事件触发执行它。遂改之,观察控制台日志输出和网络请求记录,果然,发起请求了,后面的也就相对简单了。更新:最后发现原因并不是假设的这样,是异步请求的问题。

总结

最后的效果如我设计所想,更改添加等操作要方便多了,最好的方式当然还是弄个UI界面填写提交,或者集成一个自己的浏览器插件专门针对图床页进行定制,当发现需要的图片的时候就add一下然后插件自己帮我更新配置项就好了。但是考虑到又是插件又是GitHub key什么的,又引入不少复杂性,所以就这样了,对我一个开发人员来说不是什么大问题。

最后

最后附上简短的代码片段:

<script>
  var grid = document.querySelector('.grid');
  var html = '';
  html += '<div class="grid-size"></div>';
  $.ajaxSettings.async = false; 
  $.getJSON(
    "https://augustrush8.com/manifest.json",
    function(data){
      var img_name = data.img_name;
      var template = '<div class="grid-item"><a class="view" href="http://image.augustrush8.com/images/album/{template}.jpg" title="{template}" rel="vsco"><img src="http://image.XXX.com/images/album/{template}.jpg"></a></div>';
      for(let i = 0; i < img_name.length; i++){
        var temp = template.replace(/{template}/g, img_name[i]);
        html += temp;
      }
      grid.innerHTML = html;
    }
  );
  var msnry = new Masonry(grid, {
    itemSelector: '.grid-item',
    columnWidth: '.grid-size',
    gutter: 10
  });

  imagesLoaded(grid).on('progress', function() {
    msnry.layout();
  });
</script>

相关文章

  • Blog折腾采坑记录

    前言 今天无聊,整整自己的blog,发现【影集部分】(blog当中的一个小版块)挺有意思,于是想着多添加一些有意思...

  • 采坑记录

    一、访问页面报502错误 常见问题: 最大可能是应用启动报错,没有启动起来 应用虽然起来了,但是由于遇到运行时er...

  • element 复选框点击一个全部选中bug

    因为有坑记录下先给出代码在细说 别的我就不说了,采坑记录下。

  • TensorFlow分布式

    TensorFlow分布式采坑记 https://blog.csdn.net/tiangcs/article/de...

  • Kotlin+Retrofit上传文件报Parameter ty

    采坑 附上参考链接,侵权即删:https://blog.csdn.net/janronehoo/article/d...

  • arraylist采坑记录

    而最近,看到一个以前的同学写的一段代码就是在循环过程中删除元素,我很是纳闷啊。然后后来决定给他改掉。然后引发了另外...

  • iOS采坑记录

    采坑记录 iOS 通过 Webview点击下载链接问题 Webview点击下载链接,需要通过文件名下载文件,需要通...

  • RecyclerView采坑记录

    今天使用RecyclerView过程中遇到了坑,RecyclerView的条目中既有checkbox,又有edit...

  • swagger采坑记录

    一、swagger-ui.html正常显示但doc.html空白 注意:我的doc.html不是404,说明在后端...

  • Flutter采坑记录

    在 Flutter 开发中遇到的一些 BUG,避免遗忘,记录一下,如果正在看文章的你也遇到了,那激动的心,颤抖的手...

网友评论

      本文标题:Blog折腾采坑记录

      本文链接:https://www.haomeiwen.com/subject/uaslgctx.html