好的,所以我在尝试弄清楚如何将Socket.io添加到角度2应用程序中时运气最差。
我正在使用此angular 2 expresss starter。从我看到的方式来看,我想在 typings.json
中添加这个socket.io依赖项。{
"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"
}
}
他们从哪里获得这些价值?示例:"注册表: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";
答案 0 :(得分:1)
DT = DefinitelyTyped。它是d.ts(TypeScript定义)文件的库。点击此处:https://github.com/DefinitelyTyped/DefinitelyTyped
typings.json将TypeScript定义添加到项目中,这些定义在导入非本地用TypeScript编写的包时使用(例如jQuery等JavaScript包)。
可以在此处找到打字包:https://www.npmjs.com/package/typings
如果您已全局安装“typings”包,则可以在命令行中使用“typings search packagename”搜索TypeScript定义。记下源代码,它会告诉你d.ts文件的位置。在socket.io-client的情况下,它在DT上。因此,要安装它,您需要使用以下命令:
typings install dt~socket.io-mocha --global --save
这将添加对typings.json文件的引用,然后下载d.ts
要在项目中实际使用包,您需要将其添加到package.json文件中的devDependencies。然后,您需要在项目根目录中运行命令NPM install
。在此之后,您将能够将对象导入到项目中。
如果要导入特定的类/对象/ etc,可以使用:
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...