本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 3509|回复: 2
打印 上一主题 下一主题

[Angular2]比Angular2官方更容易理解的Quick Start

[复制链接]
跳转到指定楼层
1#
发表于 2016-7-14 16:19:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 悟箜 于 2016-7-30 14:31 编辑

最近开始学习Angular2的开发,经过一段时间的摸索,发现Angular2还是有很多让人眼前一亮的特性的。 尤其是Angular2官网有了中文版(看来天朝程序员才是Angular2的真正用户,哈哈哈哈),还有就是有一个号称五分钟的quick start。虽然写的挺好,不过感觉东西还是有点多,SO,精简再精简,我们一起来写个比官网更简洁的Angular2 quick start。(此版本仅限于开发环境)

开始之前请确认你的电脑安装了NodeJS跟NPM,然后选择一款适合自己的开发工具。准备好之后我们就可以开始啦~~~~~

首先我们来看看项目的目录结构,依赖配置文件:package.json,入口文件:index.html, SystemJS配置文件:systemjs.config.js, Angualr2入口文件:main.ts, 主页面文件:app.component.ts。就只需要这5个文件??是的,就是这么简单~
屏幕快照 2016-07-14 下午8.20.26.png (33.16 KB, 下载次数: 3)

  • 我们需要先创建package.json 文件,里面只需要包含我们需要的必备依赖:(下面文件里的注释只是为了方便理解,如果复制代码请把注释去掉,否则会出错!!)
  1. {
  2.   "name": "angular2-quick-start",
  3.   "version": "0.0.1",
  4.   "description": "This is one sample for Angular2 quick start",
  5.   "scripts": {
  6.     "test": "echo "Error: no test specified" && exit 1",
  7.     "start": "live-server --port=22222" /**设置live-server启动信息,端口号:22222**/
  8.   },
  9.   "author": "Wu Kong",
  10.   "dependencies": {
  11.     "@angular/common": "2.0.0-rc.4",
  12.     "@angular/compiler": "2.0.0-rc.4",
  13.     "@angular/core": "2.0.0-rc.4",
  14.     "@angular/platform-browser": "2.0.0-rc.4",
  15.     "@angular/platform-browser-dynamic": "2.0.0-rc.4",
  16.    
  17.     "reflect-metadata": "^0.1.3",
  18.     "rxjs": "5.0.0-beta.6",
  19.     "systemjs": "^0.19.31",
  20.     "zone.js": "^0.6.12",
  21.     "es6-shim": "0.35.1" /**为了让IE支持ES6的语法**/
  22.   },
  23.   "devDependencies": {
  24.     "live-server": "^0.8.2", /**使用live-server做为我们的小型服务器**/
  25.     "typescript": "^1.8.10"
  26.   }
  27. }
复制代码
  • 创建入口文件index.html, 引入我们需要的依赖, <wk-app>就是我们要写的app.component, 页面的最后我们是通过systemJS来引入入口文件main.ts,那么为什么是System.import('app')而不是System.import('main')呢???答案就在下面!
<!DOCTYPE html>

<html>
<head>
    <title>Angular2 Quick Start</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <base href="/">
    <!-- 确保IE支持ES6语法 -->
    <script src="/node_modules/es6-shim/es6-shim.js"></script>
    <script src="node_modules/zone.js/dist/zone.js"></script>

 <!-- 引入typescript编译器,将会在浏览器端编译Typescript脚本 -->
    <script src="node_modules/typescript/lib/typescript.js"></script>
    <script src="node_modules/reflect-metadata/Reflect.js"></script>
    <script src="node_modules/systemjs/dist/system.src.js"></script>
    <script src="systemjs.config.js"></script>
</head>
<body>
    <wk-app>Loading...</wk-app>
    <script>
        System.import('app').catch(function(err) {
            console.error(err);
        });
    </script>
</body>
</html>

  • 创建加载配置文件systemjs.config.js
  1. System.config({
  2.     transpiler: 'typescript', /** 编译typescript*/
  3.     typescriptOptions: {
  4.         emitDecoratorMetadata: true
  5.     },
  6.     map: {
  7.         'app': 'app', /** 指定代码所在路径*/
  8.         'rxjs': 'node_modules/rxjs',
  9.         '@angular': 'node_modules/@angular'/** 指定Angular2所在路径*/
  10.     },
  11.     packages: {/** 指定入口文件!!*/
  12.         'app': {
  13.             main: 'main.ts',
  14.             defaultExtension: 'ts'
  15.         },
  16.         'rxjs': {
  17.             main: 'index.js'
  18.         },
  19.         '@angular/core': {
  20.             main: 'index.js'
  21.         },
  22.         '@angular/common': {
  23.             main: 'index.js'
  24.         },
  25.         '@angular/compiler': {
  26.             main: 'index.js'
  27.         },
  28.         '@angular/platform-browser': {
  29.             main: 'index.js'
  30.         },
  31.         '@angular/platform-browser-dynamic': {
  32.             main: 'index.js'
  33.         }
  34.     }
  35. });
