github项目地址:
https://github.com/tangguangyao/stock
PS: 前端和后端代码中都有很多的不足,感谢几位高手的评论和指导,angularjs有很多不足的地方,需要重构。
功能:
1 股票页面聊天室功能: a. 聊天室以股票为单位,同一个用户可以进入多个股票的聊天室进行聊天 b. 聊天记录可以设置缓存数量,默认为20条,如果超过20条会存储到数据库中,当聊天室中没有用户也会将聊天内容存入数据库中
2 聊天室代码: https://github.com/tangguangyao/stock/blob/master/models/socket.js
3 微博类似的话题,评论,回复,转发功能,前端使用angularjs绑定实现
4 页面实时交互,包括关注股票,关注用户功能
5 股票页面能查看讨论这个股票的话题
6 个人页面能查看我关注的用户的话题,关注股票的相关话题,我的话题,@我的话题
7 加入grunt管理代码,引入uglify压缩代码,jshint检测代码规范,watch监听代码变化
8 使用mocha检测后端代码 检测代码在test中 总结mocha单元测试经验
http://hi.baidu.com/tang_guangyao/item/302a9d1a9976c06ae65e0643
9 加入async流程控制,对于需要多次回调查询数据库的进行重构
10 尝试bigpige,首页利用bigpipe,加载热门股票和热门用户,并且和angular结合使用
11 使用外网免费数据库https://app.mongohq.com
12 跨域请求的雪球网具体股票数据
更新说明:因为股票具体数据是跨域请求的雪球网接口,雪球接口的参数会定时改变,所以对接口参数处理了一下,放入views的top.ejs文件中。
目前还在持续维护,添加新的npm插件,实现新功能
安装方法:
安装依赖
npm install
启动程序
node app.js
恩~这个项目弄得是多页的,所以没有用上路由这一部分,页面主要使用了angular一些数据的绑定。
我现在准备好好的重新重构下前端的代码,把里面的一些结构梳理一下,
谢谢高人指点哇~我学习node看了你很多文章的~再次膜拜下~
恩~非常感谢中肯的建议,正在考虑重构前端,准备作为单页面形式,用router控制。
控制器这块有些疑惑想请教下:
我之前考虑把控制器范围扩大的原因是,页面上不同地方的数据模块都能很好的互相处理
如果控制器范围小了,例如A控制器中模块需要B控制器中的数据,两个控制器数据就比较难处理,如果我把控制器范围增大,就可以在这大范围内,随意处理数据了
所以我就把控制器扩大到整个页面上了~
求教高手指导
@guang152252326 算不上高手也就是最近在学习这个
你的问题是作用域之间的数据共享吧
有几种方法: 1.通过创建服务来共享数据; 2.通过作用域上的事件进行交互; 事件交互不能向所有的监听作用域之间进行传播,只能在父子作用域之间进行。 Angularjs在scope中提供了冒泡和隧道机制,$broadcast会把事件广播给所有子controller,而$emit则会将事件冒泡传递给父controller,$on则是angularjs的事件注册函数 3.通过cookie方式记录状态 4.angularjs的作用域有继承性,子作用域可以访问父作用域的数据(这个应该是你使用的)
方法1 一般用来从同后台获取数据
方法2 通过消息的方式将不同控制器进行解耦
比如 a控制器数据变化影响到 b控制器里的数据或者其他控制器里的数据,那么可以定义一个fatherctr
emit broadcast
a --------------> father ctr -------------> b or c or d
方法4 比较常用的数据共享,不是不能用而是要考虑是否真的是父子关系,任何情况下都要尽量避免过大的作用域出现