title: Socket.io+vue打造新闻社区
date: 2017-06-12 20:19:05

tags: [vue.js,javascript,socket.io]

vue2.0 + socket.io打造一个DIY新闻社区(web第一版)

学习vue快有一个多月了,想着动手做一个DIY项目,就选择了做一个新闻方面的社区,很多不足的地方,希望大家
见谅,但是对于初学的小伙伴来说,相信还是可以帮助到大家,毕竟我只是一个爱分享的小学渣。
### 效果预览

演示地址

源码地址

### 项目描述



前端部分

  • SPA单页应用,前后端的分离, webpack build to dist

  • 移动设备兼容:使用flexible.js和rem处理兼容问题

  • axios做ajax请求

  • 使用了 Vuex 管理组件间的状态,实现非父子组件之间的通信

  • canvas实现了一个页面加载的时间动画

后端部分

  • 直接搭建在自己的服务器上,API数据是聚合上的数据

  • express 做静态资源目录

  • 启用了socket.io实现一个简易的聊天窗口

待更新的功能

  • 用户登录功能,目前收藏只能保存在localstore里面

  • 用 express + mongodb 保存用户状态

  • 用户的评论功能

具体功能的实现

使用了Vue组件化开发的概念,将端后端分离开,样式统一放在一个单独的文件夹,方便管理的复用,使用vuex
统一做一个资源管理,当各个组件需要数据时就向vuex仓库请求,极大的方便了管理,模块化更加的清晰明了。

