学习如何做一个node微博项目中
@功能(输入@&显示@)
- 输入@&显示@: 可在输入框输入@后,给显示在页面上的@加超链接
at.js库
- github中搜索at.js
- 使用方法:
1
2
3
4
5// 依赖于jquery
<link href="css/jquery.atwho.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery.js"></script>
<script src="js/jquery.caret.js"></script>
<script src="js/jquery.atwho.js"></script>
1 | // 使用atwho(),参数1:识别关键词,参数2:可被@的用户数组 |
前端使用at.js库做出接口
- 在views-layout-header.ejs中,引入所需:
- 在views-widgets-input.ejs中,使用at.js库:
- 测试效果:先使用模拟数据
data: ['Peter', 'Tom', 'Anne']
:
开发接口
- 【路由层】创建/getAtList路由,调用controller层getFollowers函数,获取 at 列表,即关注人列表,返回前端需要的 字符串数组: routes-api-user.js:昵称有可能重名,所以需要将userName带上
- 测试:将zhangsan的昵称改为张三后,登录lisi帐号去@zhangsan:但是我们并不希望发布后的内容带着userName的后缀
@用户转为链接形式
- 在services-_format.js中,进行格式化微博内容=》格式化 @:
- 参数1(matchStr):符合正则表达式的字符串。
- 参数2(nickName):符合正则表达式中第1个括号内(即
(.+?)
)的字符串。 - 参数3(userName):符合正则表达式中第2个括号内(即
(\w+?)
)的字符串。
- 在services-_format.js中,调用:
- 正则表达式解析:
.
:匹配所有字符+
:匹配多个字符?
:贪婪匹配(遇到空格就停止)\s
:空格\w
:匹配字母和下划线\b
:英语字母结尾(单词结束)
- 前端显示格式化后的数据,views-widgets下blog-list.ejs:注意使用
-
而不是=
,如果是等号,则html标签被当成字符串显示在页面上,使用-
则html标签不会被转译,直接作为html标签插入模板 - 测试:数据库存储的是原始信息,显示的链接是前端设置的
回复功能
- 实现思路:点击“回复”时自动往输入框中加入“//@xxx:微博内容”
步骤
- 回复是在微博列表触发的,所以先去views-widgets下blog-list.ejs,通过参数canReply来判断是否显示“回复”按钮:只有首页才有回复功能,广场页未登录不会有回复功能,个人主页都是自己的,不能自己回复自己
- 【拼接内容=》放入输入框】 views-widgets下blog-list.ejs,点击回复的click事件后:
- 【放入输入框后=》鼠标移到最前端方便输入】views-widgets下blog-list.ejs,
- 测试: