• Vue 3 API All In One


    Vue 3 API All In One

    Vue 3 API 汇总

    https://vuejs.org/api/

    Global API

    Application

    createApp()
    createSSRApp()
    app.mount()
    app.unmount()
    app.provide()
    app.component()
    app.directive()
    app.use()
    app.mixin()
    app.version
    app.config
    app.config.errorHandler
    app.config.warnHandler
    app.config.performance
    app.config.compilerOptions
    app.config.globalProperties
    app.config.optionMergeStrategies
    

    General

    version
    nextTick()
    defineComponent()
    defineAsyncComponent()
    defineCustomElement()
    

    Composition API ✅

    setup()

    https://vuejs.org/api/composition-api-setup.html

    Basic Usage
    Accessing Props
    Setup Context
    Usage with Render Functions
    

    Reactivity: Core

    ref()
    computed()
    reactive()
    readonly()
    watchEffect()
    watchPostEffect()
    watchSyncEffect()
    watch()
    

    Reactivity: Utilities

    isRef()
    unref()
    toRef()
    toRefs()
    isProxy()
    isReactive()
    isReadonly()
    

    Reactivity: Advanced

    shallowRef()
    triggerRef()
    customRef()
    shallowReactive()
    shallowReadonly()
    toRaw()
    markRaw()
    effectScope()
    getCurrentScope()
    onScopeDispose()
    

    Lifecycle Hooks

    onMounted()
    onUpdated()
    onUnmounted()
    onBeforeMount()
    onBeforeUpdate()
    onBeforeUnmount()
    onErrorCaptured()
    onRenderTracked()
    onRenderTriggered()
    onActivated()
    onDeactivated()
    onServerPrefetch()
    

    Dependency Injection

    provide()
    inject()
    

    Options API

    Options: State

    data
    props
    computed
    methods
    watch
    emits
    expose
    

    Options: Rendering

    template
    render
    compilerOptions
    

    Options: Lifecycle

    beforeCreate
    created
    beforeMount
    mounted
    beforeUpdate
    updated
    beforeUnmount
    unmounted
    errorCaptured
    renderTracked
    renderTriggered
    activated
    deactivated
    serverPrefetch
    

    Options: Composition

    provide
    inject
    mixins
    extends
    

    Options: Misc

    name
    inheritAttrs
    components
    directives
    

    Component Instance

    $data
    $props
    $el
    $options
    $parent
    $root
    $slots
    $refs
    $attrs
    $watch()
    $emit()
    $forceUpdate()
    $nextTick()
    

    Built-ins

    Directives

    v-text
    v-html
    v-show
    v-if
    v-else
    v-else-if
    v-for
    v-on
    v-bind
    v-model
    v-slot
    v-pre
    v-once
    v-memo
    v-cloak
    

    Components

    <Transition>
    <TransitionGroup>
    <KeepAlive>
    <Teleport>
    <Suspense>

    Special Elements

    <component>
    <slot>

    Special Attributes

    key
    ref
    is
    

    Single File Component ✅

    Syntax Specification

    Overview
    Language Blocks
    Automatic Name Inference
    Pre-Processors
    Src Imports
    Comments
    

    <script setup>

    https://vuejs.org/api/sfc-script-setup.html

    Basic Syntax
    Reactivity
    Using Components
    Using Custom Directives
    defineProps() & defineEmits()
    defineExpose()
    useSlots() & useAttrs()
    Usage alongside normal `<script>`
    Top-level await
    TypeScript-only Features
    Restrictions
    

    CSS Features

    Scoped CSS
    CSS Modules
    v-bind() in CSS
    

    Advanced APIs

    Render Function

    h()
    mergeProps()
    cloneVNode()
    isVNode()
    resolveComponent()
    resolveDirective()
    withDirectives()
    withModifiers()
    

    Server-Side Rendering

    renderToString()
    renderToNodeStream()
    pipeToNodeWritable()
    renderToWebStream()
    pipeToWebWritable()
    renderToSimpleStream()
    useSSRContext()
    

    TypeScript Utility Types

    PropType<T>
    ComponentCustomProperties
    ComponentCustomOptions
    ComponentCustomProps
    CSSProperties
    

    Custom Renderer

    createRenderer()
    

    demo

    <!-- 
      Use the composition API when:
      1. The component is too large, and should be organized by logical concerns(feature). 
      2. Code needs to be extracted and reused across multiple components, as an alternative to Mixins/Scoped Slots.
      3. Type safety in TypeScript is important.
    -->
    <template>
      <div>
        <p>Spaces Left: {{ spacesLeft }} out of {{ capacity }}</p>
        <h2>Attending</h2>
        <ul>
          <li 
            v-for="(name, index) in attending"
            :key="index">
            {{ name }}
          </li> 
        </ul>
        <button @click="increaseCapacity()">Increase Capacity</button>
      </div>
    </template>
    
    <script>
    // If using Vue 2 with Composition API plugin configured:
    // import { ref, computed } from "@vue/composition-api"; 
    // Vue 3
    import { ref, computed } from "vue";
    export default {
      setup() {
        // ref === Reactive Reference, Wraps primitives in an object to track changes
        const capacity = ref(4);
        const attending = ref(["Tim", "Bob", "Joe"]);
        // Computed Property
        const spacesLeft = computed(() => {
          // Access the value of a Reactive Reference by calling `.value`
          return capacity.value - attending.value.length;
        });
        // Methods declared as functions
        function increaseCapacity() {
          capacity.value++;
        }
        // Gives our template access to these objects & functions
        return {
          capacity,
          attending,
          spacesLeft,
          increaseCapacity,
        };
      }
    };
    </script>
    
    
    

    先定义 <script setup>, 后使用 <template>

    
    <script setup>
    console.log('hello script setup');
    
    import MyComponent from './MyComponent.vue';
    
    import Foo from './Foo.vue';
    import Bar from './Bar.vue';
    const someCondition = true;
    
    // Recursive Components (alias)
    import { FooBar as FooBarChild } from './components';
    
    // Namespaced Components
    import * as Form from './form-components'
    
    import { capitalize } from './helpers';
    
    import { ref } from 'vue';
    const count = ref(0);
    
    // variable
    const msg = 'Hello!';
    
    // functions
    function log() {
      console.log(msg)
    }
    </script>
    
    
    <template>
      <Form.Input>
        <Form.Label>label</Form.Label>
      </Form.Input>
      <FooBarChild />
      <component :is="Foo" />
      <component :is="someCondition ? Foo : Bar" />
      <MyComponent />
      <!--  不推荐,避免和原生自定义元素混淆 (web components / custom element / 自定义 HTML 标签)
         <my-component>
       -->
      <div>{{ capitalize('hello') }}</div>
      <button @click="count++">{{ count }}</button>
      <div @click="log">{{ msg }}</div>
    </template>
    
    

    先使用 <template>, 后定义 <script setup>

    
    <template>
      <Form.Input>
        <Form.Label>label</Form.Label>
      </Form.Input>
      <FooBarChild />
      <component :is="Foo" />
      <component :is="someCondition ? Foo : Bar" />
      <MyComponent />
      <!--  不推荐,避免和原生自定义元素混淆 (web components / custom element / 自定义 HTML 标签)
         <my-component>
       -->
      <div>{{ capitalize('hello') }}</div>
      <button @click="count++">{{ count }}</button>
      <div @click="log">{{ msg }}</div>
    </template>
    
    <script setup>
    console.log('hello script setup');
    
    import MyComponent from './MyComponent.vue';
    
    import Foo from './Foo.vue';
    import Bar from './Bar.vue';
    const someCondition = true;
    
    // Recursive Components (alias)
    import { FooBar as FooBarChild } from './components';
    
    // Namespaced Components
    import * as Form from './form-components'
    
    import { capitalize } from './helpers';
    
    import { ref } from 'vue';
    const count = ref(0);
    
    // variable
    const msg = 'Hello!';
    
    // functions
    function log() {
      console.log(msg)
    }
    </script>
    
    

    refs

    https://www.cnblogs.com/xgqfrms/p/16023192.html



    ©xgqfrms 2012-2020

    www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

    原创文章,版权所有©️xgqfrms, 禁止转载 ️,侵权必究⚠️!


  • 相关阅读:
    18个功能强大的HTML5 和JavaScript游戏引擎库
    10 个超棒的 jQuery 视频插件
    HTML5播放视频音频
    CSS代码重构与优化之路
    推荐10款web前端的 HTML5 开发框架和开发工具
    JS中日期相关函数
    技术笔记1:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password)
    图解HTTP阅读笔记(1)-网络基础TCP/IP
    框架和设计模式的区别
    SSH与MVC
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/16034483.html
Copyright © 2020-2023  润新知