zoukankan      html  css  js  c++  java
  • Angular项目新建

    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加载就表示成功了:

    lazyload

    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。纯属个人见解,如有错误疏漏之处望不吝赐教。

  • 相关阅读:
    初学Android: 四大组件之Activity
    jQuery Pagination Plugin ajax分页控件
    PHPExcel 多工作表 导入
    PHPExcel 多工作表 导出
    js常用方法
    如何让多个不同版本的jquery库共存
    总结机器学习部分计算原理—续
    第四周学习进度报告
    总结机器学习部分计算原理
    数据清洗报告
  • 原文地址:https://www.cnblogs.com/jehorn/p/9603781.html
Copyright © 2011-2022 走看看