Angular新建项目步骤记录

标签(空格分隔): Angular


1. ng new my-app
2. 启动dev环境
cd my-app
ng serve --open
3. 修改styles.cssstyles.scss,同时修改文件 .angular-cli.json 中的:
...
"styles": [
"styles.scss"
],
...

重新打包。

4. 配置全局样式
  • /src 目录下添加./scss文件夹
  • /scss 目录下添加./mixins,./utilities文件夹,添加_mixins.scss(混合), _reboot.scss(重置浏览器), _utilities.scss(工具), _variables.scss(变量)。
  • /src/styles.scss文件中引用以上:
/**
* Global styles
*/ @import "scss/_variables.scss";
@import "scss/_mixins.scss";
@import "scss/_reboot.scss";
@import "scss/_utilities.scss";

注意:Chrome并不支持12px以下的大小 使用rem时候需要注意

  • 添加font-awesome:
npm i --save font-awesome

然后在.angularcli.json中添加:

...
"apps": [{
...
"styles": [
"styles.scss",
"../node_modules/font-awesome/scss/font-awesome.scss"
],
...
}],
...
  • 还可以去iconmoon等网站定制自己的icon字体,

将字体文件放在assets目录下,这时候引用字体文件的时候,需要将路径设置为绝对路径,参见。最后在style.scss文件import即可。

5. 配置全局变量管理,应用初始化,懒加载
  • 我们使用cookie进行本地信息管理,所以需要先安装ngx-cookie
npm i --save ngx-cookie

然后在app.module.ts中:

...
@NgModule({
...
imports: [
CookieModule.forRoot(),
],
providers: [
CookieService
]
...
})
...
  • 配置全局变量和数据管理服务。

添加src/services文件夹,添加ajax.service.ts(XHR封装),data-store.service.ts(全局枚举/属性以及接口初始化服务和配置初始化),data-user.service.ts(用户账户操作信息管理服务), utilities.service.ts(静态工具类/公共工具)。

在/src/app/中添加app.config.ts,用于保存全局变量。添加app-routing.module.ts用于单独配置应用的路由以及路由懒加载。

import {RouterModule, Routes} from '@angular/router';
import {NgModule} from '@angular/core';
import {IndexComponent} from '../views/index/index/index.component'; const APP_ROUTES: Routes = [
{ path: '', component: IndexComponent }
]; @NgModule({
declarations: [
IndexComponent
],
imports: [
RouterModule.forRoot(APP_ROUTES, { useHash: Boolean(history.pushState) === false })
],
exports: [
RouterModule
],
providers: []
})
export class AppRoutingModule { }
  • 设置应用初始化

app.module.ts中调用数据初始化:

...
export function AppInit(apiDataService: ApiDataService, userDataService: UserDataService) {
apiDataService.InitConfig(); // 初始化配置数据
apiDataService.Init(); // 初始化token
userDataService.Init(); // 初始化用户信息
return () => Observable.of([]);
} @Ngmodule({
...
providers: [
...
ApiDataService,
UserDataService,
{ provide: APP_INITIALIZER, useFactory: AppInit, deps: [ApiDataService, UserDataService], multi: true }
...
]
...
})
  • lazyload模块

比如我们有一个账号登录account.module.ts。实现懒加载需要在app-routing.module.ts中这样引用:

...
const APP_ROUTES: Routes = [
{ path: '', component: IndexComponent },
{ path: 'account', loadChildren: 'views/account/account.module#AccountModule' } // 实现懒加载
]; @NgModule({
declarations: [
IndexComponent
],
imports: [
RouterModule.forRoot(APP_ROUTES, { useHash: Boolean(history.pushState) === false })
],
exports: [
RouterModule
],
providers: []
})
export class AppRoutingModule { }

在浏览器中,当出现account.module.chunk.js的js加载就表示成功了:

6. 其他
  • 应用加载显示

应用首次进入的时候会有白屏。可以添加一些loading动画使加载过程有更好的用户体验。

打开根目录下的index.html,可以在app-root中填入任何代码:

...
<body>
<app-root>
<style>
app-root {
display: flex;
justify-content: center;
align-items: center;
height: 100vh; color: #F4D8D9;
text-transform: uppercase;
font-family: -apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
Oxygen-Sans,
Ubuntu,
Cantarell,
Helvetica,
sans-serif;
font-size: 25px;
text-shadow: 2px 2px 10px rgba(0,0,0,0.2);
}
body {
background: #21ABA5;
margin: 0;
padding: 0;
} @keyframes dots {
50% {
transform: translateY(-.4rem);
}
100% {
transform: translateY(0);
}
} .d {
animation: dots 1.5s ease-out infinite;
}
.d-2 {
animation-delay: .5s;
}
.d-3 {
animation-delay: 1s;
}
</style> Loading<span class="d">.</span><span class="d d-2">.</span><span class="d d-3">.</span>
</app-root>
</body>
</html>

以上源码请参见Github。纯属个人见解,如有错误疏漏之处望不吝赐教。

最新文章

  1. AutoMapper(七)
  2. Advanced Office Password Recovery安装后显示是英文版的
  3. ICA
  4. Oracle GoldenGate 12c (12.1.2.0.1) for IBM DB2 iSeries
  5. 关于hook d3d在war3上绘图的几点疑问
  6. JavaScript中的apply与call与arguments对象
  7. 实现AJAX局部刷新以及PageMethod方法的使用
  8. 使用webview来查看网站
  9. as3 组件定义
  10. MyBatis之级联——一对多关系
  11. python 实现cm批量上传
  12. 我所不知道的Makefile语法
  13. 使用IO流写文件的一些骚操作
  14. 拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket
  15. 原创《weex面向未来的架构》
  16. make install 时指定安装路径
  17. Linux安装配置maven以及搭建nexus私服(编写启动脚本)
  18. django中celery的使用
  19. robot framework学习笔记1之_环境安装(win7)
  20. Socket IO Web实时推送

热门文章

  1. 51Nod-1259-整数划分 V2
  2. Luogu P2572 [SCOI2010]序列操作 线段树。。
  3. hdu1711 Number Sequence kmp模板
  4. vue 中引用 百度地图
  5. C# 关于时区的操作
  6. Q205 同构字符串
  7. Flask项目出现html文件无法自动补全
  8. 【实战】Oracle注入总结
  9. bugzilla部署问题
  10. google chrome 高版本 解除禁止添加本地扩展