2

Express.js (3.0) を使用して Node Web アプリを開発しています。両方のユーザー プロファイルにクリーンな URL が必要です。

domain.com/ユーザー名

各ユーザーが作成および共有するページについても同様です。

domain.com/ユーザー名/ページ名

domain.com/profile/usernamedomain.com/pages/username/pagenameのようなものを使用するよりも、きれいな URL を本当に好みます。

開発用の現在のルート構成は、次のようにブートストラップされます。

app.get('/', content.home);
app.get('/about', content.about);
app.get('/signup', users.signup);
app.get('/login', users.login);
app.get('/:user', users.profile);
app.get('/:user/:userpage', userpage.render);

最後の 2 つはすべてのルートをキャッチします。これで問題なく動作しますが、設計または実装が悪いのかどうかはわかりません。

さらに重要なことは、「連絡先」、「採用情報」、「キャンセル」、「価格設定」など、将来の使用のために 100 ほどのページ名を予約しておきたいということです。これらのページで開始する予定はありませんが、ユーザー プロファイルまたはユーザー生成ページとして評価されるのではなく、これらの要求をキャプチャしてプレースホルダー ページに送信するルート ファイルを作成できるかどうか疑問に思っています。

もちろん、これらのユーザー名が作成されないようにすることはできますが、ルーティングにも創造的なアプローチが必要であり、キャッチオール ルート レベル ルーティングを使用する場合のその他の考慮事項を理解する必要があります。ユーザーとページが存在しないオブジェクトまたはページを検索します。

4

2 に答える 2

2

できることは、次のコードスニペットのようなものです。それはコーヒースクリプトにありますが、一般的な理論は同じです。

placeholder = (req, res, next) ->
  res.render 'placeholder'

reserved = ['/contact','/careers','/cancels','/pricing']

each page in reserved
  app.get page, placeholder

app.get '/:user', ....

プレースホルダーページを追加する場合は、そのページをその配列に追加して、アプリケーションを再起動します。

于 2012-11-03T00:36:36.853 に答える
0

100% 確実ではありませんが、すべてのルートを :user の上に置くと、ページ名を登録したユーザーは表示されません。

于 2012-11-03T01:43:50.320 に答える