首页如上图,想要实现的功能是点击左侧不同标签,右侧显示与该标签相关的内容
网站是用node+express+mongodb做的,我对后台不太了解,不知道这个功能的实现逻辑,整个流程是怎么走的。 现在能想到的就是:点击标签,触发click事件,接下来应该怎么走,如何与后台数据库衔接上就不知道了,麻烦大家指导下,谢谢了
- 页面不刷新的话,用ajax异步加载就好,还有一门技术 jquery-pjax 也可以不刷新页面实现动态加载
- 页面刷新,只需要把左边标签的标识(id/name)带到后台去查询数据库,然后在渲染到页面右边就好
两种方式:
1.后端路由,左侧不同item对应不同的地址
/home /hot /img … 点击后跳转到对应的地址。页面会重新刷新。
2.前段路由,单页应用,页面在前段渲染,实现方式有很多种,例如使用锚点做路由
/index#home /index#hot /index#image 检测锚点变化,请求数据在前段渲染页面,整个页面不会重新加载 这里实现方式有很多种
估计你想要的是第二种效果
@liygheart 嗯,我是想通过异步加载的,但是我不清楚这个过程是如何触发到后台去进行查询数据的 比如: 前端: ··· js $(’.item1’).click(function(e) { var target = $(e.target), tag = target.data(‘weekly’);
$.ajax({
type: 'GET',
url: '/?tag=' + tag
});
});
那后台应该是做什么样的处理,或者是什么事件触发后台执行查询的
@TakWolf 不是很明白,用锚点的话路由应该怎么写呢,首页的路由相关代码如下: ··· js // config.js app.get(’/’, Index.index);
```` js
// index.js
exports.index = function (req, res) {
if (req.session.user) {
var userId = req.session.user._id,
writeCount;
Article.find({author: userId}, function(err, result) {
writeCount = result.length;
})
}
Article.find({})
.sort({_id: -1})
.populate('author', 'name avatar')
.exec(function(err, articles) {
res.render('index', {
articles: articles,
writeCount: writeCount
});
});
};
// index.jade
each item in articles
.col-md-6.col-lg-6
.yue-content-post
.user-info
a(href="/userhome/#{item.author._id}" target="_blank")
img(src='#{item.author.avatar}').user-logo
span.user-name #{item.author.name}
span.post-time #{moment(item.meta.updateAt).startOf('hour').fromNow()}
.article-title
a(href="/post/#{item._id}" target="_blank") #{item.title}
a.img-box(href="")
img.img(src="/images/post-img-1.jpg")
.post-footer
a(href="")
span 阅读
span (#{item.pv})
a(href="")
span 评论
问题较多,主要是不清楚前端到后台这个过程是如何实现,还请兄弟解答,谢谢
angularjs或者react-router吧,看看。。自己写前端路由有点麻烦
@alanyang 这两个框架都没用过,angular最近才开始学的,如果用异步的话,思路应该是咋样的