0

AngularJS が単一ページのルーティングを処理する方法と、それがサーバーから典型的な css/javascripts ファイルを取得する方法とまったく同じであるかどうかについて、概念的な不確実性があります。

レンダリングされた html ファイルに次のソースがあるとします。

/javascripts/client.js
/css/main.css

サーバーでそれらをリッスンする必要はありませんでした(Expressでは、このように):

app.get('/:dir/:name',function(req,res){
 if (req.params.dir == 'javascripts){
  //render the client.js
  //....
  //render the main.css
 })

Express はどこでそれらを探すべきかを知っていて、私の背後でそれらを取得しました。あれらを聞いてみても、なぜか捕まえることができませんでした。

一方、AngularJS でルートを作成すると、次のようになります。

.config(function($routeProvider){
$routeProvider.when('/write',{templateUrl: '/templates/mainpage'})  
});

バックエンドでリッスンし、手動で取得する必要があります。私はこれを書かなければなりません:

app.get('/templates/:name',function(req,res){
 res.render('templates/'+req.params.name');
});

この違いをどのように理解できますか?

どんな光にも感謝します!

4

1 に答える 1

3

Express はあなたの背後で何もしません。Express は、次のように定義して、どこでも検索できるように Express に指示したため、これらの静的ファイルを検索する場所を知っています。

app.use(express.static(path.join(__dirname, 'public')));

これをしないでください:

app.get('/templates/:name',function(req,res){
 res.render('templates/'+req.params.name');
});

静的な html テンプレートを作成し、パブリック フォルダーに配置します。エクスプレスがそれらを提供します。テンプレートにサーバーからの json データを入力します。

エクスプレス ビューと angularjs テンプレートを混在させています。どちらも異なる用途向けに設計されています。

于 2013-10-29T17:39:37.940 に答える