您现在的位置:主页 > 品特轩118822高手论坛 >

简单漫画网济公心水论坛,站搭修-漫画喵Server版

来源:本站原创 发布时间:2019-11-25 点击数:

  小喵的叨唠话:寒假的时刻写了一个漫画爬虫,爬取了好几个漫画,不过无间没有找到适应的漫画阅读的用具。于是比来就试着己方写一个漫画的网站,放在公网上恐怕局域网里,云云就能随时随处用手机、Pad看漫画了。

  对于漫画爬虫的内容,请参看之前的博客:爬虫-漫画喵的100行逆袭.html

  小喵最开始原来是企图做一个QT的漫画阅读软件,如许可能在各类操纵体系上用。成立了一小段功夫之后,感触用手机恐怕Pad看漫画的情景会更多。难谈要给手机、死板乃至是PC都编写一套软件吗?这个小喵凿凿气力上达不到。其次是,要是是要地的APP的话,图片恐怕照样需要存到创办上,这样同样很艰辛。因此,漫画网站就成为最契合的选取,只消在联网的状况下(恐怕在统一个局域网中),只要有玩赏器,就可能看漫画。这才是真实的跨平台,也是小喵要编写这个器具的因由。

  说说理的话,原本大略的静态的网页能够就多余了,给每个漫画图片编写一个页面,包括图片、下一页、上一页等个人就或者。页面的生成可于是一个脚本圭表。然而如此的话,也有点贫穷,并且结尾的页面的数目或者会许多。小喵不喜爱这种技能。

  前端的话,左右轨范的Html,Css和Js就可以。配景是个API Server,Python + Flask 或许 Nodejs + Express 都是不错的采取(垄断起来很简易。。。),小喵这里就选用 Nodejs + Express 的方式编写背景(从来写Js就也许了 :P )。此外,大型的漫画网站,漫画的音书该当会存到数据库中,如此会简略摸索和摒挡。这里研商到漫画数目对照少,就去掉了数据库这一步骤,直接经过文件使用来取得漫画讯休,事情量也大大减省了。

  main.js这里就是靠山API的法度。因为成果很简易,因此就放在一个文件中。

  原生的 Nodejs 就已经出格适应写API标准了,Express 然而让它稀奇的简略了罢了(至少周旋这个项目来叙)。

  Nodejs的安装稀少简便,在官网上有下载链接,服务器上掌管apt-get等器械也很简便装配。

  之后独霸npm install使令就不妨完结装置。装置完成之后会发现根目录多了一个node_modules文件夹,里面便是全部人的依附库了。喵粉们假如下载了我们的这个项谋略话,第一步也是要进入项目目录然后输入npm install。

  我们的漫画资源都是经历漫画喵这个爬虫器具下载下来的,所以漫画都是每个章节都是一个文件夹,每个章节的漫画图片都放在对应的文件夹中,而且遵守页码来命名。

  漫画列表和章节中的图片列表都也许阅历上述的手腕来措置,不过章节的列表却不成。来源漫画的章节偶然候并没有判辨的秩序(例如突然展示一个番外篇啥的),如许遍历文件夹默认的次序(按名称)就或者是纰谬的。

  小喵选拔第二种战略,创建这个list的方式出格简易卤莽,在漫画目录下面应用:

  ls是linux上面的流露目录的用具,-t表明按功夫排序(最上面是最新的),-r表达倒序,是重定向,结果输出到index这个文件。而后编辑这个文件,删掉index这一行(编制宛如是教练成index这个文件,然后再推广ls,着末把见效输入到文件中,因而文件里面多了一个index的文件名),再做一些需求的保养。

  dir是windows的审查目录的使令,/OD表白按照岁月排序,/B表明只透露文件名,重定向到index。windows上的这个列表文件中也会呈现index这个文件名(看来各种专揽体例都平凡)。其它须要提防的是windows的换行和linux或mac不广泛。

  Express非常的粗略应用。这里小喵给一个官网的Hello World的教程让公共看一下:

  将上述代码生活成 main.js,操作node main.js就不妨启动这个轨范,然后用赏识器访问,就能看到一个流露着 hello world 的页面。

  require语句用来引入依靠,app是express的封装的主旨。履历app.get妙技就不妨给指定的url(官方说法叫route)绑定反映的惩办妙技(GET手法的请求)。处治函数有2个参数req表达request,也就是用户的哀求,履历这个想法你们或许取得用户的输入的参数,res表示response,是一个向用户返回数据的目标。

  这里小喵先给出自身定义的少许援助的函数,定义过错音问和参数校验,背后会操纵到:

  这个函数极端的浅易,经历fs读取store中的文件名,然后用json的名目返回回去。这里小喵用的jsonp,为了解决跨域央求的标题,然而大家的页面和工作是一台呆板的,所以这局部并不必要。

  这个接口用来得到漫画的章节的信歇,因此需求输入参数,这里定为cartoon。

  早先判决输入的参数,之后判断对应漫画的文件夹中是否有index这个文件,借使有的话就读取尔后返回给用户。

  这个接口用来返回漫画的归纳章节的图片的URL,用户需求输入漫画名(cartoon)和章节名(chapter)。提神要筑削我方的HOST的所在。

  这是片刻最搀杂的函数了,先检查参数,然后讯断漫画是否存在,再判决章节是否存在,列出章节文件夹里面的图片名,并按数字的顺序排序。最终构造成URL,返回给用户。

  public文件夹中的资源都是静态资源,用户可以阅历URL访问。在这里Nodejs也是帮助的:

  但是Nodejs自己并不适这种静态资源的处事,于是假设是生产境遇中,筑议公众照旧利用Nginx等用具,让Nodejs释怀的惩办交易逻辑吧。

  前端安排Ajax就可以很容易告终,自尊纵使是前端小白也能完毕,况且还比小喵做的漂后(无奈脸)。小喵运用了JQuery来处理Ajax的内容,界面库垄断了Metro,然则纵使如许也没有普及网站的颜值。

  有一点须要提神,在漫画图片的页面中,日常会显现多量的图片,假使但是简易的支配img标签的话,恐怕会导致赏玩器同时加载所有的图片,如若网快不好的话,我们的体验也会卓殊的差(局域网请看轻)。于是全部人垄断一种懒加载的计谋,只要可见的图片才会加载。尔后小喵就从github上找干系的插件,然后发明了一个支配对比容易的代码,另有总结的理由介绍,感旨趣的话群众可以看一下。

  至此,我们们就搭修好了一个也许随时嬉戏的小我漫画网站了。喵粉们感意义或许star、fork这个项目,借使喜好创办的话,能帮助一齐提升网站的颜值就更好了 O(_)O哈!

  其余,为了制止法度倏忽崩掉,提倡公众把持forever这个器械。02888福禄寿开奖,最放手的爱情散文精选作品,上面的过程的结尾一句node main.js就也许改成下面的。

  结尾,小喵再谈一句,这个项目有许多的缝隙,比如直接接见文件,Nodejs直接管理静态文件,需要供给稀罕的参数,没有验证用户等等。所以不切关真的天生中的左右。可是,自娱自乐应当是有余了。小喵本身是放在宿舍的树莓派里,睡前躺床上看会儿漫画。