客户端与服务器端数据操作

时间:2016-01-05 19:59:38

标签: javascript node.js express

我刚学会了如何在客户端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负载与服务器负载之间取得平衡,但必须有一些最佳实践。如果我不清楚,请告诉我。 谢谢!

1 个答案:

答案 0 :(得分:1)

根据我的经验,你不能采取“一刀切”的方法。

在您发布的示例中,您将结果限制为6,并截断为100个字符。做6片,对于任何一方而言都不会是CPU的明智之举。如果item.description每个可能有数千个字符,则执行切片服务器端,以防止不必要的数据流。或者,如果成千上万的用户可能同时调用此代码,并且item.descriptions接近100个字符,请让成千上万的Web浏览器完成工作。

对项目一无所知,是否可以不对描述进行切片?您可能需要弹出框中的整个描述,或者可以在某些搜索/过滤机制中使用它。如果你的设计要求字符串需要截断,那么让CSS完成这项任务。