簡體   English   中英

客戶端與服務器端數據操作

[英]Client-side vs server-side data manipulation

我剛剛學習了如何在客戶端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負載和服務器負載之間是一種平衡,但是必須有一些最佳實踐 如果我不清楚,請告訴我。 謝謝!!

以我的經驗,您不能采取“一刀切”的方法。

在您發布的示例中,您將結果限制為6,並截斷為100個字符。 做6片,對於任何一方在CPU方面都不是一個大打擊。 如果item.description可能每個都有數千個字符,則請在分片服務器端進行操作,以防止不必要的數據流。 或者,如果成千上萬的用戶可能同時調用此代碼,並且item.descriptions接近100個字符,則讓成千上萬的Web瀏覽器完成工作。

對您的項目一無所知,是否有可能根本不分割描述? 您可能需要在彈出窗口中使用整個描述,或者可以在某些搜索/過濾器機制中使用它。 如果您的設計指示字符串需要截斷,那么讓CSS來完成該任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM