离上篇文章都已经一个多月了啊,最近都在玩mho,也没什么时间来做这个。不过目前还是把基本的功能都给实现了,做了一个展示页面。

和以前说的一样,后端是使用Laravel框架实现的api服务器,前端是用vue.jssemantic-ui实现的页面。
点此访问

后端

Laravel也不是第一次用了,还是挺熟悉的,不过也碰到过一些问题,这里记录一下。

  • 数据库配置:api返回错误信息The Response content must be a string or object implementing __toString()时,首先还是要检查一下数据库的配置是否正确。我这里将动漫排行的数据放在了一个独立的数据库中管理,所以要在laravel里额外配置不同的数据库连接,这里会十分容易出错。
  • 跨域请求:使用ajax请求不同域名的api时需要注意下跨域请求的问题,为了能进行跨域请求,返回的header里需要有Access-Control-Allow-Origin这一项来确定允许跨域请求的域名。我这里为了方便,让所有api能让所有域名访问(方便本地测试),直接修改nginx的配置文件,在location中添加一条add_header Access-Control-Allow-Origin *;就ok了。

前端

前端的css库使用了某人推荐的semantic-ui,我也没用过bootstrap,所以用什么都无所谓,不过semantic比起bootstrap的资料真是少。
然后是vue.js,数据的双向绑定和定义组件都是非常好用的,我没有用过其他类似的库,所以也不好比较。

虽然没有必要,但还是试着用了webpack管理项目,这个库简单来说就是将一堆js和css文件打包的一个js文件中,在发布时你的页面中只要引用一个打包后的js文件就行了,对于非常复杂的单页应用来说,这是个能减少项目复杂度的工具。

然后讲讲问题

  • 渲染速度:原本我想把1000多项数据直接展示的,不过渲染速度还是有限,vue.js渲染1000项的列表也得要接近2秒的时间,于是想想还是分页了。
  • 提示框:在页面中使用了semantic的提示框组件,不过使用的时候仅仅在html中添加data-titledata-content并没有什么用,还要调用这些节点的popup()函数。但是节点都是通过vue.js之后动态生成的,那要怎么在渲染完成后调用呢?
    这里可以使用vue.js提供的自定义指令实现,注册一个指令,在bind接口中调用就ok了。

其他

本来想借用下Bangumi的图片的,不过没法跨域请求,那就没办法了,之后有空就去爬取一遍吧。

剩下还有个留言评论的模块,没时间就用多说来做了。

PS: 最近一直在玩mho 华东一 隐士之森 id: 心悦会员 欢迎找我玩
PS2: steam也开始打折了,不过启示录2怎么就第一章打折啊,卡表还是坑。