自己做一个维基百科,就在这里!
大家平时查询资料都喜欢用什么搜索工具呢?
也许很多人都是百度吧,但是也有一部分小伙伴习惯使用维基百科~
维基百科(Wikipedia),又称人民的百科全书,是来自世界各地的人民用不同的语言共同创建的百科全书。
它基于wiki技术,强调自由、免费、内容开放,任何人都可以编辑百科全书中的任何条目。其宗旨是为全人类提供一个动态的、可自由访问和编辑的全球知识体。
你可以把它看作是一个纯文科类的百度百科的升级国际版,毕竟人们常说:北冥有鱼,其名为鲲。鲲之大,不知其几千里也,错了错了,拿错台词了,应该是这句,维基百科,海纳百川,有容奶大!
哦不不不,是有容乃大~~小编最近那个编码太辛苦了(啥啥东西看多了),各位理解理解~
那么大家有没有想过自己搭建一个静态版本的维基百科呢?
当然可以了,今天给大家带来的就是GitHub上的一个开源项目,教你如何使用CSS、JS、WASM和SQLite来搭建这个静态百科~
项目的核心技术要点在于 将SQLite (written in C) 编译成 WebAssembly,这样就可以使用 sql.js 读取 sqlite 的数据库文件。
不过项目还有点小瑕疵,比如,有时候页面会在加载的时候自动卡住,这个时候只能刷新页面解决。作者似乎还没找到一个合适的在SQLite HttpVFS库中处理正在进行的请求的方法,如果有小伙伴是个中高手也可以自己一改哟~
整体程序运行,只需要5个步骤:
1、获取维基百科转储文件
首先去维基百科的dump下载网站,下载所需要的语种和时间的dump文件。然后从中提取xml文件。
2、将xml文件加载进SQLite数据库
运行npm install
,将xml文件传输到转换器中cat "/path/to/enwiki.xml" | node ./scripts/xml_to_sqlite.js /path/to/output/folder/en.db
这样就会在指定的目录和路径处创建新的SQLite文件。不过往往这需要不小的硬盘空间(往往需要几百G)和长达数小时的时间消耗。
可以运行./scripts/sqlite3 /path/to/output/folder/en.db
看数据准备情况。
3、构建前端
如果小伙伴想测试下SQLite db ,可以运行 npm run build
和 npm run serve
,如果小伙伴用的是mac,可以将nginx.conf替换系统里的/usr/local/etc/nginx/nginx.conf
。
小伙伴要确保一点,调整db.js中的dev URL,使其指向自己本地主机“en.db”。而不是将db文件放到dist文件夹中,然后执行npm run dev
。切记切记~
运行npm run build
,系统会将"src/" 编译成 "dist/"。
4、将“dist/”和“db/”部署到静态文件主机
将文件上传,然后在静态主机上设置跨域CORS(CORS.example),最后,调整db.js中的URL。这样,应用程序就可以部署了。
5、重复完成所有dump文件的操作
如果下载了不同的dump文件,只需要重复1-4步加入db.js就可以了。
那最终的效果如下:
我们可以看到右上角可以选择语种,不同的语种只能在对应的库里搜索,就比如你在English库里搜索二傻子,是不会有结果的,同理你在Chinese库里所搜small也是没有。
各位天才小伙伴,一起来学习下这个项目吧!项目地址如下:
点击下方卡片,关注公众号“TJ君”
回复“维基”,获取仓库地址
往期推荐
大家好,我是TJ
一个励志推荐10000款开源项目与工具的程序员
欢迎关注我,了解多好玩、有趣的科技资讯