Angular學習筆記

      網友投稿 981 2025-04-01

      配置開發環境


      開發工具

      Node.js

      VS Code / Intellij IDEA / WebStorm

      搭建NPM私服

      推薦使用Nexus,概念和配置方法同Maven私服一致,分為proxy、hosted、group三類。

      創建proxy如下:

      Remote URL:?https://registry.npmjs.org

      然后創建hosted、group,不再贅述。

      最后在home下創建.npmrc文件,其內填寫public地址,如下:

      registry=http://localhost:8081/repository/npm-public/

      NPM

      Angular 6開發,Node.js版本要求8.x或以上,npm版本要求5.x或以上。運行node -v、npm -v查看版本。

      在Windows上下載安裝包安裝即可。在RHEL、CentOS、Fedora上執行如下命令:

      $?curl?--silent?--location?https://rpm.nodesource.com/setup_8.x?|?sudo?bash?-or$?curl?--silent?--location?https://rpm.nodesource.com/setup_10.x?|?sudo?bash?-$?sudo?yum?-y?install?nodejs

      安裝Node.js后,更新npm:

      npm?i?npm@latest?-g

      NPM幫助

      npm?helpnpm?-l?列出所有命令用法npm??-h?查看某一命令用法,如:npm?ls?-hnpm?help?npm?在瀏覽器中查看幫助文檔,如:npm?help?index?(Index?of?all?npm?documentation)npm?help?foldersnpm?help?install

      運行npm ls 可查看版本是否匹配。

      運行npm view [package] 可查看某一package發布的版本,如:

      npm view ngx-bootstrap [versions]

      Angular學習筆記

      進入package目錄下,運行npm version可查看安裝的版本。

      Angular CLI

      安裝Angular CLI

      npm?install?-g?@angular/cli@latest

      注意:要用@latest

      更新Angular CLI

      Global package:

      npm?uninstall?-g?@angular/cli npm?cache?clean #?if?npm?version?is?>?5?then?use?`npm?cache?verify`?to?avoid?errors?(or?to?avoid?using?--force)npm?install?-g?@angular/cli@latest

      Local project package:

      #?use?rmdir?/S/Q?node_modules?dist?in?Windows?Command?Prompt#?use?rm?-r?-fo?node_modules,dist?in?Windows?PowerShellrm?-rf?node_modules?distnpm?install?--save-dev?@angular/cli@latestnpm?install

      ng幫助

      ng?help?顯示所有命令的幫助 ng?[command?name]?--help??顯示某一命令的幫助ng?add??Add?support?for?a?library?to?your?projectng?new??[options]?Creates?a?new?directory?and?a?new?Angular?app. ng?generate??[options]?Generates?and/or?modifies?files?based?on?a?schematic. ng?update??[options]?Updates?your?application?and?its?dependencies. ng?build??[options]?Builds?your?app?and?places?it?into?the?output?path?(dist/?by?default). ng?serve??[options]?Builds?and?serves?your?app,?rebuilding?on?file?changes. ng?test??[options]?Run?unit?tests?in?existing?project. ng?e2e??[options]?Run?e2e?tests?in?existing?project.

      常用參數:

      --aot Build using Ahead of Time compilation

      --base-href Base url for the application being built

      --i18n-file Localization file to use for i18n

      --prod Flag to set configuration to "prod"

      Available schematics:

      serviceWorker

      application

      class

      component

      directive

      enum

      guard

      interface

      module

      pipe

      service

      universal

      appShell

      library

      Angular CLI 6.0新增功能

      ng add、ng update、ng generate library是Angular CLI 6.0新增功能。

      ng?add??Add?support?for?a?library?to?your?project ng?update??[options]?Updates?your?application?and?its?dependencies. ng?generate?library??create?a?library?project?within?your?CLI?workspace

      更新package

      在Project根目錄下運行ng update后會顯示需要更新的package,可以選擇更新某一package或全部package。

      package.json中的version語法請參見The semantic versioner for npm

      npm-check-updates

      使用npm-check-updates是另一種更新package的方式:

      安裝npm-check-updates

      npm i -g npm-check-updates

      升級

      ncu -u

      安裝新版本

      npm install

      UI組件

      UI組件,建議從Angular官網推薦的前四個中選擇,它們都是開源/免費的:ag-Grid、Amexio、Angular Material、NG-ZORRO。

      ag-Grid(The best javaScript grid in the world)

      數據表格組件,支持排序、篩選、編輯、選擇、分組、聚合、旋轉等許多強大的功能和操作

      Amexio

      130+ UI組件

      支持拖拽

      響應式網頁設計

      57個主題

      支持圖表、地圖、儀表盤

      Angular Material

      Angular官方組件庫,提供表單控件、導航、布局、按鈕、彈出窗口、數據表格等組件。

      NG-ZORRO

      阿里出品的企業級UI組件,由阿里計算平臺事業部、阿里云等不同部門的一些小伙伴在原業務組件的基礎上共同構建而成,設計完全兼容并遵守Ant Design的規范,并定期會與 Ant Design React 版本保持功能同步。NG-ZORRO符合國人使用習慣,國內用戶較多。

      ng-zorro-antd 是 Angular 版本 Ant Design 的實現,這意味著只有 Ant Design 支持的交互、功能才會被 ng-zorro-antd 實現。

      NG-ZORRO

      初始化配置

      進入項目文件夾,執行以下命令將自動完成 ng-zorro-antd 的初始化配置,包括引入國際化文件,導入模塊,引入樣式文件等

      ng?add?ng-zorro-antd

      定制主題

      初始化項目時,運行ng add ng-zorro-antd --theme 會自動配置主題文件src/theme.less,修改文件內容即可自定義主題。樣式使用了Less作為開發語言,版本為2.7。

      代碼演示

      NG-ZORRO使用簡單,文檔、示例代碼全面,摘錄示例代碼如下:

      表單

      import?{?Component,?OnInit?}?from?'@angular/core'; import?{ ??AbstractControl, ??FormBuilder, ??FormGroup, ??Validators }?from?'@angular/forms'; @Component({ ??selector:?'nz-demo-form-normal-login', ??template:?` ???? ?????? ???????? ?????????? ???????????? ?????????? ??????????Please?input?your?username! ???????? ?????? ?????? ???????? ?????????? ???????????? ?????????? ??????????Please?input?your?Password! ???????? ?????? ?????? ???????? ?????????? ????????????Remember?me ?????????? ??????????Forgot?password ??????????Log?in ??????????Or ??????????register?now! ???????? ?????? ???? ??`, ??styles:?[?` ????.login-form?{ ??????max-width:?300px; ????} ????.login-form-forgot?{??????float:?right; ????} ????.login-form-button?{ ??????width:?100%; ????} ??` ??] }) export?class?NzDemoFormNormalLoginComponent?implements?OnInit?{ ??validateForm:?FormGroup; ??submitForm():?void?{????for?(const?i?in?this.validateForm.controls)?{??????this.validateForm.controls[?i?].markAsDirty();??????this.validateForm.controls[?i?].updateValueAndValidity(); ????} ??} ??constructor(private?fb:?FormBuilder)?{ ??} ??ngOnInit():?void?{????this.validateForm?=?this.fb.group({ ??????userName:?[?null,?[?Validators.required?]?], ??????password:?[?null,?[?Validators.required?]?], ??????remember:?[?true?] ????}); ??} }

      效果圖:

      NG-ZORRO Table

      使用push或splice修改nzData的數據不會生效,需如下操作:

      //?增加數據this.dataSet?=?[?...this.dataSet,?{??key????:?`${this.i}`,??name???:?`Edward?King?${this.i}`,??age????:?'32',??address:?`London,?Park?Lane?no.?${this.i}`}];//?刪除數據this.dataSet?=?this.dataSet.filter(d?=>?d.key?!==?i);

      測試

      使用NG-ZORRO組件的頁面,測試時需導入BrowserAnimationsModule和NgZorroAntdModule:

      TestBed.configureTestingModule({?????imports:?[ ???????BrowserAnimationsModule, ???????NgZorroAntdModule ?????] })

      自定義Pagination

      使用NG-ZORRO的Pagination組件,演示如何自定義組件,如何使用HttpParams。

      自定義組件PageComponent

      page.components.ts

      import?{Component,?EventEmitter,?Input,?Output}?from?'@angular/core';import?{DEFAULT_PAGE_SIZE}?from?'../../vo/page'; @Component({ ??selector:?'app-page', ??templateUrl:?'./page.component.html'})export?class?PageComponent?{ ??@Input() ??total:?number; ??@Input() ??pageIndex:?number; ??@Input() ??pageSize?=?DEFAULT_PAGE_SIZE; ??pageSizeOptions?=?[10,?20,?30,?40]; ??@Output() ??pageChange:?EventEmitter?=?new?EventEmitter(); ??indexChange(index:?any)?{????this.pageChange.emit({'pageIndex':?index,?'pageSize':?this.pageSize}); ??} ??sizeChange(size:?any)?{????this.pageChange.emit({'pageIndex':?1,?'pageSize':?size}); ??} }

      page.components.html

      ?? ??

      頁面調用

      ... pageChanged(event:?any):?void?{??this.getAirlines(event.pageIndex?-?1,?event.pageSize); } getAirlines(page:?number,?size:?number):?void?{??this.airlineService.searchAirlines(this.airline,?page,?size) ????.subscribe(data?=>?{??????this.airlines?=?data.content;??????this.totalItems?=?data.totalElements; ????}); } ...

      HttpParams

      其余方法略過,最終要調用HttpClient的get方法,需要封裝查詢參數、分頁參數(后臺使用Spring Data分頁方法):

      ...this.http.get('url',?{params}) ...

      封裝方法如下:

      import?{HttpParams}?from?'@angular/common/http'; import?{DEFAULT_PAGE_SIZE}?from?'../vo/page'; ... ??pageParams(data:?T,?page?:?number,?size?:?number):?HttpParams?{????let?params?=?new?HttpParams() ??????.set('page',?page???page.toString()?:?'0') ??????.set('size',?size???size.toString()?:?DEFAULT_PAGE_SIZE.toString()); ????Object.keys(data).forEach(function?(key)?{??????let?value?=?data[key];??????if?(value?===?'')?{????????return; ??????}??????if?(value?instanceof?Date)?{????????value?=?value.toISOString(); ??????}??????params?=?params.set(key,?value); ????});????return?params; ??}

      注意,不能寫成這樣:

      let?params?=?new?HttpParams();params.set('orderBy',?'"$key"')params.set('limitToFirst',?"1");

      HttpParams是不可變的,上面寫法將返回空值。

      CKEditor 4

      開源WYSIWYG HTML編輯器,支持GPL, LGPL, MPL協議。用法如下:

      Include CKEditor javaScript files in your application

      Install ng2-ckeditor

      npm?install?--save?ng2-ckeditor

      3.Include CKEditorModule in your main module

      import?{?CKEditorModule?}?from?'ng2-ckeditor'; @NgModule({??//?... ??imports:??????[ ????CKEditorModule ??],??//?...})export?class?AppModule?{?}

      usage

      學習資料

      Angular

      Angular中文

      TypeScript

      TypeScript中文網

      NPM Docs

      RxJS

      Learn Angular 5

      Angular 4.x 修仙之路

      NG-ZORRO

      CKEditor Ecosystem

      Angular HTTP Client - Quickstart Guide

      Angular Architecture - Smart Components vs Presentational Components

      ---------------------------------

      本文轉自Jason_川川博客51CTO博客

      前端開發

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel如何批量將一個工作表格式應用于所有工作表?
      下一篇:Vue進階十八):router的beforeEach與afterEach鉤子函數
      相關文章
      丁香五月亚洲综合深深爱| 亚洲色图综合在线| 国产亚洲欧洲精品| 狠狠亚洲狠狠欧洲2019| 精品亚洲福利一区二区| 亚洲日韩亚洲另类激情文学| 亚洲精品天堂在线观看| 亚洲最大中文字幕无码网站 | 国产亚洲色婷婷久久99精品| 国产日产亚洲系列最新| 久久亚洲中文字幕精品一区| 亚洲人妻av伦理| 中文字幕亚洲日韩无线码| 国产亚洲成归v人片在线观看| 国产精品亚洲高清一区二区| 美腿丝袜亚洲综合| 亚洲精品一品区二品区三品区| 亚洲一区二区三区香蕉| 亚洲欧洲∨国产一区二区三区| 亚洲免费观看视频| 久久精品国产精品亚洲艾| 亚洲国产成人久久综合碰碰动漫3d | 中文字幕一精品亚洲无线一区| 永久亚洲成a人片777777| 亚洲国产精品无码久久一区二区 | 亚洲AV无码成人网站在线观看| 国产亚洲欧美在线观看| 亚洲av高清在线观看一区二区 | 国产亚洲精品线观看动态图| 国产亚洲成AV人片在线观黄桃| 亚洲国产精品久久久天堂| 亚洲综合在线观看视频| 亚洲人成网站18禁止久久影院 | 亚洲人成网站在线在线观看| 久久精品国产亚洲AV天海翼| 亚洲国产一成久久精品国产成人综合| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产亚洲精品成人a v小说| 亚洲中文字幕第一页在线| 国产亚洲精品一品区99热| 亚洲最大的黄色网|