盘点个人博客搭建中的坑

4 分钟阅读

最近也是抽了很多时间打造自己的个人博客

大概用了四天左右把,终于也算是大概的功能方面都实现了,虽然功能还很简单吧。不过总算是有个样子能暂时用一下了。下面就来盘点一下自己遇到的一些坑把。最大的坑还是在服务器部署这一块。之前确实也不了解这些问题 以为和本地一样跑起来就可以了。实际跑起来是不太一样的流程,也算是给自己的知识面有了一些新的拓展吧

项目这边主要用的还是vue全家桶来做的,后端这边就是express+mongoDB,因为可能刚刚接触,可能有很多方面实现的还不够优雅,尤其是在vuex这方面来说可能使用的还是有待商榷吧,我把基本所有的状态都存在了vuex里,现在在考虑是不是有必要,因为感觉不是全局状态好像没什么必要放在vuex里,但是又感觉放进去管理起来很方便,这个暂时先放在一边把,待我搜集一下资料,会后续发文说明一下这个问题。还有就是MongoDB这边来说,表的结构感觉设计的还是有点问题,我不太了解实际评论和文章的查询关系是怎样的,我是直接文章链接了评论来做了一个连表查询,不知道后端实际做的时候是把所有评论返回然后按照文章ID来渲染还是怎样的,不过好在实现了,我个人感觉自己这种方式用的时间还是比较短一些的。

另外就是

  1. 首先遇到的就是一个很简单的问题吧,让我一度想死掉的小问题,在传值的时候我使用了直接在路由的path里拼接了一个参数,这种形式:{path:'article?id=12345678'},后来一直取不到值,发现自己一直取的是routeparams,这种直接拼接成参数的形式应该用query来取值
  2. 还有就是MongoDB的连表查询问题,MongoDB不允许链接相同表中的其他数据,在连表查询时要用到populate()方法,如果有多级嵌套查询,populate()方法需要传入参数来做一个deepPopulate,类似这样
text
User.findOne({ name: 'Val' })
    .populate({
      path: 'friends',
      populate: { path: 'friends2' }
    });
    //这样才能才返回正确的文档 否则只会返回对应的_id,而且要注意连表查询时添加的时候也只需要添加对应数据的_id即可
  1. 关于vuex,要使用的state请务必在计算属性里声明,或者在其他的地方调用一次也可以,否则如果直接用在一些条件判断里无效
  2. 部署问题可能是我遇到问题最多的地方,由于以前都是用的wordpress这种 傻瓜式博客,所以我对于服务器配置基本属于一无所知状态,懵逼ing。开发用了四天部署竟然用了一整天也是醉醉的呢。最开始的问题就是在ftp上传的时候创建不了文件夹,发现没有权限,但是用ftp调整权限无效,度之,发现要用到chmod指令来设置一下权限才可以,遂chmod -R 777 *,问题解决。但是也引发了更严重的问题,由于linux中的ssh不可以具有777权限,否则会引发系统无法登录,所以也被这个坑了一下,而且由于是网上的服务器不是本地的虚拟机,还无法直接进到硬盘调整文件,只能重装系统,导致前边所有的工作都白费了。这点大家如果不了解还是要多多注意不要和我一样前功尽弃。吃一堑长一智,也希望我自己以后不要再犯这种错误。
  3. MongoDB的配置文件中的logpath一定要确实的指向一个文件而不是一个目录否则mongoDB无法正常启动。
  4. 项目上线后由于前后端分离,所以我们还要去配置nginx反向代理,这里就不给大家详细赘述了,提供一个大概的模板,大家自行把他插入到nginx的配置文件里即可。
text
 location /article #请求的地址{
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
       proxy_pass http://127.0.0.1:3000; #要代理的端口,即node服务的端口
       proxy_redirect default;
    }
  1. vuex中的action问题:发现在提交文章时虽然已经提交,但是扔提示未提交,发现action中直接return了response,正确方式是在Promise的resolve中传入参数,问题解决

目前发现的问题大概就是这些,其他问题等后续博客继续完善时会继续补充,希望对大家有所帮助。

相关文章