推荐官方学习文档
安装开发环境
新建一个文件夹simpleExample,创建一个文件名为tsconfig.json的文件,内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| { "compilerOptions": { "target": "es5", "module": "system", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false }, "exclude": [ "node_modules", "typings/main", "typings/main.d.ts" ] }
|
创建一个文件名为typings.json的文件,内容为:
1 2 3 4 5 6 7
| { "globalDependencies": { "core-js": "registry:dt/core-js#0.0.0+20160602141332", "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", "node": "registry:dt/node#6.0.0+20160621231320" } }
|
创建一个文件名为package.json的文件,该文件中包含了我们应用所需要用到的packages,文件内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| { "name": "angular2-demo", "version": "1.0.0", "scripts": { "start": "concurrent \"npm run tsc:w\" \"npm run lite\" ", "tsc": "tsc", "tsc:w": "tsc -w", "lite": "lite-server", "typings": "typings", "postinstall": "typings install" }, "license": "ISC", "dependencies": { "angular2": "2.0.0-beta.7", "systemjs": "0.19.22", "es6-promise": "^3.0.2", "es6-shim": "^0.33.3", "reflect-metadata": "0.1.2", "rxjs": "5.0.0-beta.2", "zone.js": "0.5.15" }, "devDependencies": { "concurrently": "^2.0.0", "lite-server": "^2.1.0", "typescript": "^1.7.5", "typings":"^0.6.8" } }
|
执行npm install 可以下载以上的依赖包
开始第一个angular 2 程序
新建文件夹名为app,在该文件目录下新建hello_world_main.ts
1 2 3 4
| import {bootstrap} from "angular2/platform/browser" import {MyHelloWorldClass} from "./hello_world_app.component" bootstrap(MyHelloWorldClass);
|
同样目录下新建hello_world_app.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13
| import {Component, View} from "angular2/core"; @Component({ selector: 'my-app' }) @View({ template: '<h2>Hello World !!</h2>' }) export class MyHelloWorldClass { }
|
回到上一层目录新建index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <!DOCTYPE html> <html> <head> <title>Hello World</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.33.3/es6-shim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.20/system-polyfills.js"></script> <script src="https://code.angularjs.org/2.0.0-beta.6/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.6/Rx.js"></script> <script src="https://code.angularjs.org/2.0.0-beta.6/angular2.dev.js"></script> <script> System.config({ transpiler: 'typescript', typescriptOptions: { emitDecoratorMetadata: true }, packages: {'app': {defaultExtension: 'ts'}}, map: { 'app': 'app' } }); System.import('app/hello_world_main') .then(null, console.error.bind(console)); </script> </head> <body> <my-app>Loading...</my-app> </body> </html>
|
index.html中使用SystemJS加载所需的模块,通过System.config函数配置。
配置详情为:
packages 告知System loader当没有文件名或者没有后缀的时候如何加载文件
map 告知System loader在何处加载所需的文件,此处app(左边)指向的是名为app(右边)的目录,所以在import的时候可以找到在app目录下的hello_world_main.ts 文件。
参考文章
Angular2 – SystemJS解析
tutorialspoint 网站