我刚学会了如何在客户端JS中访问快速局部变量:
https://stackoverflow.com/questions/34618426/express-handlebars-local-variables-in-client-side-js
但这开启了一整套新的蠕虫...现在我不知道服务器端(在路由中)和客户端做什么数据操作。
例如: 在这里,我将切割每个数据库项的description属性,以便前100个字符可用作特色列表拼贴中的预览。
//routes/index.js
router.get('/', isAuthenticated, function (req, res, next) {
//Fetching data to populate newest listings collage
User.find({role: 'organization'}).sort({datecreated: -1}).limit(6).exec(function (err, docs) {
docs.forEach(function(item){
item.description = item.description.slice(0,100);
});
console.log(docs[0].description);
res.render('index.hbs', {
user: req.user,
orgsfeatured: docs,
message: req.flash('message')
})
});
});
将整个对象数组发送到客户端javascript以进行切片是否更典型/高性能/可维护?
我知道在运行客户端CPU负载与服务器负载之间取得平衡,但必须有一些最佳实践。如果我不清楚,请告诉我。 谢谢!
答案 0 :(得分:1)
根据我的经验,你不能采取“一刀切”的方法。
在您发布的示例中,您将结果限制为6,并截断为100个字符。做6片,对于任何一方而言都不会是CPU的明智之举。如果item.description
每个可能有数千个字符,则执行切片服务器端,以防止不必要的数据流。或者,如果成千上万的用户可能同时调用此代码,并且item.descriptions
接近100个字符,请让成千上万的Web浏览器完成工作。
对项目一无所知,是否可以不对描述进行切片?您可能需要弹出框中的整个描述,或者可以在某些搜索/过滤机制中使用它。如果你的设计要求字符串需要截断,那么让CSS完成这项任务。