LoginSignup
9
6

More than 5 years have passed since last update.

Ionic2でサードパーティのJavaScriptライブラリを使う

Posted at

はじめに

ionic/cordovaを使ってハイブリッドアプリを作成している時、ionicやcordovaのプラグインなどになっていない通常のJavaScriptライブラリを使いたいことがあります。
いくつか設定するだけで簡単に使えるので、その方法です。

前提

以下のライブラリを例にします。

<script src="http://cdn.peerjs.com/0.3/peer.js"></script>

これはWebRTCで使うシグナリングのサービス用ライブラリです。詳しくは以下のサイトをご覧ください。
peerjs

また、ionicのアプリは

ionic start ionic-peerj blank

で生成した物です。ionicのバージョンは3.9.2です。ディレクトリ構造は以下の通りです。

├── README.md
├── config.xml
├── hooks
├── ionic.config.json
├── node_modules
├── package-lock.json
├── package.json
├── resources
├── src
│   ├── app
│   │   ├── app.component.ts
│   │   ├── app.html
│   │   ├── app.module.ts
│   │   ├── app.scss
│   │   └── main.ts
│   ├── assets
│   ├── index.html
│   ├── manifest.json
│   ├── pages
│   │   └── home
│   │       ├── home.html
│   │       ├── home.scss
│   │       └── home.ts
│   ├── service-worker.js
│   └── theme
├── tsconfig.json
├── tslint.json
├── typings
│   ├── cordova-typings.d.ts
│   └── typings.d.ts
└── www
    ├── assets
    ├── build
    ├── index.html
    ├── manifest.json
    └── service-worker.js

設定

JavaScriptライブラリの読み込み設定

src/index.html<head>セクションに使いたいライブラリを記述します。

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
   |
  <script src="http://cdn.peerjs.com/0.3/peer.js"></script>
   |
</head>
<body>
   |
</body>
</html>

型情報の設定

typescriptでコンパイルを通すためには型の情報が必要なので、使うライブラリの関数の型情報をファイルに記述します。peerjsではPeer()を使うので、

declare var Peer: any;

typings/typings.d.tsに記述します。さらにこのファイルをtypescriptで使うためにtsconfig.jsonに以下の記述をします。

  "files":[
    "typings/typings.d.ts"
  ]

ライブラリの利用

src/pages/home/home.tsでpeerjsを使う例です。

import { Component, OnInit } from '@angular/core';
import { NavController } from 'ionic-angular';

@Component({
    selector: 'page-home',
    templateUrl: 'home.html'
})
export class HomePage implements OnInit {

    peer;

    constructor(public navCtrl: NavController) {
    }

    ngOnInit() {
        this.peer = new Peer({ key: '<yourkeyhere>' });

        this.peer.on('open', (id) => {
            console.log(`id: ${id}`);
        });

        this.peer.on('connection', function (conn) {
            conn.on('data', function (data) {
                // Will print 'hi!'
                console.log(data);
            });
        });
    }
}
9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6