iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

專案建立

本次專案主要在Electron中套用angular,於GitHub套用已整合樣本,並安裝所需套件完整專案建立.

參考樣本連結:https://github.com/maximegris/angular-electron

  • Angular(前端):主要執行功能UI設計,使用Typescript進行功能開發
  • Electron(後端):單機資料儲存與服務執行

https://ithelp.ithome.com.tw/upload/images/20230917/201242380tk9gUn3Mj.png

  • 安裝angular-cli安裝:提供angular component建立

npm install -g @angular/cli

專案執行

指令 描述
npm run ng:serve 在網絡瀏覽器中執行應用程序(DEV 模式)
npm run web:build 構建可直接在網絡瀏覽器中使用的應用程序。 您構建的文件位於 /dist 文件夾中。
npm run electron:local 構建應用程序可以在本地啟動
npm run electron:build 依據開發使用的作業系統構建打包應用程式,提供部署使用.

https://ithelp.ithome.com.tw/upload/images/20230917/20124238IfERzVb9h2.png

執行結果:單機運行成功
https://ithelp.ithome.com.tw/upload/images/20230917/201242383QgDaVQ2u5.png

UI套件安裝

npm install primeng
npm install primeicons

angular.json

...
"styles": [
"node_modules/primeicons/primeicons.css",
"node_modules/primeng/resources/themes/lara-light-blue/theme.css",
"node_modules/primeng/resources/primeng.min.css"
    ...
]

styles.css

@import "primeicons/primeicons.css";
@import "primeng/resources/themes/lara-light-blue/theme.css";
@import "primeng/resources/primeng.css";

route module簡化頁面切換路徑

const routes: Routes = [
  {
    path: '',
    redirectTo: 'home',
    pathMatch: 'full'
  },
  { path: 'home', component: HomeComponent },
  { path: 'detail', component: DetailComponent },
  {
    path: '**',
    component: PageNotFoundComponent
  }
];

detail頁面套入表格UI

export class DetailComponent implements OnInit {
  products!: Product[];

  statuses!: SelectItem[];

  clonedProducts: { [s: string]: Product } = {};
  constructor(private productService: ProductService, private messageService: MessageService) { }

  ngOnInit():void {
    void this.productService.getProductsMini().then((data: Product[]) => {
      this.products = data;
    });

    this.statuses = [
      { label: 'In Stock', value: 'INSTOCK' },
      { label: 'Low Stock', value: 'LOWSTOCK' },
      { label: 'Out of Stock', value: 'OUTOFSTOCK' }
    ];
  }

  onRowEditInit(product: Product) {
    this.clonedProducts[product.id as string] = { ...product };
  }

  onRowEditSave(product: Product) {
    if (product.price && product.price > 0) {
      delete this.clonedProducts[product.id as string];
      this.messageService.add({ severity: 'success', summary: 'Success', detail: 'Product is updated' });
    } else {
      this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Invalid Price' });
    }
  }

執行結果

https://ithelp.ithome.com.tw/upload/images/20230917/20124238zpnBTeBrY8.png

小結

本日完成專案建立與UI套件安裝與測試,後續開始建立應用程式資料存取功能.


上一篇
Day 1 - 開賽前言
下一篇
Day 3 - 後端環境架構(Express) - 1
系列文
Electron Angular軟體架構與簡易功能實作學習路程實記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言