javascript - 使用 TS 但不使用 NPM 在 Angular2 上进行开发

标签 javascript angular typescript npm

所有指南都建议安装 npm,但我正在寻找没有它的方法。

There are Angular2 files available ,但它们都不是 TypeScript 代码。

那我该怎么办?我需要 Angular2.ts 或特定的 Angular2-xx.js.d.ts 文件吗?

更新:我已经通过 NPM 下载了 Angular2 并获得了完整的源代码树,很难在其中找到特定的东西。为 Angular2 搜索 .d.ts 没有返回任何结果。大量的.ts.d.ts文件在庞大的代码集合中。

最佳答案

实际上,这些文件是 Angular2 及其依赖项的捆绑版本。它们可以在使用 TypeScript 编写的应用程序中使用。事实上,TypeScript 不能开箱即用地用于浏览器。您必须对它们进行预处理,以便使用 TypeScript 编译器将它们编译成 ES 代码,或者直接使用 TypeScript 库在浏览器中转译它们。

这可以在 SystemJS 中直接通过其 transpiler 配置属性进行配置(见下文)。

首先只需将这些文件添加到您的 HTML 文件中:

<script src="https://code.angularjs.org/2.0.0-beta.2/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/tools/system.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.2/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.2/angular2.dev.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.2/http.dev.js"></script>

如果您想在没有 NPM 的情况下实现应用程序,您可以在浏览器中转换您的 TypeScript 文件。我们在使用 plunkr 时就是这样做的。为此,您需要按如下所述配置 SystemJS:

<script>
  System.config({
    transpiler: 'typescript', 
    typescriptOptions: {
      emitDecoratorMetadata: true
    },
    packages: {
      'app': {
        defaultExtension: 'ts'
      }
    } 
  });
  System.import('app/main')
        .then(null, console.error.bind(console));
</script>

小心在 app 文件夹下定义您的 TypeScript 文件

这是一个简单(完整)的 plunkr,描述了如何做到这一点:https://plnkr.co/edit/vYQPePG4KDoktPoGaxYu?p=info .

您可以下载相应的代码并在本地使用静态 HTTP 服务器(如 http-server)使用其代码,而无需使用 NPM。这可能是您的用例的一个很好的起点...

编辑

如果你的 TypeScript 文件是由 VS 编译的,你需要调整 SystemJS 配置,如下所述:

<script>
  System.config({
    packages: {
      app: {
        defaultExtension: 'js',
      }
    }
  });
  System.import('app/boot')
        .then(null, console.error.bind(console));
</script>

这样,SystemJS 将在导入时加载您的 JS 文件。例如:System.import('app/boot') 将使用 app/boot.js 而不是 TypeScript

关于javascript - 使用 TS 但不使用 NPM 在 Angular2 上进行开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623270/

相关文章:

php - 基于 PHP 和 jQuery 等开源的 Web 应用程序的含义

javascript - 带有希伯来字符的 XMLHttpRequest

html - 点击ngFor li的 Angular 变化背景

angular - 为什么 Angular 组件没有在浏览器后退/前进导航中加载?

angular - 如何将 'ngModel' 与表单控件名称一起使用?

reactjs - 为 typescript 的 npm react 模块定义类型

javascript - Protractor 和 promise

javascript - Lightbox2 标题中的按钮未触发单击事件

typescript - SymbolInformation containerName 用于大纲 View 层次结构

javascript -  '{ title: string; description: string; }' 类型的参数不可分配给  '{ id: {}; title: {}; description: {}; }' 类型的参数