ng2-admincss
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
ng-cli能夠直接建立文件,本文不作講解,能夠自行搜索
項目目錄web
app
文件夾是項目主要文件,其中咱們的頁面在 pages
文件夾,組件和個性化定製在 theme
文件夾。typescript
assets
用於存放一些靜態資源文件,例如圖片,字體。npm
environments
決定項目啓動的環境( prod )瀏覽器
meta
看着像是一些介紹
pages
目錄,新建一個文件夾命名爲 user
(以下圖)
在 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
文件夾,最終文件以下
而後修改兩個文件,加入咱們新建的兩個模塊,分別是
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
中加入咱們新建的 Moduleimport { 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: '用戶管理' } } } ] }, ... 省略 ] } ];
第一個模塊構建完成,頁面刷新能夠看到左邊菜單出現了咱們新建的菜單,點擊進入。
下一節的內容開始建立第一個組件。