- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试将 Angular 1.x 与 TypeScript 1.5.3 和 SystemJS 结合使用。 index.html
页面设置为 System.import('bootstrapper')
,它应该启动。
bootstrapper.ts
被编译为 bootstrapper.js
并且只要它不使用 Angular 就可以正常工作(即只做一个 console.log( )
正常工作)
现在,我想导入并使用 angular 来引导它。我已经完成了 jspm install angular
并且我还使用 tsd
安装了一些 angular 类型。在 bootstrap.ts
文件的顶部引用了类型。
不幸的是,import angular from 'angular'
无法编译,我得到 Module "angular"has no default export
。我的问题是:
import angular from 'angular'
无法编译?查看 angular.d.ts
文件,我看到 declare module 'angular'{ export = angular; }
如果我理解正确的话,它是从变量模块 angular 的默认导出(在上面的类型文件中定义) declare var angular: angular.IAngularStatic
import 'angular'
编译然后我实际上可以引用 angular
并执行例如angular.module(...)
,但我认为我没有正确理解它的工作原理。 import 'angular'
不应该做一个“裸导入”,即运行一个模块只是为了它的副作用吗?如果是这样,是否意味着此导入实际上在全局范围内注册了 angular
?我很确定我没有正确理解模块/类型定义文件在 Typescript 中的工作方式,在此先感谢您的解释。
最佳答案
首先,以下是我将 AngularJS 1.5 与 TypeScript 和 SystemJS 结合使用的首选方式:
index.html
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
SystemJS.import('app')
.then(function (app) {
app.bootstrap(document);
})
.catch(function (reason) {
console.error(reason);
});
</script>
app/main.ts
import angular from 'angular';
const app = angular.module('app', []);
export function bootstrap(target: Element | Document) {
angular.bootstrap(target, [app.name], { strictDi: true });
}
tsconfig.json
{
"compilerOptions": {
"module": "system",
"allowSyntheticDefaultImports": true,
....
}
}
config.js
(加载器配置,简化)
SystemJS.config({
transpiler: "typescript",
packages: {
"app": {
"main": "main.ts",
"defaultExtension": "ts",
"meta": {
"*.ts": {
"loader": "typescript"
}
}
}
}
});
注意事项:
"plugin-typescript"
,而不是 "typescript"
,或者只运行 $ jspm init
并选择一个转译器。angular
及其 angular.d.ts
声明文件包含 CommonJS 样式 export =
允许基于模块和全局 namespace 的使用的声明。 SystemJS,为了获得最大的兼容性,在运行时将其插入到默认导出中。"module": "system"
和/或指定 "allowSyntheticDefaultImports": true
来完成。为了说明和明确起见,我都做了。如果你没有使用 jspm,你只需要告诉系统 JS 使用 map 或 package config 在哪里可以找到 typescript
SystemJS.config({
map: {
"typescript": "node_modules/typescript"
}
});
关于javascript - 将 Angular 1.x 与 TypeScript 1.5 和 SystemJS 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32336924/
当我使用以下命令设置 jspm 安装时: jspm init 然后它只询问我初始配置: Would you like jspm to prefix the jspm package.json prop
我正在使用标准的 ngUpgrade 模块将 AngularJS 应用程序升级到 Angular。我已将服务转换为 Angular,我需要将其降级以便在现有的 AngularJS 模块中使用它。我正在
我正在 SystemJS+Typescript 环境中运行 Jasmine 测试(基本上 a plunk 这应该是 Angular 2 测试平台)。 Jasmine 有意用作全局库,而不是通过 Typ
我有一个没有安装 systemJS 的项目。 这是 package.json: { "name": "mytest", "version": "0.1.0", "private": tru
我使用 SystemJS 作为模块系统来编译 TypeScript 文件,但每当我在浏览器中加载页面时(通过 live-server ),我都会收到以下错误: ReferenceError: Sens
我正在尝试将我的应用程序与 webpack 捆绑在一起,然后将其包含在带有 SystemJS 的父应用程序中,我有点迷失了。 我已经创建了我的包,我已经尝试将它转换为 commonjs/umd/amd
我无法让 systemjs 工作,所以它解析节点模块。 我的 index.html 中有以下内容: System.import('blast/test') .the
我正在尝试遵循 Angular 2 设置指南,但遇到了问题。我正在使用 browsersync,我似乎无法弄清楚如何让这段代码工作。 ....... System.import('./a
有没有办法等到所有 System.register(从 ES6 转译而来)都被解析和加载? 这对于 e2e testing in Angular 特别有用和其他小东西。 最佳答案 System.imp
我有一个非常基本的 config.js文件按预期工作,只要它部署在根 URL 下。这是样本 config.js文件: System.config({ //use typescript for co
我想导入 Angular,实例化 AngularJS 模块,然后导入另一个需要实例化 Angular 的文件: import angular from 'angular'; var app = ang
在尝试让 Angular (1.x) 与 systemjs 一起工作时,我意识到目前没有能力(据我所知)自动将 $inject 插入到 Angular 组件中,这使得即使函数的参数被缩小器破坏,组件也
我正在使用 jspm 和 SystemJS 导入 ES2015 模块。 是否可以通过 System 对象或其他任何地方获取项目中所有导入模块的列表?我可以通过 System._loader.modul
我正在使用 JSPM、AngularJS、TypeScript、SystemJS 和 ES6 并且我的项目运行得很好......除非我尝试使用 momentJS。 这是我得到的错误: TypeErro
有人可以告诉我如何使用 SystemJS 将简单的 javascript 文件加载到浏览器中。 我正在尝试使用以下语法从我的node_modules文件夹加载jquery: packages: {
我在使用 systemjs-builder 构建我的应用程序时遇到问题。 这是我的应用程序的结构。 这是要构建的函数: var systemjsBuild = { map: {
有人让 SystemJS 和 SignalR 一起工作吗?我一直在尝试使用 SystemJS(来自 jspm)加载 SignalR,但无论我做什么,异步加载器总是存在竞争条件。大约一半的加载时间,Si
我正在使用 Angular2,并且我想包含 jQuery。 systemjs.config.js (function (global) { System.config({ paths: { '
我在所有项目中都使用 SystemJs 和 JSPM,感觉太棒了。使用前端库变得前所未有的简单,使用 JSPM 我可以通过几个简单的步骤来完成: 命令行:jspm 安装角度 index.ts|js:i
我无法使用 SystemJS (0.19.47) 正确加载 RxJS 基本上我有一些 TypeScript…… import {BehaviorSubject} from "rxjs"; let s
我是一名优秀的程序员,十分优秀!