🌐 AI搜索 & 代理 主页
Skip to content

Conversation

@tmorehouse
Copy link
Member

@tmorehouse tmorehouse commented Nov 23, 2019

Describe the PR

Various minor code optimizations to reduce minified code base. i.e.

  • array.filter(Boolean) (or array.filter(x => x)) => array.filter(identity) (from utils/identity.js)
  • Boolean(expression) => expression (except where Boolean explicitly needed, then use either !!expression or !expression)
  • String(expression) => toString(expression) (from utils/to-string.js. Note toString JSON stringifies plain objects, and returns '' for null/undefined)
  • Move static regular expressions to constants where possible (to pre-compile them for performance reasons)
  • etc.

Justification: terser does not auto convert Boolean(expression) to !!expression, nor String(expression) to ''+expression, etc (unless the unsafe compression option is enabled, which also has other "optimizations" that may cause problems with some browsers). Boolean and String are used in many of our components, so this will help reduce minified code base somewhat, even though the lines of code have increased slightly.

To Do:

  • Change import toString from '../../utils/to-string' to import { toString } from '../../utils/string'
  • Change pareseInt(val, 10) to toInteger(val) (import { toInteger } from '../../utils/number')
  • Change pareseFloat(val) to toIFloat(val) (import { toFloat } from '../../utils/number')
  • Create string and number utilities for commonly uses operations and string prorotype calls and global methods (i.e. parseInt => toInteger, parseFloat => toFloat, etc), which should improve minimization

PR checklist

What kind of change does this PR introduce? (check at least one)

  • Bugfix
  • Feature
  • Enhancement
  • ARIA accessibility
  • Documentation update
  • Other (please describe) code optimizations

Does this PR introduce a breaking change? (check one)

  • No
  • Yes (please describe)

The PR fulfills these requirements:

  • It's submitted to the dev branch, not the master branch
  • When resolving a specific issue, it's referenced in the PR's title (i.e. [...] (fixes #xxx[,#xxx]), where "xxx" is the issue number)
  • It should address only one issue or feature. If adding multiple features or fixing a bug and adding a new feature, break them into separate PRs if at all possible.
  • The title should follow the Conventional Commits naming convention (i.e. fix(alert): not alerting during SSR render, docs(badge): update pill examples, fix typos, chore: fix typo in README, etc). This is very important, as the CHANGELOG is generated from these messages.

If new features/enhancement/fixes are added or changed:

  • Includes documentation updates (including updating the component's package.json for slot and event changes)
  • Includes any needed TypeScript declaration file updates
  • New/updated tests are included and passing (if required)
  • Existing test suites are passing
  • The changes have not impacted the functionality of other components or directives
  • ARIA Accessibility has been taken into consideration (Does it affect screen reader users or keyboard only users? Clickable items should be in the tab index, etc.)

If adding a new feature, or changing the functionality of an existing feature, the PR's
description above includes:

  • A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

@codecov
Copy link

codecov bot commented Nov 23, 2019

Codecov Report

Merging #4418 into dev will increase coverage by <.01%.
The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff             @@
##              dev    #4418      +/-   ##
==========================================
+ Coverage   99.91%   99.91%   +<.01%     
==========================================
  Files         243      242       -1     
  Lines        4637     4652      +15     
  Branches     1308     1308              
==========================================
+ Hits         4633     4648      +15     
  Misses          3        3              
  Partials        1        1
Impacted Files Coverage Δ
src/components/breadcrumb/breadcrumb.js 100% <ø> (ø) ⬆️
src/utils/warn.js 100% <ø> (ø) ⬆️
src/mixins/dropdown.js 100% <ø> (ø) ⬆️
src/components/jumbotron/jumbotron.js 100% <ø> (ø) ⬆️
src/components/navbar/navbar.js 100% <ø> (ø) ⬆️
src/utils/prefix-prop-name.js 100% <ø> (ø) ⬆️
src/components/dropdown/dropdown-form.js 100% <ø> (ø) ⬆️
src/components/input-group/input-group.js 100% <ø> (ø) ⬆️
src/components/form-group/form-group.js 100% <ø> (ø) ⬆️
src/utils/suffix-prop-name.js 100% <ø> (ø) ⬆️
... and 63 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b02f93d...c3b5e7e. Read the comment docs.

@tmorehouse tmorehouse merged commit ee1c10e into dev Nov 28, 2019
@tmorehouse tmorehouse deleted the tmorehouse/optimize branch November 28, 2019 20:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants