nodebb源码阅读(3)


通过前几天的学习和探索我知道要向nodebb里添加“回复post”的功能就要编写新的插件,参考nodebb编写插件,以及源码里现有插件的编写方式,目录结构如下:

nodebb源码阅读(3)_第1张图片
写在nodebb/node_modules/目录下的插件

具体写法可分为以下几步:

  • 找到合适的钩子放在plugin.json里,我找到三个要用的钩子,其中"hook": "filter:post.getPosts"可以在用户点击某一个topic是获取到整个页面所有topic的信息
{ 
 "id": "nodebb-plugin-post-comments", 
   "library": "./library.js",  
   "hooks": [    { "hook": "filter:scripts.get", "method": "addScripts" },   
                 { "hook": "static:app.load", "method": "init" },    
                 { "hook": "filter:post.getPosts", "method": "showPosts" } 
            ],  
"staticDirs": {    "lib": "public/lib"  }
}
  • 去library.js里实现hooks里的method,addScripts函数主要负责将main.js文件加入进来;init是一个初始化函数,showPosts函数中要用到init传过来的app;showPosts里是一个get请求,当用户触发一个topic页面时,将所有posts数据传至main.js(前端)进行处理(处理这个get请求的前提是在main.js里有一个对应的ajax请求)
var bodyParser = require('body-parser');
var app;

var comments = {
    addScripts: function(scripts, callback) {
    scripts.push('plugins/nodebb-plugin-post-comments/lib/main.js');
    callback(null, scripts);
    },

    init: function(params, callback) {
        app = params.router,
        callback();
    },

    showPosts: function(data,callback) {

        app.get('/post/getComments',function(req,res,callback) {

            res.json(JSON.stringify(data));
        })
        callback(null, data);
    },
};

module.exports = comments;
  • 对后端传过来的数据进行渲染(目前未实现,后续更新......)

你可能感兴趣的:(nodebb源码阅读(3))