http://alvinwei.blog.163.com/blog/static/2146661102016149298897/
2016-02-04 11:36:46| 分类: AngularJS2.0 | 标签:前端 angular angularjs2.0 javascript 入门教程
(3) 复制以下内容到package.json
{ "name": "angular2-quickstart", "version": "1.0.0", "scripts": { "tsc": "tsc", "tsc:w": "tsc -w", "lite": "lite-server", "start": "concurrent \"npm run tsc:w\" \"npm run lite\" " }, "license": "ISC", "dependencies": { "angular2": "2.0.0-beta.3", "systemjs": "0.19.6", "es6-promise": "^3.0.2", "es6-shim": "^0.33.3", "reflect-metadata": "0.1.2", "rxjs": "5.0.0-beta.0", "zone.js": "0.5.11" }, "devDependencies": { "concurrently": "^1.0.0", "lite-server": "^2.0.1", "typescript": "^1.7.5" } }
{ "compilerOptions": { "target": "es5", "module": "system", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false }, "exclude": [ "node_modules" ] }
简单说一下,angularjs 2.0这个框架走的是组件化路线(前端大趋势),所以其实这里我们是建立了一个可视化的组件,我们可以看出来一个组件大概是由两部分组成的,一个是@Component,在我们这个教程里,Component定义了他在html上的标签名以及html代码(他是什么样子),当然Component里还有一些其他的功能,比如定义CSS和route等等。而另一部分是class,里面定义了他的业务逻辑(他要干什么),但目前我们也不需要在里面写什么东西,毕竟只是个hello world。import {Component} from 'angular2/core'; @Component({ selector: 'my-app', template: '<h1>My First Angular 2 App</h1>' }) export class AppComponent { }
看,我们刚才写的AppComponent就被import到这个main.ts里了。而整个网页代码的入口也就是AppComponent。import {bootstrap} from 'angular2/platform/browser' import {AppComponent} from './app.component' bootstrap(AppComponent);
我们可以看出来,这个index.html分为三块。第一块引入了必要的js文件,他们都存在npm下载好的目录下。第二块配置了SystemJS,并在里面import了我们刚才写好的main.ts,main.ts里提供了代码的入口即bootstrap。第三块就是显示出来我们最开始写的app.component.ts,你应该还有印象,在app.component.ts的代码里有一句是selector: 'my-app',所以在html里这个组件就用<my-app></my-app>表示,这个标签显示的内容就是template: '<h1>My First Angular 2 App</h1>'中的<h1>My First Angular 2 App</h1>',而那个Loading...则会显示在js文件加载完之前,加载之后就会被template里的内容替代。<html> <head> <title>Angular 2 QuickStart</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 1. Load libraries --> <!-- IE required polyfills, in this exact order --> <script src="node_modules/es6-shim/es6-shim.min.js"></script> <script src="node_modules/systemjs/dist/system-polyfills.js"></script> <script src="node_modules/angular2/bundles/angular2-polyfills.js"></script> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="node_modules/rxjs/bundles/Rx.js"></script> <script src="node_modules/angular2/bundles/angular2.dev.js"></script> <!-- 2. Configure SystemJS --> <script> System.config({ packages: { app: { format: 'register', defaultExtension: 'js' } } }); System.import('app/main') .then(null, console.error.bind(console)); </script> </head> <!-- 3. Display the application --> <body> <my-app>Loading...</my-app> </body> </html>