不用Vue你还记得怎么写前端吗?用JS重写🌜黑暗模式掘金首页 | 创作者训练营

简介: 大帅早有各种预案,所以不存在翻车(请看头图😁)。最优路径行不通,那就麻烦一点,多掉点头发罢了。

前言


最近这几天一直在埋头开发一款VSCode插件,叫做“我爱掘金”,为的是让广大掘友可以更方便的一边写代码,一边摸鱼。这个插件主要基于VSCode插件API里的Webview来开发,所以大部分功能是直接使用iframe来展示掘金页面,但这个Webview有很大局限,比如禁止打开新的窗口。


而掘金首页的文章列表点击后都是新开窗口,照这意思是只让我看首页的文章标题,但是看不了文章吗?


这是要翻车呀!


大帅早有各种预案,所以不存在翻车(请看头图😁)。最优路径行不通,那就麻烦一点,多掉点头发罢了。


话不多说,先看效果


1650859508(1).png


1650859534(1).png


重写掘金首页


看完效果,觉得还不错的,请赏赐一个👍赞好吗?


要想获得数据,首先得有接口


重写掘金首页涉及到了几个接口,接口地址我就不贴了,因为掘金是前后端分离,也没有用到SSR(对,就是超稀有卡片的意思),接口自己可以按F12在调试模式看到


  • 获得掘金分类 (就是后端,前端,Android....那一排)


1650859567(1).png


  • 获得指定分类下的文章列表

1650859598(1).png


分类导航


请求完接口后,动态的添加到category节点里


var str="";
for(var i=0;i<categorys.length;i++){
  str+="<span class='cateitem' onclick='switchCategory("+i+")'>"+categorys[i].category_name+"</span>";
}
document.querySelector(".category").innerHTML=str;


这个导航在滚动页面的时候会一直出现在顶部,所以我们要用上fixed


.category
{
  height: 46px;
  background: #333;
  line-height: 46px;
  overflow-x: scroll;
  overflow-y: hidden;
  width: 100%;
  white-space: nowrap;
  position: fixed;
}
.category>.cateitem
{
  color: #999;
  padding:0px 20px;
  border-radius: 10px;
  cursor: pointer;
}


如果页面宽度不够,我们是需要滚动的,但是并不想要显示滚动条,所以我们通过-webkit-scrollbar设置为隐藏


.category::-webkit-scrollbar {
  display: none;
}


给分类标签加上hover和激活状态下的效果


.category>.cateitem:hover,.category>.cateitem.actived
{
  color: #1683FB;
}


文章列表


获取到文章列表数据后,我们组装一下内容。这里也就是为什么要重写首页的原因,因为文章列表项点击后需要调用openInWebview这个方法,来通知VSCode插件进行下一步动作。


hasMore=res.has_more;
lastCursor=res.cursor;
var new_articles = res.data       
for(var i=0;i<new_articles.length;i++){
  var article_item=new_articles[i];
  $(".articles").append(`
      <div class='articleitem' onclick='openInWebview("https://juejin.cn/post/${article_item.article_id}")'>
      <div class='text'>
      <div class='info'>${article_item.author_user_info.user_name} · ${getTimeUntilNow(article_item.article_info.ctime)} · ${getTagsStr(article_item.tags)}</div>
      <div class='title'>${article_item.article_info.title}</div>
      <div class='statistics'>赞 ${article_item.article_info.digg_count}  评论 ${article_item.article_info.comment_count}</div>
      </div>
      <div class='image' style='background-image:url(${article_item.article_info.cover_image});display:${article_item.article_info.cover_image==''?'none':'block'}'></div>
      </div>
`);
}


这里怎么又用上JQuery了呢,因为刚开始只想用vanilla.js这个原生JS框架,写着写着发现还是jquery好使。


用什么不重要,重点是实现。


样式有点长,就不贴了, 反正最后提供了源码,大家可以看源码。


滚动到底部请求更多文章


非常常见的一个功能,实现方法非常简单


$(document).on('scroll',function(){
  let scroH = $(document).scrollTop();
  let viewH = $(window).height();
  let bodyH = $(document.body).height();
  if (bodyH - scroH == viewH){
    loadArticlesByCategory(lastCursor);//请求文章的方法,带上页数标记
  }
});


“我爱掘金”插件


写了这么多,也是希望大家都来用用这个插件,在VSCode里摸鱼的效率大幅提升。


1650859680(1).png


相关文章
|
9月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
546 0
|
JavaScript 前端开发 API
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
706 8
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
15615 23
|
JavaScript 前端开发 容器
|
JavaScript 前端开发
|
存储 JavaScript 前端开发
|
移动开发 JavaScript 前端开发
|
存储 JavaScript 前端开发
|
JavaScript 前端开发

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1250
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    567
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    430
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    433
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    546
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    724
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1405
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    314
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1167
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    507