艾特和回复

学习如何做一个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
2
3
4
5
// 使用atwho(),参数1:识别关键词,参数2:可被@的用户数组
$('#inputor').atwho({
at: "@",
data:['Peter', 'Tom', 'Anne']
})

前端使用at.js库做出接口

  1. 在views-layout-header.ejs中,引入所需:views-layout-header.ejs
  2. 在views-widgets-input.ejs中,使用at.js库:views-widgets-input.ejs
  3. 测试效果:先使用模拟数据data: ['Peter', 'Tom', 'Anne']:测试效果

开发接口

  1. 【路由层】创建/getAtList路由,调用controller层getFollowers函数,获取 at 列表,即关注人列表,返回前端需要的 字符串数组: routes-api-user.js:routes-api-user.js昵称有可能重名,所以需要将userName带上
  2. 测试:将zhangsan的昵称改为张三后,登录lisi帐号去@zhangsan:测试但是我们并不希望发布后的内容带着userName的后缀

@用户转为链接形式

  1. 在services-_format.js中,进行格式化微博内容=》格式化 @:format.js
    • 参数1(matchStr):符合正则表达式的字符串。
    • 参数2(nickName):符合正则表达式中第1个括号内(即(.+?))的字符串。
    • 参数3(userName):符合正则表达式中第2个括号内(即(\w+?))的字符串。
  2. 在services-_format.js中,调用:format.js
    • 正则表达式
    • 正则表达式解析
    • .:匹配所有字符
    • +:匹配多个字符
    • ?:贪婪匹配(遇到空格就停止)
    • \s:空格
    • \w:匹配字母和下划线
    • \b:英语字母结尾(单词结束)
  3. 前端显示格式化后的数据,views-widgets下blog-list.ejs:views-widgets下blog-list.ejs注意使用-而不是=,如果是等号,则html标签被当成字符串显示在页面上,使用-则html标签不会被转译,直接作为html标签插入模板
  4. 测试:测试数据库存储的是原始信息,显示的链接是前端设置的

回复功能

  • 实现思路:点击“回复”时自动往输入框中加入“//@xxx:微博内容”

步骤

  1. 回复是在微博列表触发的,所以先去views-widgets下blog-list.ejs,通过参数canReply来判断是否显示“回复”按钮blog-list.ejs只有首页才有回复功能,广场页未登录不会有回复功能,个人主页都是自己的,不能自己回复自己
  2. 【拼接内容=》放入输入框】 views-widgets下blog-list.ejs,点击回复的click事件后blog-list.ejs
  3. 【放入输入框后=》鼠标移到最前端方便输入】views-widgets下blog-list.ejs,views-widgets下blog-list.ejs,
  4. 测试:测试
,