クイックangular.js質問...
次のようなコンテンツのWebページがある場合:
<div>{{message}}</div>
そして、私は「メッセージ」のモデルを次のように設定しました
$scope.message = "Hello world!"
次に、画面にdivの内容が次のように表示されます。
Hello world!
しかし、Chrome=またはFirefoxでソースを表示すると、ソースはまだこのように見えます
<div>{{message}}</div>
Angularテンプレート化した後、ページのソースをキャプチャする方法はありますか?
<div>Hello world!</div>
たとえば、私がAngularを使用してテンプレートを支援するプロジェクトで作業しているが、クライアントが角度のないHTMLの最終ページを希望している場合、どうすればHTMLをキャプチャできますか?このクライアントに与えるためにテンプレートが適用された後のページ数は?
https://github.com/cburgdorf/grunt-html-snapshot
これは、ページのHTMLスナップショットを取得する面倒なタスクです。ファントムと呼ばれる「偽の」または「ヘッドレス」ブラウザでページを実行し、JavaScriptを実行して、レンダリングされたHTMLを保存します。
これを行うためにGruntをセットアップする手順を以下に示します。
node
およびnpm
(ノードパッケージマネージャー)がインストールされます。 Gruntはnpmで利用できます。cd c:/myprojects/superproject
cd /Users/itcouldevenbeaboat/myprojects/superproject
i hope you know how to do this already if you use linux :D
npm install -g grunt-cli
を実行して、gruntコマンドラインツールをグローバルにインストールします。npm install grunt grunt-html-snapshot
を実行して、プロジェクトに実行する必要のあるすべてのgruntのローカルコピーをプロジェクトにインストールし、htmlスナップショットタスクをインストールします。次の内容で、プロジェクトルートに非常にシンプルなGruntfile.jsを作成します。
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-html-snapshot');
grunt.initConfig({
htmlSnapshot: {
all: {
options: {
snapshotPath: 'snapshots/',
sitePath: 'www/index.html',
urls: ['#/home', '#/about', '#/users/itcouldevenbeaboat']
}
}
}
});
grunt.registerTask('default', ['htmlSnapshot']);
};
grunt
を実行すると、スナップショットが作成されます:-)最初にサーバーでウェブサイトを起動し、GruntfileでsitePathを設定して、それが正しく機能するようにする必要があります。
スナップショットの設定についてサポートが必要な場合は、 grunt-html-snapshotページ を参照してください。
ラングドンが言ったように、Chromeで十分です。Chromeのインスペクタの[HTMLとして編集]オプションを使ってなんとかできました。
まず、ページ(これ以降PAGE_ORIGINAL)を「Webページ、完了」として保存します。 (保存されたページはPAGE_COPYと呼ばれます。)
私のために働いた。 :-)(私はラングドンの答えにコメントしようとしましたが、十分な担当者がいませんでした。)
従来の意味で「ソースを表示」して、Angularによって変更されたHTMLを表示する方法はありません。これは、ソースの表示にサーバーからのソースが表示され、Angularがサーバーから既にロードされているマークアップに変更を加えるだけだからです。
あなたがしたいことは、FireFoxでChromeのインスペクター(F12)またはFireBug(多分?それはまだ存在しますか?)を使用することです。 ChromeのインスペクタとFireBugは、「アクティブな」ソース、つまりHTMLを表示しているときのHTMLの外観を示します。
Firefoxでは、組み込みの開発者ツールを使用して[インスペクタ]を選択するだけです。これにより、Angularによる変更を含む現在のDOMが提供されます。
同じ要件がありましたが、同じブラウザセッション内からHTMLが必要でした。簡単な解決策はelement.innerHTMLを使用することでした。
(それでも、すべてのng- *属性と他の角度固有の属性を取り除くのは良いことだとまだ考えています。)
スナップショットが作成される前にコンテンツの準備が整っていることを確認したい場合、 grunt-html-snapshots はセレクターが出力に表示されるまで待機します(jQuery is( ":visible")を使用)スナップショットを撮る前。特定のスナップショット構成オプションが見つかります ここ 。