将 javascript 库导入我在 Angular2 项目中使用的自定义 javascript 文件

Import a javascript library into a custom javascript file which I use in my Angular2 project

我想通过 JavaScript 的 "synaptic.js" 库将机器学习包含在我的 Angular2 项目中。我已经通过命令安装了库

npm install synaptic --save

我想要运行以下自定义javascript文件(myJsFile.js):

function myFunction() {
   var A = new Layer(5);
   var B = new Layer(2);
   A.project(B);

   var learningRate = .3;

   for (var i = 0; i < 20000; i++)
   {
      // when A activates [1, 0, 1, 0, 1]
      A.activate([1,0,1,0,1]);

      // train B to activate [0,0]
      B.activate();
      B.propagate(learningRate, [0,0]);
   }

   // test it
   A.activate([1,0,1,0,1]);
   console.log(B.activate()); // [0.004606949693864496,0.004606763721459169]
}

在我的 index.html 文件中,我包含了以下代码:

<script src="js/myJsFile.js"></script>

在我的app.component.ts文件中

import { Component, OnInit }      from '@angular/core';
import { Router }                 from '@angular/router';
import { AuthenticationService }  from '../../Services/authentication.service';
declare var myFunction: any;

@Component({
  moduleId:     module.id,
  selector:     'my-app',
  templateUrl:  './app.component.html',
  styleUrls:    [ './app.component.css' ]
})

export class AppComponent implements OnInit {
    // some code here

    // I call f() function inside the app.component.html file in order to run the myFunction() javascript function. 
    f() {
       new myFunction();
    }

例如,如果 alert() 函数在 myJsFile.js 文件,代码将 运行 没有任何问题。但就我而言,我有以下错误:

app.component.html:9 ERROR ReferenceError: Layer is not defined

这意味着我必须在某处导入突触库。 github (https://github.com/cazala/synaptic) 中的用法部分指出以下内容:

var synaptic = require('synaptic'); // this line is not needed in the browser
var Neuron = synaptic.Neuron,
    Layer = synaptic.Layer,
    Network = synaptic.Network,
    Trainer = synaptic.Trainer,
    Architect = synaptic.Architect;

如果我将上面的代码导入我的 myJsFile.js,我会收到以下错误:

myJsFile.js:1 Uncaught ReferenceError: require is not defined

我应该在哪里导入突触库以及如何导入?

我也找到并安装了synaptic.d.ts文件,但我不知道如何使用它。 . 谁能帮帮我??

非常感谢您的宝贵时间!

您的示例可能正在使用 Node,要与 Angular 2+ 一起使用,您需要使用导入语法。

例如

import { Neuron, Layer, Network, Trainer, Architect} from 'synaptic';

那你应该可以参考它们

我还建议将您的 myJsFile.js 文件制作成 ts 文件并以相同的方式导入。如果所有内容都在 js 中而不是在 html.

中导入,那就更简单了