質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

8258閲覧

Angularはなぜローカルで動かないのか?

kuniatsu

総合スコア141

0グッド

0クリップ

投稿2017/04/19 17:49

初歩的な質問です。なぜ、Angularはローカルで動かないのでしょうか?

一般的なJSはjsを書いてブラウザに突っ込めば動きます。しかし、Angularはローカル開発の時点で、仮想サーバを使って開発します。

ng serviceをコマンドし、localhostで確認する流れとなっていますが、そもそもなぜ仮想サーバが必要なのでしょうか?

ご存知の方いらっしゃいましたが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Angualr2 には詳しくないのですが、たぶん外部ファイルのロードなどの際に Same Origin Policy に引っかかるからではないかと思います。(外部にコンポーネントやデータソースを持たないなら動くかも)

【AngularJS の サンプルコードをローカルで弄ってたら Google Chrome だと表示されなかったりする件 - 牌語備忘録 -pygo】
http://cortyuming.hateblo.jp/entry/20120822/p1
※ Angualr1系 だと思われますが、こういう問題が起こります。

【[その他] ChromeにてAjaxでローカルファイルにアクセス - Qiita】
http://qiita.com/cigalecigales/items/33afaa42f91542ffa62e


【npm iしてAngualr 2のHello World!を書くところまで【改】 - Qiita】
http://qiita.com/armorik83/items/ae737ab584012a0f5876#ビルドそして起動

この例はまだローカル経由で動きますが、RouterやAjaxなどが絡むときはローカルでサーバを立ててください。

投稿2017/04/19 18:17

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuniatsu

2017/04/23 15:28

RouterやAjaxが絡むとサーバが必要になるのですね。それはnode.jsに依存しているのでしょうか?自宅サーバでの運用を計画していたので、詳しく知りたいのですが、angularの動作サーバについての情報があまりなくて困っています。もし明るい方いらっしゃいましたらよろしくお願いします。
kei344

2017/04/23 15:45

> それはnode.jsに依存しているのでしょうか? 必ずしもそうだとは思いません。angularが外部のサーバとのやり取りはHTTP通信で、送受信するのはJSONデータなので、PHPでもRubyでもバックエンドに使えるとは思います。 古い例ですが、下記記事の例に挙がっているものはデータを ng.http.Request メソッドで取得しています。この場合「https://qiita.com/api/v2/items?...」の先のサーバがどのような言語でデータを返していても問題ではなく、期待したデータが返されるものなら何でも良いと思います。 【意識低い系エンジニアでもできるAngular2 beta の話 - Qiita】 http://qiita.com/mikakane/items/71ace515de959b6e08fa#npm%E3%82%82%E3%83%93%E3%83%AB%E3%83%89%E3%82%82%E3%81%AA%E3%82%93%E3%81%AA%E3%82%89js%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%82%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84-%EF%BC%91%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E6%89%8B%E4%BD%9C%E3%82%8A%E3%81%AEangular2 【AngularJS: API: $http】 https://docs.angularjs.org/api/ng/service/$http AngularJS が Node.js が必須みたいになっているのは、テストの統合やTypeScriptのコンパイルに必要だから、というような気がします。
guest

0

大雑把ですが

JavaScriptは2タイプ(他にもあるかも)あり
0. ブラウザのJavaScriptエンジンが実行するJavaScript

  1. node.jsが実行するJavaScript

ブラウザで動くJavaScriptはサーバーからJavascriptファイルをダウンロードしてからブラウザのjavaScriptエンジンが実行しています。
※ブラウザのJavaScriptエンジンが共通ではないため、一部の関数でIEで動いてChromeで動かないなどが起こります

node.jsでAngularを使用した場合、jsファイルを実行した後にその結果をクライアントへ返します。
※node.jsで書いたjsファイルはブラウザエンジンでは動きません。
<script type="text/javascript" src="node.jsで書いたjsファイル" />としてもエラーになります。

個人的な考えとしてnode.jsはJavaScript言語に非常によく似たかつ拡張子が同じだがまったく別の言語と思ってます。

Angular公式サイトに「One framework.Mobile & desktop.」と書かれていますが、これはmobile=スマホ・タブレット、desktop=(デスクトップ・ノート)パソコンを指していると解釈しています。

つまり「Angularを使えばいろんな端末のブラウザ環境で動くものができますよ」と言う意味ですかね。

そしてAngularはサーバ用のフレームワークです。
なのでng serveコマンドを実行しWEBサーバを立てブラウザで確認と言う作業になります。

蛇足ですが、
インストール形式のアプリを作りたいならelectronが有名ですかね

投稿2017/04/20 01:44

mosapride

総合スコア1480

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuniatsu

2017/04/23 15:30

あくまでフロントエンドのjsとして探していたので焦りました。「やっぱりAngularじゃなくてReac・・」という気持ちになってました。フロントエンドで安心です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問