Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2与TypeScript:导出如何工作?_Javascript_Angular_Typescript - Fatal编程技术网

Javascript Angular2与TypeScript:导出如何工作?

Javascript Angular2与TypeScript:导出如何工作?,javascript,angular,typescript,Javascript,Angular,Typescript,我一直在学习Angular2教程。我已将代码从克隆到它 我正在努力理解打字脚本是如何工作的。当您在TypeScript中导出一个函数时,比如说名为'fnc',我在生成的js文件中看到,这相当于执行exports.fnc=fnc 以这种方式导出JavaScript是一个节点问题,那么当在浏览器而不是节点中运行时,这些代码如何在前端工作?因此,是否需要安装另一个软件包,以便在前端使用TypeScript,然后再更改这些再次生成的js文件 当我在开发者工具中查看代码时,我看到它现在已经被包装在一个

我一直在学习Angular2教程。我已将代码从克隆到它

我正在努力理解打字脚本是如何工作的。当您在TypeScript中导出一个函数时,比如说名为'fnc',我在生成的js文件中看到,这相当于执行exports.fnc=fnc

以这种方式导出JavaScript是一个节点问题,那么当在浏览器而不是节点中运行时,这些代码如何在前端工作?因此,是否需要安装另一个软件包,以便在前端使用TypeScript,然后再更改这些再次生成的js文件

当我在开发者工具中查看代码时,我看到它现在已经被包装在一个

    (function(System, SystemJS) {(function(require, exports, module, __filename, __dirname, global, GLOBAL) {"use strict"
    ...
    }).apply(__cjsWrapper.exports, __cjsWrapper.args);
    })(System, System);
是什么改变了代码的外观。这是在这里完成的特定于TypeScript的事情,还是在我使用的角度应用程序中特定的事情


最后,将JavaScript模块合并到我的不是TypeScript的应用程序中,是正确的做法吗?只需将export.something=我想要导出的所有东西都放进去?

您可能需要阅读TypeScript的文档。以下是指向他们的模块页面的链接:

某些浏览器无法读取TypeScript,因此Angular 2的代码需要编译成浏览器可读的代码(通常是ES5)。这是通过webpack、gulp、browserify等实现的。。有许多不同的工具支持这种传输


我建议,如果您正在处理TypeScript应用程序,不要尝试在TypeScript的旁边使用普通JavaScript,编译器通常不喜欢这样。但是,为了回答您的问题,您可以在节点中使用
模块导出。导出

您看到的包装与Typescript无关。您的脚本由SystemJS加载,并在呈现给浏览器之前进行了包装。您可以在for getSource中看到这一点:

  return (wrap ? '(function(System, SystemJS) {' : '') + source + (wrap ? '\n})(System, System);' : '')
  // adds the sourceURL comment if not already present
  + (source.substr(lastLineIndex, 15) != '\n//# sourceURL='
    ? '\n//# sourceURL=' + address + (sourceMap ? '!transpiled' : '') : '')
  // add sourceMappingURL if load.metadata.sourceMap is set
  + (sourceMap && inlineSourceMap(sourceMap) || '');
对于您关于浏览器如何加载CommonJS模块的问题,这是一个简单的问题。最后的应用调用特定于:


移动到回答..这些工具,如webpack和browserify,它们是通过Angular对您隐藏的,还是您仍然需要知道这些工具都在做什么?Gulp是我在包中看到的唯一一个。jsonJohn Papa正在使用tsc进行传输并观察任何类型脚本的更改,他使用Gulp将所有内容打包。有很多方法可以设置Angular 2项目,我建议您看看Angular CLI项目。这是启动一个新项目、添加组件、指令等并且仍然遵循样式指南的最简单的方法。谢谢,我将阅读这篇文章。使用香草Javscript slong-side字体脚本有什么问题?我已经有很多JavaScript文件要在Angular应用程序中使用,所以我不想在TypeScript中全部重写。一些编译器会抛出类型错误,因为他们试图将JavaScript更改为JavaScript,尽管他们希望使用TypeScript(或CoffeScript或ES6,或任何超集)那么,对于我现有的JavaScript文件,您有什么建议。用TypeScript重写它们?或者对于这种情况,我应该选择Angular2以外的框架来使用吗?
case 'cjs':
...
   source = cjsWrapper + ") {" + source.replace(hashBangRegEx, '') + "\n}).apply(__cjsWrapper.exports, __cjsWrapper.args);";