小编Tom*_*mas的帖子

NodeJS/Typescript导出/导入的正确解释?

有人可以使用Typescript准确解释导出和导入在NodeJS中的工作原理吗?

我的设置是:

  • 的NodeJS
  • 打字稿中的所有内容
  • TSLint
  • 分型

我正在搞乱出口/进口,而不是做一些正确的编码,它让我疯狂,并且找不到任何正确的解释它是如何工作的.

进口

你能解释一下:

var module = require ("module");

import module = require("module");

import module from "module";

import {something} from "module";

import * as module from "module";
Run Code Online (Sandbox Code Playgroud)

出口

你能解释一下吗?

export = something;

export default something;

export interface|class something;
Run Code Online (Sandbox Code Playgroud)

问题

  • 如何在不启动类的情况下正确导出/导入类
  • 如何正确导出/导入一个类(正在运行构造)
  • 如何正确导出/导入类和接口
  • 如何正确导出/导入类和多个接口
  • 何时使用模块声明,它们有什么用处,以及为什么tslint在我尝试使用它时会向我抛出错误.

我似乎无法找到适当的方式来进行导出与导入,所以我的IDE没有被红色覆盖并向我抛出数百个错误.

一般的问题

  • 有没有办法不使用nodejs/typescript/tslint获取错误?
  • 对于我输入的几乎任何东西,TSLint都在尖叫着我......这是非常令人沮丧的,因为大多数错误有0个解释.是否值得使用它?

问题清单一直在继续,但我确定一旦上面的一些问题得到解答,我可以接受其余的问题.

谢谢你,对于这样一个普遍的问题感到抱歉,但我的沮丧程度刚刚达到顶峰......

import node.js typescript tslint

29
推荐指数
1
解决办法
8023
查看次数

Angular:我可以完全禁用消毒吗?

是否可以完全禁用HTML的清理?

我想要实现的是在我的控制器中:

$scope.greeting = '<h2>Hello World</h2>'
Run Code Online (Sandbox Code Playgroud)

在我看来

{{greeting}}
Run Code Online (Sandbox Code Playgroud)

我不能(也不想)使用ng-bind-html等,我想一起禁用消毒.

只是为了给出一些更多的上下文 - 我正在准备简单的"框架环绕"来开发特定系统的模板.

当您为此系统开发模板时,他们有预先定义的片段,您可以通过编写"{{something}}"来放置在页面上,但它不是在角度上运行(可能是小胡子或其他东西).

现在模板只能在线开发,这是非常用户不友好的过程.因此,我设置了角度与相应路线等的简单项目,因此每个人都可以在他们的机器上开发模板,然后只需将其复制到系统.

这就是为什么在模板文件中它不应该以角度完成它,它只是尽可能接近它们的系统.

最后一点 - 我尝试过:

myApp.config(['$sceProvider',function($sceProvider){
    $sceProvider.enabled(false);
}]);
Run Code Online (Sandbox Code Playgroud)

没有为我做任何事

javascript angularjs

19
推荐指数
1
解决办法
4194
查看次数

Typescript 中的字符串或数字值

我试图实现的一个例子:

class Test {
    private _folderId: number;
    private _pageId: number;
    private _folderName: string;
    private _pageName: string;

