用Web前端技术打造Github最有毒的8.8K老哥Star的表情包博物馆

github.com/zhaoolee/ChineseBQB

随着Web前端技术迅猛发展,Gmail, Word, Excel, PowerPoint等工具都可以通过浏览器使用。Web前端不只和浏览器打交道,Node.js的发展让前端的舞台进一步扩展,前端不仅可以使用Node.js打包复杂的js, css, html 构建优化前端工程, 还能配合Github,做出喜闻乐见的表情包开源项目。

github.com/zhaoolee/ChineseBQ

本文提到的开源代码仓库

https://github.com/zhaoolee/ChineseBQB

如何用前端打造一个受欢迎的开源项目?

好的工具要走群众路线,在中国,人人聊微信,人人要斗图,那就做个表情包博物馆,方便人们斗图吧~

搜索表情包,长按表情包图片,发给朋友(微信和QQ好友皆可)

搜索表情包,长按表情包图片,发给朋友

将表情包图片链接,发到不支持表情包的朋友圈

将表情包图片链接,发到不支持表情包的朋友圈

以上工具所有的表情包和工具源码均开源在 https://github.com/zhaoolee/ChineseBQB

开发ChineseBQB过程中的技术选型思考与实现

  • 表情包工具采用H5构建,通过固定的网址打开 https://www.v2fy.com/asset/0i/ChineseBQB/,这样可以保证在任何App内打开,也能交给搜索引擎抓取,逐步进行SEO,获得自然流量
  • 表情包工具适配PC端和移动端,给任何尺寸屏幕的用户最好的体验
PC端
移动端
  • 表情包工具支持关键词查询,并通过url参数分享搜索结果页


    分享搜索结果

这是奥特曼表情包的分享页面(未来最好的兼容性,参数已encode): https://www.v2fy.com/asset/0i/ChineseBQB/?key_val=%E5%A5%A5%E7%89%B9%E6%9B%BC

  • 为提升表情包搜索准确性,zhaoolee对所有表情包进行了人工标注,并将标注数据导出为json文件

生成json的程序

// 本程序用于创建表情包图片列表
const fse = require('fs-extra');
const fs = require('fs');
const path = require('path');

function get_bqb_dir(){
  let file_list = fs.readdirSync(path.join(__dirname, "./"));
  let md_dir_list = [];
  file_list.map((file_name_value, file_name_index)=>{
      if(file_name_value.endsWith("BQB")){
          md_dir_list.push(file_name_value);
      }
  });
  return md_dir_list 
}

function get_json_data(bqb_dir_list, prefix){
  let json_data = [];
  // 遍历表情包文件夹
  for(let i = 0, bqb_dir_list_length = bqb_dir_list.length; i< bqb_dir_list_length;i++){
    let absolute_bqb_path = path.join(__dirname, bqb_dir_list[i]);
    // 获取文件夹内所有表情包图片
    let file_list = fs.readdirSync(absolute_bqb_path);
    for(let n = 0, file_list_length = file_list.length; n < file_list_length; n++){
      let tmp_img_url = prefix + path.join(bqb_dir_list[i] ,file_list[n]);
      // 忽略一切隐藏文件
      if(file_list[n].startsWith(".") === false){
        let tmp_img_info = {
          name: file_list[n],
          category: bqb_dir_list[i],
          url: tmp_img_url
        }
        json_data.push(tmp_img_info);
      }
    }
  }
  return json_data;
}
function main() {
  // 创建Json文件,ChineseBQB_github.json ChineseBQB_v2fy.json
  // 创建最终写入的数据结构 chinesebqb_github_json  chinesebqb_v2fy_json
  // 获取所有以BQB为后缀的文件夹路径
  let bqb_dir = get_bqb_dir()
  console.log("bqb_dir::", bqb_dir);
  // 将图片地址添加到 chinesebqb_github_json_data  chinesebqb_v2fy_json_data  
  let chinesebqb_github_json_data = get_json_data(bqb_dir, "https://raw.githubusercontent.com/zhaoolee/ChineseBQB/master/");
  let chinesebqb_github_json = {
    status: 1000,
    info: "ChineseBQB的Github数据源",
    data: chinesebqb_github_json_data
  };
  
  let chinesebqb_v2fy_json_data = get_json_data(bqb_dir, "https://v2fy.com/asset/0i/ChineseBQB/")
  let chinesebqb_v2fy_json = {
    status: 1000,
    info: "ChineseBQB的V2方圆数据源",
    data: chinesebqb_v2fy_json_data
  };

  // 创建Json文件,ChineseBQB_github.json ChineseBQB_v2fy.json
  fse.writeJsonSync('./chinesebqb_github.json', chinesebqb_github_json);
  fse.writeJsonSync('./chinesebqb_v2fy.json', chinesebqb_v2fy_json);
}
main();

生成的标注好的json文件
https://raw.githubusercontent.com/zhaoolee/ChineseBQB/master/chinesebqb_github.json

导出json文件

对编程感兴趣的小伙伴,可以将json文件作为开放数据源,开发微信小程序,制作爬虫Demo,甚至作为机器学习的数据源

  • 如何低成本维护项目?

表情包工具背后的数据源需要长期维护,最好的方式是让程序自动读取特定文件夹中的表情包数据

自动读取特定格式文件夹内表情包数据,并统计数量

文件夹内表情包数据

按照特定命名规则标注表情包

生成的json数据,可作为表情包工具的前端数据库,查询速度极快,无需网络交互~

生成的json数据

数量统计与文件夹同名的超链接

数量统计与文件夹同名的超链接

自动生成的网页

自动生成的网页

一个好玩的前端项目,需要好玩的想法,也需要合理的技术选型,表情包工具的搜索速度非常快,因为索引数据已经提前加载到前端,浏览器本地的查询要比网络请求快的多。

小结

现代产生的巨量数据,催生了数据云的出现,数据云的出现,可以让80%的软件直接上云,比如Word, Excel, PowerPoint大多数常用功能都可以通过在线版实现。

大量在线版工具的涌现,对前端技术提出了更高的要求,对于一名程序员,如果想成为独立开发者,打造充满个性且实用的软件或工具, 对前端领域的深入思考会变得不可或缺。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容