const store = new Vuex.Store({state: {// url: [require('../../pic/home_1.png') , require('../../pic/home_2.png')],Title: '云新闻',newslist: [],url: [require('./pic/like_1.png') , require('./pic/like_2.png')],isShowAsideMenu: false,isShowAbout: false,ischangeC: false,tab: 'top',Tab: 'guoji',title: '云新闻',showmenu: true,showback: false,msg: true,ismore: false,hid: true,hod: false,hmd: false,bgColor: '',like: 0,status: '收藏',v1: true,isshowf: true,isLoading: false,isShare: false,isCollection: false},

vuex的使用

  • 需要注意的地方:Action提交的是mution,而不是直接的状态变更

  • Action 可以包含任意异步操作。

socket.io的使用

利用socket实现了简单的聊天功能,在同一个服务器下。看看新闻的同时还可以相互讨论一下,这是在后端请求,当然你
得事先安装一下socket了 npm install socket.io --save

var server = http.createServer(app)
var io = require('socket.io')(server)io.on('connection', function(socket) {console.log('启动了Socket.io');socket.on('sendGroupMsg', function(value){this.broadcast.emit('receiveGroupMsg', value);})// socket.broadcast.emit('user connected');
})

前端再运用

  socket.emit('sendGroupMsg', this.value.trim());socket.on('receiveGroupMsg',() => {...})

前期我遇到的问题(分享一下)

  • API存在跨域问题啊,新手肯定有这样的疑惑,这可怎么决解?

遇到这个肯定是要现在自己的后台对这个数据进行处理一下吗,不然你自己的前端根本访问不了那个接口,相
当于自己做一下转接。其实也挺容易的
(后端处理接口)

apiRoutes.get('/news/:type', (req, res) => {let type = req.params.type;function search(tab) {return new Promise((resolve, reject) => {let searchResult = '';url = 'http://v.juhe.cn/toutiao/index?type='+ tab +'........';http.get(url, response => {response.on('data', data => {searchResult += data;});response.on('end', () => {resolve(searchResult)})})})}search(type).then(searchResult => {res.json(JSON.parse(searchResult))})
});app.use('/api', apiRoutes);

(前端请求自定义路由)

this.axios.get('/api/news/' + type).then(data => {// console.log(data);if(data.status) {this.$store.commit('changeTab', {news: data.data.result.data, type: type, isloading: false})this.$store.commit('details', {data: this.$store.state.Title, fa: true, fb: false, fc: true,})}})

刚学的小伙伴们是不是瞬间觉得还是自己可以处理的呢,实在不行你就把我的项目拷到自己的目录下安装运行一
下,再研究一下。但是一个很难受的事就是我请求的API放在自己的网站服务器上,由于我的域名是https的,API
里面的文章详情的地址是http,还没备案,存在打不开的缺陷, 但是你们自己拷贝到自己的电脑下正常安装依赖
运行还是没问题的了,请谅解,不是不可以访问哦。

安装并运行

# install dependencies
npm install# serve with hot reload at localhost:8080
npm run dev# build for production with minification
npm run build# build for production and view the bundle analyzer report
npm run build --report

vue.js+socket.io打造一个好玩的新闻社区相关推荐

  1. vue.js+socket.io+express+mongodb打造在线聊天[一]

    vue.js+socket.io+express+mongodb打造在线聊天 在线地址观看 http://www.chenleiming.com/vuechat github地址 https://gi ...

  2. 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(一)

    这几篇都是我原来首发在 segmentfault 上的地址:https://segmentfault.com/a/1190000005040834 突然想起来我这个博客冷落了好多年了,也该更新一下,呵 ...

  3. 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三)

    前篇 使用React.Node.js.MongoDB.Socket.IO开发一个角色投票应用的学习过程(一) 使用React.Node.js.MongoDB.Socket.IO开发一个角色投票应用的学 ...

  4. 使用JS+socket.io+WebRTC+nodejs+express搭建一个简易版远程视频聊天

    目录 WebRTC 代码原理及流程 源码:git@gitee.com:DieHunter/myCode.git仓库:myCode/videoSteam 前端 先附上HTML和CSS 完整的socket ...

  5. 视频教程-Node.JS - socket.io教程-Node.js

    Node.JS - socket.io教程 全栈开发工程师,现职于北京一家学院的全栈教学主任. 8年前端开发经验.4年移动端开发经验.4年UI设计经验.3年一线教学经验. 精通Node.JS.PHP. ...

  6. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. 作 ...

  7. 使用socket.io做一个简单的WEB聊天室

    使用socket.io做一个简单的WEB聊天室(可消息私发) 1. 创建一个空的工程目录 空的目录命名为chat-web 2. 创建package.json 使用命令:npm init,会引导你设置p ...

  8. vue.js — 安装Webpake创建一个完整的项目并上传至码云

    vue.js - 安装Webpake创建一个完整的项目并上传至码云 今天总结一下之前几天学习的一整套的创建项目方法: 前提条件:已安装node.js.npm/cnpm最新版本.vue-cli. VS ...

  9. 使用socket.io搭建一个实时聊天机器人

    一.安装socket.io npm i socket.io --save 二.使用 第一种:服务端使用原生node // 创建http服务器 const http = require('http') ...

最新文章

  1. vs2010 学习Silverlight学习笔记(7):控件样式与模板
  2. Ubuntu16.04 配置vnc4server
  3. Yarn管理界面中Queue:root和Queue:default的区别
  4. vue 悬浮按钮_Vue@哇!几行代码实现拖拽视图组件
  5. 从零开始 - iOSRTMP推流篇(1)
  6. 苹果重奖库克,挽留其留任到2025年,网友:雷军又没机会了
  7. 新款iPhone SE发布日期曝光:小屏果粉早已按捺不住
  8. Java007-面向对象(多态)
  9. Java实现中文汉字转换拼音,解决多音字问题
  10. CenterOs操作
  11. 移动通信技术的未来发展趋势分析
  12. 2013大数据全球技术峰会PPT
  13. jsp中使用setAttribute发生错误
  14. linux 离线迅雷下载软件,Linux 迅雷离线客户端!!!!!!!!!!!!
  15. $ is not defined
  16. 【软件工程】绘制状态转换图
  17. 函数的应用及其解析大全!
  18. 家用无线TP-LINK路由器使用一段时间后,频繁断网解决办法之一
  19. 九度 1365 贝多芬第九交响曲
  20. 计算机基础多媒体硬件,计算机基础:多媒体基础知识笔记

热门文章

  1. 搭建Hadoop的Eclipse开发环境
  2. 重温目标检测--YOLO v2 -- YOLO9000
  3. 空间映射网络--Spatial Transformer Networks
  4. Android Studio报错解决:droid.tools.idea.welcome.install.WizardException: SDK tools directory is missing
  5. 我看过的C++方面的好文章
  6. android跨域 元素,Android之app作为服务器解决跨域问题
  7. perl 连接mysql_perl如何连接mysql数据库?
  8. android+布局分块,android的List View的Item布局问题
  9. Docker创建Docker-Registry-私服
  10. Spring-bean作用域