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: '用戶管理' } } } ] }, ... 省略 ] } ];
第一個模塊構建完成,頁面刷新能夠看到左邊菜單出現了咱們新建的菜單,點擊進入。
下一節的內容開始建立第一個組件。