使用ng2-admin搭建成熟可靠的後臺系統 -- ng2-admin(一)

使用ng2-admin搭建成熟可靠的後臺系統 -- ng2-admin(一)

1.介紹

ng2-admincss

  • 基於Angular 4+,Angular CLI,Bootstrap 4,以及許多使人敬畏的模塊和插件
  • ng2-admin的配置文件很是完善,組件也比較多,因此直接選擇ng2-admin起步,適合有必定基礎或者想直接上手搭建一套後臺系統,搭建的後臺系統會有較多動態組件,追求自動化,動態性。 例:表單將會使用service來動態生成,以及完成驗證。
  • github master分支起步,development 爲本系列文章最新版成品,建議從 master 一篇一篇跟着教程敲,第五章後每篇文章都有各自對應的「最終效果」分支.
  • 官方demo
  • 官方文檔

2.準備工做

node + webapack + ng-clihtml

  • webapck須要node提供服務,而且須要npm安裝,因此先下載一個node
  • 能夠全局安裝 ng-cli, 強大的官方腳手架(ng2-admin升級後也選用了官方腳手架)
  • 充滿電

ng2-admin (官方最新版,有部分配置文件改動,風格已換)
ng2-admin(推薦版本)(教程穩定版,master 分支,本系列教程是穩定版,有無 Angular 基礎皆可)node

從git上先把項目拉下來,而後執行android

npm install

安裝好依賴後,使用npm start直接跑起項目(默認使用的是4200端口,確保端口未佔用)git

npm start

瀏覽器輸入localhost:4200 直接訪問github

3.開始構建第一個模塊

ng-cli能夠直接建立文件,本文不作講解,能夠自行搜索

mark

項目目錄web

app 文件夾是項目主要文件,其中咱們的頁面在 pages 文件夾,組件和個性化定製在 theme 文件夾。typescript

assets 用於存放一些靜態資源文件,例如圖片,字體。npm

environments 決定項目啓動的環境( prod )瀏覽器

meta 看着像是一些介紹

  • 進入 pages 目錄,新建一個文件夾命名爲 user (以下圖)

mark

user 目錄下, 新建一個 component 文件,命名爲 user.comopnent.ts (.component 後綴表明這是一個 component 組件)

import { Component } from '@angular/core';    // 導入angular核心模塊

import 'style-loader!./user.component.scss';    // 導入scss文件

@Component({    // Component directive 聲明組件屬於 Component
    selector: 'ngt-user', // 定義組件在HTML代碼中匹配的標籤
    template: `<router-outlet></router-outlet>` // 指定組件關聯的內聯模板,這裏直接使用一個路由插座
})

export class UserComponent {    // 導出模塊,注意命名以 Component 結尾,方便區分
    constructor() {}
};

user.component.scss

$red:red;

user.routing.ts

import { Routes, RouterModule } from '@angular/router';

import { UserComponent } from './user.component'; // 導入剛纔新建的模塊

const routes: Routes = [
    {
        path: '',
        component: UserComponent,
        children: []
    }
]

export const routing = RouterModule.forChild(routes);

user.module.ts

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';

import { UserComponent } from './user.component'; // 導入剛纔新建的模塊
import { routing } from './user.routing'; // 導入路由文件

@NgModule({
    imports: [
        CommonModule,
        routing
    ],
    declarations: [
        UserComponent
    ]
})

export class UserModule {}
  • user 目錄下,新建文件夾命名爲 user-list, 包含三個文件

user-list.component.ts

import { Component } from '@angular/core';

@Component({
    selector: 'ngt-user-list',
    templateUrl: './user-list.component.html' // 組件對應的html路徑
})

export class UserListComponent { }

user-list.component.html

<div>
        用戶列表組件
    </div>

index.ts

export * from './user-list.component';
export * from './user-add';
index.ts 中導出了 user-add 文件夾,本身嘗試在 user-list 文件夾中新建 user-add文件夾,最終文件以下

mark

而後修改兩個文件,加入咱們新建的兩個模塊,分別是

user.routing.ts

import { Routes, RouterModule } from '@angular/router';

import { UserComponent } from './user.component';
import { 
    UserListComponent,
    UserAddComponent
} from './user-list';

const routes: Routes = [
    {
        path: '',
        component: UserComponent,
        children: [
            {
                path: 'list',
                component: UserListComponent
            },
            { 
                path: 'list/add',
                component: UserAddComponent
            }
        ]
    }
]

export const routing = RouterModule.forChild(routes);

user.module.ts

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';

import { UserComponent } from './user.component';
import { 
    UserListComponent,
    UserAddComponent
} from './user-list';
import { routing } from './user.routing';

@NgModule({
    imports: [
        CommonModule,
        routing
    ],
    declarations: [
        UserComponent,
        UserListComponent,
        UserAddComponent
    ]
})

export class UserModule {}
  • pages 目錄下的 page.routing.ts 中加入咱們新建的 Module
import { Routes, RouterModule }  from '@angular/router';
import { Pages } from './pages.component';
import { ModuleWithProviders } from '@angular/core';
// noinspection TypeScriptValidateTypes

// export function loadChildren(path) { return System.import(path); };

export const routes: Routes = [
  {
    path: 'login',
    loadChildren: 'app/pages/login/login.module#LoginModule'
  },
  {
    path: 'register',
    loadChildren: 'app/pages/register/register.module#RegisterModule'
  },
  {
    path: 'pages',
    component: Pages,
    children: [
      { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
      { path: 'dashboard', loadChildren: './dashboard/dashboard.module#DashboardModule' },
      { path: 'editors', loadChildren: './editors/editors.module#EditorsModule' },
      { path: 'components', loadChildren: './components/components.module#ComponentsModule' },
      { path: 'charts', loadChildren: './charts/charts.module#ChartsModule' },
      { path: 'ui', loadChildren: './ui/ui.module#UiModule' },
      { path: 'forms', loadChildren: './forms/forms.module#FormsModule' },
      { path: 'tables', loadChildren: './tables/tables.module#TablesModule' },
      { path: 'maps', loadChildren: './maps/maps.module#MapsModule' },
      { path: 'user', loadChildren: './user/user.module#UserModule' } // 在這裏如法炮製加入咱們的module(此處加載爲懶加載)
    ]
  }
];

export const routing: ModuleWithProviders = RouterModule.forChild(routes);
  • 最後須要在菜單欄加入咱們新建的頁面入口

pages.menu.ts

export const PAGES_MENU = [
  {
    path: 'pages',
    children: [
      {
        path: 'dashboard',
        data: {
          menu: {
            title: 'general.menu.dashboard',
            icon: 'ion-android-home',
            selected: false,
            expanded: false,
            order: 0
          }
        }
      },
      {
        path: 'user',
        data: {
          menu: {
            icon: 'ion-person-stalker',
            title: '後臺用戶管理',
            selected: false,
            expanded: false,
            order: 0
          }
        },
        children: [
          {
            path: 'list',
            data: {
              menu: {
                icon: 'ion-person-stalker',
                title: '用戶管理'
              }
            }
          }
        ]
      },
        ... 省略
    ]
  }
];

第一個模塊構建完成,頁面刷新能夠看到左邊菜單出現了咱們新建的菜單,點擊進入。

下一節的內容開始建立第一個組件。

相關文章
相關標籤/搜索