User Tools

Site Tools


dev:angular_dev_best_practices

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
dev:angular_dev_best_practices [2019/01/22 10:12] – [Unit Tests] ericksondev:angular_dev_best_practices [2019/08/09 21:12] – [Evergreen Angular Development Best Practices] reorganizing, adding RxJS tip sandbergja
Line 4: Line 4:
 Loose collection of practices to review with developers so we can agree on UI developer guidelines. Loose collection of practices to review with developers so we can agree on UI developer guidelines.
  
 +==== Code quality ====
  
   * Run %%'ng build --prod'%% before committing.   * Run %%'ng build --prod'%% before committing.
Line 9: Line 10:
   * Run 'ng lint' before committing.   * Run 'ng lint' before committing.
     * This does more than check style, it also warns when an import pulls in too much code, among other things.     * This does more than check style, it also warns when an import pulls in too much code, among other things.
 +  * Make sure that 'ng xi18n' runs before committing (some i18n syntax errors are not caught by ng build)
   * use camelCase variables when possible for consistency.  (Note fields on IDL objects don't apply).   * use camelCase variables when possible for consistency.  (Note fields on IDL objects don't apply).
-  * Design for screen width of 1350 pixels. 
-    * This is somewhat arbitrary, but seems to cover most laptops and smaller (non-mobile) screens without being too limiting. 
-    * Browser dev tools can show the width of the current browser window. 
   * Use 2-space indentation in HTML files   * Use 2-space indentation in HTML files
   * Use 4-space indentation in Typescript and CSS files.   * Use 4-space indentation in Typescript and CSS files.
   * Avoid column widths in code that extend well beyond 80-100 characters   * Avoid column widths in code that extend well beyond 80-100 characters
 +  * Avoid subscribing to Observables within other subscriptions (nested subscriptions).  Instead, you should should use pipeable rxjs operators like switchMap, mergeMap, filter, map, and tap. [[https://github.com/cartant/rxjs-tslint-rules|Some of these tslint rules]] can be helpful for catching nested subscriptions and other RxJS issues.
 +
 +==== UI ====
 +
 +  * Design for screen width of 1350 pixels.
 +    * This is somewhat arbitrary, but seems to cover most laptops and smaller (non-mobile) screens without being too limiting.
 +    * Browser dev tools can show the width of the current browser window.
   * Use Bootstrap utility classes when possible instead of writing custom CSS.   * Use Bootstrap utility classes when possible instead of writing custom CSS.
     * https://getbootstrap.com/docs/4.2/utilities/     * https://getbootstrap.com/docs/4.2/utilities/
Line 24: Line 30:
     * <label for="patron-name" i18n>Name</label><input id="patron-name" .../>     * <label for="patron-name" i18n>Name</label><input id="patron-name" .../>
     * Beware repeatable components have unique form input IDs (extend id with incrementor, random(), etc.)     * Beware repeatable components have unique form input IDs (extend id with incrementor, random(), etc.)
-  * Give images, buttons, etcmeaningful title attributes +  * Give buttons meaningful title or aria-label attributes 
 +  * Give images meaningful alt attributes (alt="" is okay for decorative or redundant images; see the [[https://www.w3.org/WAI/tutorials/images/decision-tree/|W3C decision tree for alt text]]) 
 +  * Test keyboard navigation with tabshift+tab, arrow keys, and other keys as appropriate. Make sure that all buttons, links, and other interactive elements are focusable. 
 +    * The [[https://www.w3.org/TR/wai-aria-practices-1.1/|WAI-Aria Authoring Practices]] may help you determine the appropriate keyboard interactions for more complex widgets 
 +    * Don't add Bootstrap's "btn" class to unfocusable elements, like <span>s, <label>s, or <a>s that don't also have a "href" attribute.  Use a tag that is already focusable instead, like <button> or <a> with a "href" attribute.
  
  
dev/angular_dev_best_practices.txt · Last modified: 2023/11/24 23:05 by sandbergja

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

© 2008-2022 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a U.S. 501(c)3 non-profit organization.