Angular2 项目,我是这样入门的

开篇废话

这个Angular2 ,其实入门的教程已经有很多很多人写过了,但,我觉得最好的仍然是官方的文档。我英语一般般,看原档比较吃力,是从Angular.cn这里开始的。
写这篇的原因是想记录一下入门过程中的一些坑,防止下次又遇到又得查半天。同时为了能给其他有缘人也看看,就写全一点吧。

开发环境篇

  1. angular2 依赖于node.js ,我电脑上安装的node如下:
C:\Users\MidWong>node -v
v11.3.0

2、需要npm 包管理

C:\Users\MidWong>npm -v
6.4.1

Mac平台可以用homebrew安装nodejs,Windows平台可用chocolatey, 在安装nodejs时会安装npm, 检查即可。如果手动安装记得配置环境变量。

工具篇

  1. 我用的WebStorm ,当然这个没限制,看个人习惯。vscode等一众编辑器都可以。
  2. 由于需要用到http请求,官方用mooc数据测试的,而我直接用Spring Boot搭了一个restfulAPI 服务端,mooc这一步略了。服务端的内容不在本篇讨论,有机会补充。Spring Boot真是神器啊,几分钟就能做出来一个简单的API接口。

准备工作

安装angular cli 。我把这个理解为模板了,不知道合不合适。总之安装之后,好多操作都可以用简单的命令来实现。

npm install -g @angular/cli

安装完成之后,就可用ng命令来创建项目了。这一步操作,可以在终端(Windows上的命令提示符),也可以在编辑器里面的Terminal(也叫终端)里。

我比较懒,喜欢在编辑器里打开Terminal来创建,不用cd到我要的文件夹了。
image.png
ng new 项目名称

就可以创建一个angular项目了。这些步骤都可以参考文章开头的 Angular.cn 快速入门,写的更详细。

我踩的坑

1. 创建组建后,不想要了

虽然有创建组建的命令,但是没有删除的呀!这时需要删除组建文件夹/文件,然后在 app.module.ts 中删除import。
这里赞一下WebStorm,删了组建文件夹后,无用import的会有提示,选中删除就ok.

2. ts语法

一开始好不习惯这个“新语种”。但了解了它的由来后,一下就容易理解了。它是JavaScript的超集,因为JavaScript没有像诸多后端语言一样强制类型,容易写,但也容易出现一些不容易发现的Bug。ts解决了这个问题。在我看来,它就是用Java的语法写JavaScript。
怎么入门呢?我反正没去单独的学它,就只是看angular官网的代码,照猫画虎,写着写着就会了。

3. WebStorm 中的红色波浪线

好头大哦!明明和官网上的代码一模一样,就算复制过来也有些下边划红色波浪线提示这里出错。代码也能正常运行,凭啥报错呢?! 终于偶然发现,Ctrl+Alt+K 格式化一下代码,干干净净的页面,真舒服了!WebStorm 有自己的格式要求,那些代码里没用的空格/换行,在编辑器里帮助我们更容易阅读代码。这样挺好的,培养良好的编程习惯。

4. 内网穿透

大部分时间调试用Chrome,偶尔需要在真机上测试下触摸/滑动是否正常,这时候需要用到内网穿透工具了,如阿里钉钉内网穿透工具。此时需要在 ng serve 后面加一个参数 --disable-host-check

ng serve --disable-host-check

这样启动后,控制台会有个warning,忽略它,可以在手机上通过互联网访问你的项目了,就不需要手机和电脑接入同一局域网这么麻烦啦。

5.项目结构

这一部分我就不写这么快了,毕竟刚刚入门,不知道什么样的结构是合理的。但是有一点能感受到的是,能用组建就用组建,然后组装,这样容易在其他地方复用。一些至负责数据处理的,例如http请求,尽量写成通用的服务,同样为了方便以后重复使用。

6.UI框架

官方推荐的有两个,一个是大名鼎鼎的Material Design,动画效果简直舒服的不要不要的,上手也很快。另一个是阿里的NG ZORRO,组件丰富,还有现成的ng-admin中后端解决方案。如果不太在意前端设计,只是想完成该有的功能,这个ng-admin很适合,完成度很好,只要按着你的需求去改就可以。

当然,其他的前端UI框架也是可以用的,比如bootstrap,像传统的html网页里一样,在index.html中引用即可。
jQuery这个库,在html网页里特别好用,但是在这,至少我觉得是无用武之地了。

7.跨域

Angular是个前端框架,势必会前后端分离,此时会有跨域的问题。前后端都可以去解决这个问题,我选择在Spring Boot里解决,只需要一个注解即可搞定

@CrossOrigin(origins = "http://example.com", maxAge = 3600)

在控制器上加这一句注解,把安全的域名写进去。当然也可以写*号,但是不推荐。

8.打包发布

打包命令如下:

ng build

这是项目文件夹中会多出一个dist文件夹,只需要把里边的文件全部复制到tomcat中的webapps目录下,就发布完成了。

然后,问题来了。
首先,如果按照页面目录,访问下来看起来没啥区别,但是在某个路由下刷新一下页面就404了。解决方案是配置app.module.ts,添加这一行:

providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}]

像这样:

import {HashLocationStrategy , LocationStrategy} from '@angular/common';
@NgModule({  
  declarations: [AppComponent],  
  bootstrap: [AppComponent], 
  imports: [BrowserModule, routes],  
  providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}]
});

再访问时,会发现在tomcat的发布路径后,会有个# 锚点,刷新不会404了

如果,此时去浏览器F12调试,到network 标签页里观察,清除缓存并强制刷新页面(长按地址栏前面的刷新),会看到加载的文件巨大,好几M,体验不太好。
我的办法是,打包时添加参数

ng build --prod --aot 

这样,压缩打包出来的文件一班会在1M以内,访问快很多了。

总结

还没到总结的时候,先挖个坑,这篇还需要回来修改/补充内容的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容