zoukankan      html  css  js  c++  java
  • 【Vue】驼峰命名法和短横线命名法的转换以及Vue源码中对驼峰式和大写式查找的支持

    驼峰命名:getElementById

    短横线命名:get-element-by-id

    1、将骆驼命名规则的字符串转换成使用短横线命名法的字符串, 并且全小写 .例如:'getElementById'=>'get-element-by-id'

    正则表达式:

    function getKebabCase( str ) {
        return str.replace( /[A-Z]/g, function( i ) {
            return '-' + i.toLowerCase();
        })
    }
    console.log( getKebabCase( 'getElementById' ) ); //get-element-by-id

    采用数组的方法:

    function getKebabCase ( str ) {
     var arr = str.split('');
        str = arr.map(function ( item ){
            if( item.toUpperCase() === item ){
                return '-' + item.toLowerCase();
            }else{
                return item;
            }
        }).join( '' );
        return str;
    }
    console.log( getKebabCase( 'getElementById' ) ); //get-element-by-id

    2、将短横线命名法的字符串转换成使用骆驼命名规则的字符串, 并且全小写 .例如:'get-element-by-id'=>'getElementById'

    正则表达式:

    function getCamelCase( str ) {
        return str.replace( /-([a-z])/g, function( all, i ){
            return i.toUpperCase();
        } )
    }
    console.log( getCamelCase( 'get-element-by-id' ) ); //getElementById

    数组的方法:

    function getCamelCase( str ) {
        var arr = str.split( '-' );
        return arr.map( function( item, index ) {
            if( index === 0 ){
                return item;
            }else{
                return item.charAt(0).toUpperCase() + item.slice( 1 );
            }
        }).join('');
    }
    console.log( getCamelCase( 'get-element-by-id' ) ); //getElementById

     3.Vue源码中对驼峰式和大写式查找的支持实现代码如下:

    src/core/util/options.js

    export function resolveAsset (
      options: Object,
      type: string,
      id: string,
      warnMissing?: boolean
    ): any {
      /* istanbul ignore if */
      if (typeof id !== 'string') {
        return
      }
      const assets = options[type]
      // check local registration variations first
      if (hasOwn(assets, id)) return assets[id]
      const camelizedId = camelize(id)
      if (hasOwn(assets, camelizedId)) return assets[camelizedId]
      const PascalCaseId = capitalize(camelizedId)
      if (hasOwn(assets, PascalCaseId)) return assets[PascalCaseId]
      // fallback to prototype chain
      const res = assets[id] || assets[camelizedId] || assets[PascalCaseId]
      if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {
        warn(
          'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
          options
        )
      }
      return res
    }

    驼峰化:

    /**
     * Camelize a hyphen-delimited string.
     */
    const camelizeRE = /-(w)/g
    export const camelize = cached((str: string): string => {
      return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')
    })

    大写化:

    /**
     * Capitalize a string.
     */
    export const capitalize = cached((str: string): string => {
      return str.charAt(0).toUpperCase() + str.slice(1)
    })
  • 相关阅读:
    Unable To Open Database After ASM Upgrade From Release 11.1 To Release 11.2
    11g Understanding Automatic Diagnostic Repository.
    How to perform Rolling UpgradeDowngrade in 11g ASM
    Oracle 11.2.0.2 Patch 说明
    Pattern Matching Metacharacters For asm_diskstring
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    Upgrading ASM instance from Oracle 10.1 to Oracle 10.2. (Single Instance)
    OCSSD.BIN Process is Running in a NonRAC Environment
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    On RAC, expdp Removes the Service Name [ID 1269319.1]
  • 原文地址:https://www.cnblogs.com/vickylinj/p/13674022.html
Copyright © 2011-2022 走看看