2016-08-17 18 views
2

私はExpress.jsを使用して単一のページアプリケーションを構築しようとしています。私のindex.htmlページには、基本的なフォームがあります。このフォームは、送信時にAPIにリクエストしてデータを取得し、解析した後、解析されたデータをリンクのリストとしてレンダリングします。今ではインデックスページをレンダリングすることができ、ページに追加したフォームからAPIへのサブミットコールを行うことができます。私が混乱しているのは、API呼び出しから取得したデータを適切にリダイレクトして、同じページにレンダリングする方法です。私は、複数のビューが存在する前にExpressを使用してシンプルなアプリケーションを構築しましたが、1つのページアプリではありません。これらのアプリケーションでは、レスポンスのためにres.render(「レンダリングするビューの名前」、データ)を呼び出すことができますが、この場合は機能しません。私はこのサイトとExpressドキュメントを使っていくつかのソリューションを見つけようとしましたが、Angularのような別のフレームワークを使用していないものは見ていません。このアプリの目的のために、私は追加のフレームワークを含める必要はなく、私は少し失われています。Express.jsを使用してシングルページアプリケーションのルートを正しく設定するにはどうすればよいですか?

APIを呼び出すための私の関数は、今のところこのようになります。それが呼び出されると、私はちょうどあなたがしなければならない基本的なことがある

app.use(express.static(path.join(__dirname, '/public'))); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

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

app.get('/search', function(req, res) { 
    var title = req.query.movieTitle; 
    var url = 'http://www.omdbapi.com/?s=' + title; 

    request(url, function (err, response, body) { 
    var results = JSON.parse(body); 
    var movieTitles = results.Search; 
    console.log(movieTitles); 
    res.send(movieTitles); 
    }); 
}); 
+0

角度部分を追加できますか? –

+0

申し訳ありませんが私の説明ではっきりしていない場合、私は実際に角を使用していないと角度などの追加のフレームワークを使用せずにこのアプリを構築しようとして –

+0

あなたはこのatleastのためにJavaScriptを使用して実装する必要がありますあなたが角度やjQueryを使用したくない場合や、React.AJAXはシングルページのアプリケーション –

答えて

0

表示JSONを持っているページに移動しています:

  • は、バックエンドアプリケーションが応答しているルートを定義スパで
  • はそのルート上の応答にあなたの「スケルトン」ファイルを送信

例コード:

let handler = (req, res) => res.send(path.join(__dirname, "path/to/your/index.html")) 

let routes = ["/", "/hello", "/world"] 

routes.forEach(route => app.get(route, handler)) 

これはあなたが始めるはずです

+0

ありがとう、私はこれを試し、それが動作するかどうかを確認します。私は一度それを与えると私は更新されます。乾杯。 –

+0

これを実装しようとしましたが、「ハンドラ」の「Unexpected identifier」というエラーが発生し続けます。私が使用しているコードはES6の構文であることはわかっていますが、ES6以外のJSと混在しているようなものがあれば、違いはありません。 –

+0

おそらくファイルの最上部に "use strict"行を追加するか、コマンド "node --use_stritct myapp.js"を使ってアプリケーションを起動するべきです – Lazyexpert

関連する問題