perf: cache string helpers
This commit is contained in:
		
							parent
							
								
									51980afca2
								
							
						
					
					
						commit
						04e11187b9
					
				| @ -66,19 +66,33 @@ export const isReservedProp = /*#__PURE__*/ makeMap( | ||||
|     'onVnodeBeforeUnmount,onVnodeUnmounted' | ||||
| ) | ||||
| 
 | ||||
| const camelizeRE = /-(\w)/g | ||||
| export const camelize = (str: string): string => { | ||||
|   return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) | ||||
| function cacheStringFunction<T extends (str: string) => string>(fn: T): T { | ||||
|   const cache: Record<string, string> = Object.create(null) | ||||
|   return ((str: string) => { | ||||
|     const hit = cache[str] | ||||
|     return hit || (cache[str] = fn(str)) | ||||
|   }) as any | ||||
| } | ||||
| 
 | ||||
| const camelizeRE = /-(\w)/g | ||||
| export const camelize = cacheStringFunction( | ||||
|   (str: string): string => { | ||||
|     return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) | ||||
|   } | ||||
| ) | ||||
| 
 | ||||
| const hyphenateRE = /\B([A-Z])/g | ||||
| export const hyphenate = (str: string): string => { | ||||
| export const hyphenate = cacheStringFunction( | ||||
|   (str: string): string => { | ||||
|     return str.replace(hyphenateRE, '-$1').toLowerCase() | ||||
| } | ||||
|   } | ||||
| ) | ||||
| 
 | ||||
| export const capitalize = (str: string): string => { | ||||
| export const capitalize = cacheStringFunction( | ||||
|   (str: string): string => { | ||||
|     return str.charAt(0).toUpperCase() + str.slice(1) | ||||
| } | ||||
|   } | ||||
| ) | ||||
| 
 | ||||
| // compare whether a value has changed, accounting for NaN.
 | ||||
| export const hasChanged = (value: any, oldValue: any): boolean => | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user