簡體   English   中英

在后端或前端列出集合

[英]List a collection in backend or in frontend

我是NodeJS的新手,我需要一些建議。 我有一個頁面顯示一個用戶列表,我使用Mongoose從集合中檢索此列表。 我知道兩種顯示此列表的方法:

1)在加載頁面之前在后端進行查詢,然后將結果發送到視圖:

// app.js
var users = Users.find({}, function(err, results){
    res.render('list', { users: results});
});

2)加載頁面后,以異步方式在前端進行查詢。 示例,使用角度

// users.js
var User = $resource('/getUsers');
User.query(function (results){
    $scope.users = results;
});

// users.html
<ul>
    <li ng-repeat="user in users"{{ user.name }}></li>
</ul>

// app.js
app.get('getUsers', function(req, res){
    Users.find({}, function(req, results){
        res.json(results);
    })
});

我希望一切都清楚。 就最佳實踐和/或性能而言,最佳方法是什么?

謝謝

從用戶體驗的角度來看,首先總是在服務器上進行渲染,然后僅在內容更新,在客戶端上進行渲染(或者實際上是在服務器上查詢更新的HTML內容)時,總是比渲染更好。在客戶端上)。 完整的客戶端渲染通常會導致頁面加載時間更長,在客戶端(尤其是在移動設備上)上使用大量的CPU資源,並且由於異步請求和頁面上的許多部分更新而經常閃爍。

話雖這么說,在某些情況下,客戶端呈現是有意義的,例如,某些內容太長而無法一次加載,並且最好顯示頁面和進度指示器,例如“我們正在加載您的數據...” 。 但是,對於大多數面向內容的網站和門戶,幾乎完整的服務器端渲染是一種更好的方法。

為了在這里扮演惡魔的擁護者,我將不得不不同意@Andrew Skylyarevsky。

我認為以內容為導向的網站平均來說,比服務器端應用程序更像是前端繁重的應用程序。 如果向用戶提供的頁面內容經過大量自定義以滿足他們的需求,而性能是您的目標,那么從為客戶提供加載頁面和進行交互所需的最少內容的服務中,您將獲得最佳的用戶體驗。 所有進一步的數據都應通過asyc調用返回,例如您在前端重型應用程序中看到的那樣。 如果它是服務器端渲染的繁重應用程序,那么作為用戶,您將期望后續對內容的請求導致服務器端頁面重新加載。

我同意@Andrew的觀點,前端方法的缺點之一是初始加載時間,用戶必須等待數據返回並呈現。 但是,可以並且應該通過各種技術來減輕這種情況。 服務器與前端的實現與開發人員所做的工作量和復雜性差不多。 但是,如果您正在尋找對用戶(性能高手)近乎仿佛的體驗,則需要一個良好的實施方案並仔細考慮前端繁重的應用程序。 某些事情仍然應該在后端完成,但是大多數技術都發生在前端。 一種這樣的方法就是為用戶提供盡可能少的服務,並在后台觸發后續請求。 調整這種體驗並不容易。

我應該注意,我來自從事多個位於瀏覽器前端的企業級應用程序的工作背景。 我還將許多服務器端應用程序遷移到了前端應用程序,並且看到了性能和用戶體驗方面的好處。 所以我有偏見。 只是需要深思。

暫無
暫無

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

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