2016-09-01 12 views
2

ブラウザアプリを作成するために、webpackでAngular 2のTypeScript APIを使用しています。残念ながら、私のコンポーネントの1つは、App Engine Channel APIの外部.jsファイルで関数を使用する必要があります。Angular 2プロジェクトに外部.jsファイルを含めるにはどうすればよいですか?

私の他の.js依存関係とは異なり、私は動的に生成されると信じているので、私のwebpackバンドルでこの.jsファイルをプリコンパイルすることはできません。

私のアプリにファイルをロードして使用する最も適切な方法は何ですか?非同期読み込みの問題を回避するにはどうすればよいですか?

答えて

2

すでに指摘したものをMarkに拡張するには:

をはい、あなたは確かにちょうどあなたがあなたのバンドル/角度2プロジェクトをロードする場所の上ごHTMLファイルのheadセクションでそれらを読み込むことができます。

そして、あなたはあなたがちょうどあなたのComponentクラス上goog変数の宣言を書くことができ、そのコードを使用するコンポーネント、中

declare var goog: any; 

をそして、あなたのコンポーネント内にあなたは今、すべてのメソッドを使用することができますオートコンプリートをしなくてもいい。

あなたは自動補完をしたい場合は、NPMを経由して活字体定義ファイルをインストールすることができますに:https://www.npmjs.com/package/@types/gae.channel.api

それとも、すぐにtypingsフォルダに配置し、とあなたのコンポーネントファイルの先頭にそれを参照:

/// <reference path="../typings/gae.channel.api.d.ts" /> 

gae.channel.api.d.ts:

// Type definitions for GoogleAppEngine's Channel API 
// Project: https://developers.google.com/appengine/docs/java/channel/javascript 
// Definitions by: vvakame <https://github.com/vvakame> 
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped 

declare namespace goog.appengine { 
    export class Channel { 
     constructor(token: string); 
     open(handler?: Function): Socket; 
    } 

    export class Socket { 
     close(): void; 
     onopen:() => void; 
     onmessage: (message: any) => void; 
     onerror: Function; 
     onclose:() => void; 
    } 
} 
2

そのプリミティブの種類ですが、バンドルをロードする場所の上のhtmlファイルにjsファイルを置くことができます。

関連する問題