    constructor(pageId: string | number, folderId: string | number){
        this._folderId = (!isNaN(+folderId)) ? folderId : undefined;
        this._pageId = (!isNaN(+pageId)) ? pageId : undefined;
        this._folderName = (isNaN(+folderId)) ? folderId : undefined;
        this._pageName = (isNaN(+pageId)) ? pageId : undefined;
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会引发编译器错误:

TS2322:Type 'string | number' is not assignable to type 'number'. Type 'string' is not assignable to type 'number'.
Run Code Online (Sandbox Code Playgroud)

依此类推(每个 var 都有类似的错误)。

有什么办法可以解决吗?目前我唯一能做的就是设置页面和文件夹 ID 以输入任何...

javascript typescript

10
推荐指数
2
解决办法
2万
查看次数

使用一个或一组对象的Typescript函数

我们正在使用简单的函数声明,其中函数采用单个对象或某种类型的对象数组.

简单的声明是:

interface ISomeInterface {
    name: string;
}

class SomeClass {
    public names: ISomeInterface[] = [];

    public addNames(names: ISomeInterface | ISomeInterface[]): void {
        names = (!Array.isArray(names)) ? [names] : names;
        this.names = this.names.concat(names);
    }    
}
Run Code Online (Sandbox Code Playgroud)

但TypeScript抛出"type is not assignable"错误.

这样做有更好的方法吗?显然我们可以有两个独立的功能,但我认为以这种方式处理单个vs多个是很好的.

javascript typescript

9
推荐指数
3
解决办法
9808
查看次数

Restify:URL中的API版本

目前正在开发具有restify的API,但仍然不能习惯在头文件中指定API版本.它似乎不是非常用户友好.

有没有办法让版本成为网址的一部分?

示例是:

http://domain.com/api/v1/action
Run Code Online (Sandbox Code Playgroud)

在我的情况下甚至更好:

http://api.domain.com/v1/action
Run Code Online (Sandbox Code Playgroud)

谢谢

routes node.js restify

7
推荐指数
1
解决办法
6232
查看次数

部署Typescript NodeJS服务器

将用TypeScript编写的NodeJS服务器部署到生产中的最佳实践是什么?

我想避免为我的git存储库中的每个脚本提供3个文件(ts,js,map).

我可以使用grunt/gulp来创建"dist"目录并将所有已编译的文件复制到那里,但是我会将它们放在我的repo中.我可以为编译的代码创建单独的repo,但我认为这并不理想.

此外,当我在node app.ts没有js或地图存在的情况下运行时,它实际上启动一切正常.那么节点服务器甚至需要编译文件吗?

注意:我没有任何编译脚本/任务,我的IDE正在为我自动编译ts文件.

node.js typescript

6
推荐指数
1
解决办法
2313
查看次数

ExpressJS 仅将中间件应用于路由器中的路由

我有应用程序,其中有公共路线和授权路线。公共路由也应该通过 auth,但如果 auth 失败,也没关系。

所以我有两个路由器:

var publicRoutes = express.Router();
var secretRoutes = express.Router();

publicRoutes
    .use(auth)
    .use(ignoreAuthError);

publicRoutes.get('/public', function(req, res){
    res.status(200).send({message: "public"});
}); 

secretRoutes
    .use(auth)
    .use(handleAuthError);

secretRoutes.get('/secret', function(req, res){
    res.status(200).send({message: "secret"});
}); 

...

app.use(publicRoutes);
app.use(secretRoutes);
Run Code Online (Sandbox Code Playgroud)

现在一切正常,但是如果我更改app.use公共路由的顺序会引发身份验证错误。此外,我无法收到任何 404、500 等错误,因为它们都经历了身份验证错误。

很明显,正在发生的事情是Router.use()应用于所有具有相同根的路由 - 在这种情况下"/"

因此,我认为如果我只auth在所有路由上使用中间件,然后将其他中间件直接添加到路由中,它应该可以正常工作。但这有点阻碍了我拥有多个路由器的意义。

我希望如果我使用Router.use()中间件,则仅当该特定路由器匹配它已设置的任何路由时才适用,而不是更改其他路由器的行为。

我理解正确吗?有没有办法解决这个问题,而实际上不必为每条路由添加中间件?

routing node.js express

6
推荐指数
1
解决办法
1771
查看次数

WebStorm,PHPStorm,Jetbrains IDEs - 忽略Typescript项目中的JS和MAP文件

有没有办法忽略*.js*.js.map在Jetbrains的集成开发环境打字稿项目?

现在,我的PHPStorm中有一个TypeScript项目,当我搜索文件时,ctrl+shift+N我得到了所有文件 - *.ts, *.js, *.js.map这迫使我每次搜索时都选择一个打字稿文件,而不是快速跳转到文件.

有没有办法从搜索过滤编译的文件?我尝试了范围等,但它没有做到这一点.

PS:我知道在TypeScript上工作​​会建议使用WebStorm,但我发现PHPStorm给了我最好的产品体验.

jetbrains-ide phpstorm typescript

6
推荐指数
1
解决办法
490
查看次数

在网址中使用#打开模态

我很抱歉这个问题很糟糕,但我想在网址中用#打开模态.因此,如果我打电话给www.domain.com/#modal1,它将打开带有模式加速的页面.

哦,我正在使用jquery.

谢谢!

url jquery modal-dialog

5
推荐指数
1
解决办法
6406
查看次数

HAProxy动态服务器地址

我们对此图有类似的设置

在此输入图像描述

当请求到达HAProxy时,它会将roundrobin平衡到任何服务器,后端服务器检查其缓存,如果资源不在该服务器上,则会发出重定向,并将标头设置为正确的服务器IP.

第二次请求到达HAProxy时,它会检测到后端服务器的头是否存在,但是如何直接获取该IP并将请求直接发送给它?

例如,第二次请求到达haproxy它有头 X-BACKEND-IP=10.0.0.5

因此,haproxy尝试对该请求进行负载均衡,我希望它读取标头,获取该IP并直接转到该后端.

那可能吗?如果没有,是否可以使用nginx?

networking load-balancing nginx haproxy

5
推荐指数
1
解决办法
2145
查看次数