复制代码
  • 入口文件main.ts,只需要简单粗暴的引入了主页面文件app.component.ts
  1. import {bootstrap} from '@angular/platform-browser-dynamic';

  2. import AppComponent from "./common/components/app.component";

  3. bootstrap(AppComponent, []).catch(err => console.error(err));
复制代码
  • 主页面文件app.component.ts
  1. import {Component} from '@angular/core';

  2. @Component({
  3.   selector: 'wk-app',
  4.   template : '<h1>Hello Angular2 !</h1>'
  5. })
  6. export default class AppComponent {}
复制代码
好啦,我们所有的工作都完成了!!什么?就这么完了?? 对,你没有看错,就这么简单!哈哈哈,接下来我们只需要安装依赖就可以启动我们的程序啦~~~

  • 打开dos窗口,CD到你刚才新建的项目目录下,运行npm install开始下载我们的依赖包
install.PNG (24.48 KB, 下载次数: 2)

  • 安装好所有的依赖以后直接运行npm start,如果你的浏览器正常打开并且显示Hello Angular2 !,恭喜你,你已经迈进Angular2的大门了~~
IE.PNG (11.21 KB, 下载次数: 3)




如果你没有成功,请不要灰心也不要丧气,留下你的错误信息,我会尽量帮你解决的~
如果你有任何疑问也可以留言,我们大家一起讨论解决~



ChinaGDG.com
回复

使用道具 举报

2#
 楼主| 发表于 2016-7-21 21:28:35 | 只看该作者
代码已经稍做整理并上传到Github,地址如下:https://github.com/WuKongW/Angular2_POC
ChinaGDG.com
回复 支持 反对

使用道具 举报

3#
发表于 2016-7-29 15:16:30 | 只看该作者
赞赞赞赞,还有后续吗,多谢
ChinaGDG.com
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2016-7-30 12:05:41 | 只看该作者
yuanyang536 发表于 2016-7-29 15:16
赞赞赞赞,还有后续吗,多谢


其实我也是一边学一边做,还会有的 ^_^
ChinaGDG.com
回复 支持 反对

使用道具 举报

5#
发表于 2016-8-16 19:52:09 | 只看该作者
为什么还需要nodeJs啊表示很疑惑,麻烦能解答下吗
ChinaGDG.com
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2016-8-17 09:57:34 | 只看该作者
cccai 发表于 2016-8-16 19:52
为什么还需要nodeJs啊表示很疑惑,麻烦能解答下吗


其实这里主要用的是node的包管理工具NPM来安装我们项目需要的依赖包,像Angular2, typescript, live-server等等,只不过这里我们也顺便用了一个NodeJS的小型服务器(live-server),这样我们就不用再装一个tomcate来启动我们的应用了。
既然NPM是NodeJS的包管理工具,自然就得装在NodeJS的安装目录下了,那么我们就得需要先安装NodeJS了(NodeJS在0.6.3版本以后内建NPM) ^_^
ChinaGDG.com
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2016-8-17 10:06:02 | 只看该作者
悟箜 发表于 2016-8-17 09:57
其实这里主要用的是node的包管理工具NPM来安装我们项目需要的依赖包,像Angular2, typescript, live-se ...


当然你也可以一个个把这些我们需要的依赖包下载下来放到你的项目里(像以前传统的引入jquery的方式),但是这里我们的依赖确实是很多也很大,如果还是用这种方式把第三方包放在项目中,项目会变得很大,上传也会很慢,如果我们用NPM来管理,我们就不需要把这些第三方的包也上传到服务器或者分享给他人,只需要跑一下npm install就可以安装所有的这些依赖包了
ChinaGDG.com
回复 支持 反对

使用道具 举报

8#
发表于 2016-8-18 09:11:18 | 只看该作者
悟箜 发表于 2016-8-17 10:06
当然你也可以一个个把这些我们需要的依赖包下载下来放到你的项目里(像以前传统的引入jquery的方式),但 ...


之前没有用过npm,感觉学习起来有点难度增加了。而且使用的好多es6的规范,浏览器解析不了,搜索了下说是要预编译一下,真是不懂啊,感觉和之前的js差距比较大
ChinaGDG.com
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2016-8-18 21:28:01 | 只看该作者
cccai 发表于 2016-8-18 09:11
之前没有用过npm,感觉学习起来有点难度增加了。而且使用的好多es6的规范,浏览器解析不了,搜索了下说是 ...


这里NPM只是用作依赖包的管理,不需要了解那么深,至于ES6语法糖,多写写就习惯了,还是在向好的方向发展的,加油^_^
ChinaGDG.com
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表