2016-07-31 68 views
0

好吧,我在試圖弄清楚如何將Socket.io添加到角度爲2的應用程序時遇到了最糟糕的運氣。將Socket Io添加到Angular 2中

我使用的是這個angular 2 expresss starter。從我看到它的方式,我想補充內typings.json

{ 
    "globalDependencies": { 
    "body-parser": "registry:dt/body-parser#0.0.0+20160619023215", 
    "core-js": "registry:dt/core-js#0.0.0+20160602141332", 
    "express": "registry:dt/express#4.0.0+20160708185218", 
    "express-serve-static-core": "registry:dt/express-serve-static-core#4.0.0+20160715232503", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 
    "mime": "registry:dt/mime#0.0.0+20160316155526", 
    "node": "registry:dt/node#6.0.0+20160720070758", 
    "serve-favicon": "registry:dt/serve-favicon#0.0.0+20160316155526", 
    "serve-static": "registry:dt/serve-static#0.0.0+20160606155157" 
    }, 
    "dependencies": { 
    "jsonwebtoken": "registry:npm/jsonwebtoken#5.5.4+20160208220328" 
    } 
} 

他們從哪兒來獲得這些值這個socket.io依賴?示例:「註冊表:dt/express#4.0.0 + 20160708185218」

另一件事是導入部分。

import * as express from "express"; 
import { join } from "path"; 
import * as favicon from "serve-favicon"; 
import { json, urlencoded } from "body-parser"; 

我用看到

var express = require('express'); 
var socket_io = require('socket.io'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

所以這會是正確的嗎?

import * as socket_io from "socket.io"; 

回答

1

DT = DefinitelyTyped。它是d.ts(TypeScript定義)文件的庫。請參見此處:https://github.com/DefinitelyTyped/DefinitelyTyped

typings.json將TypeScript定義添加到項目,這些項目在導入非本機寫入TypeScript的包(例如JavaScript包,如jQuery)時使用。

的分型包可以在這裏找到:https://www.npmjs.com/package/typings

如果已在全球安裝了「分型」套餐,您將可以通過在命令行中使用「分型搜索軟件包名」來搜索打字稿定義。記下源代碼,它會告訴你d.ts文件在哪裏。在socket.io-client的情況下,它在DT上。因此,要安裝它,您需要使用下面的命令:

typings install dt~socket.io-mocha --global --save

這將引用添加到您的typings.json文件,然後下載d.ts

要實際使用包在你的項目中,你需要將它添加到你的package.json文件中的devDependencies。然後,您需要在您的項目根目錄下運行命令NPM install。之後,您將能夠將對象導入到您的項目中。

如果要導入特定的類/對象/等你可以使用:如果要導入的一切 import { object_name_here } from 'package_name_here';

你可以使用這樣的事情:

import * as alias_name_here from 'package_name_here';

..然後alias_name.ojbect_name得到你想要使用的位的引用

所以在你的情況下,你可以做類似於:

import * as sioc from 'socket.io-client'; 
let socket = sioc('serveraddress'); 
etc, etc... 
+0

對不起,我仍然有點卡住T.T我仍然無法在typings.json中添加socket.io。我輸入「typings search socket.io」並獲得源主頁列表。接下來我該怎麼做? –

+0

我想寫一些cli來添加我的套接字註冊表裏面的json文件? –

+0

更新了我的答案。搜索後,您需要安裝。這會將它添加到你的類型文件中,並下載相關的d.ts.往上看。希望這可以幫助 – Delosdos