100 preguntas sobre el desarrollo front-end de Vue (actualización continua)

1. El papel de la exportación predeterminada es que
la exportación se utiliza principalmente para generar la interfaz de las variables del módulo externamente, y un archivo puede entenderse como un módulo. exportar es exportar.

Importar es cargar otro módulo con una interfaz de exportación en un módulo e importar es importar.

2. Qué tipo de contenido debe colocarse en el valor predeterminado de exportación y qué tipo de contenido no debe colocarse en él

No se puede establecer la propiedad 'tableData' de indefinido

  1. El papel de la función de flecha: ayuda para obtener la instancia actual de vue

  2. Cómo almacenar información del usuario Se puede acceder a la cookie
    localStorge

  3. El papel de vuex
    Data sharing
    Tenga en cuenta que los datos compartidos se borrarán cada vez que se actualice la página

  4. Subir archivos
    Use el componente <el-update> en element-ui
    para proporcionar dos métodos
    1) acción, conectarse a un espacio de almacenamiento de terceros
    2) carga personalizada y vincular una función para procesar, usar http-requestmétodos para vincular, como vincular la función handleRequets , puede usar handleRequest para enviar una solicitud al backend y dejar que el backend almacene

  5. La solución al desajuste entre las versiones de nodejs y npm

Descripción del problema, reinstalé la versión inferior de npm y luego no coincidía con la versión del nodo, no importa qué comando npm esté permitido, informará un error locamente

npm WARN npm npm does not support Node.js v18.15.0
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11, 12.
npm WARN npm You can find the latest version at https://nodejs.org/
npm ERR! cb.apply is not a function

npm ERR! A complete log of this run can be found in:
npm ERR!     D:\nodejs\node_cache\_logs\2023-04-07T02_51_34_588Z-debug.log
PS E:\gitProject\demo\vue> npm install npm@9.5.0 -g
npm WARN npm npm does not support Node.js v18.15.0
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm You can find the latest version at https://nodejs.org/
npm ERR! cb.apply is not a function

Mi solución es similar al propietario, pero no encontré la carpeta npm-cache, encontré la carpeta global npm, luego la eliminé y luego reinstalé la versión correspondiente de npm

  1. La versión del reproductor de video no coincide
npm -v  9.5.0
node -v 18.15.0
vue -V  @vue/cli 5.0.8

Probé los siguientes comandos para instalar vue-video-player

npm install vue-video-player --save
npm i vue-video-player
npm install video.js @videojs-player/vue --save

todo falló

npm ERR! code ERESOLVE                                  
npm ERR! ERESOLVE unable to resolve dependency tree     
npm ERR! 
npm ERR! While resolving: demo@0.1.0
npm ERR! Found: video.js@8.0.4
npm ERR! node_modules/video.js
npm ERR!   dev video.js@"^8.0.4" from the root project  
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer video.js@"7.x" from vue-video-player@6.0.0
npm ERR! node_modules/vue-video-player
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! D:\nodejs\node_cache\_logs\2023-04-07T02_37_39_394Z-eresolve-report.txt

Solución: La solución también es muy mágica. Al principio, parecía que mi propio videojs y el video.js requerido por vue-video-player no coincidían. Luego tuve un capricho, así que simplemente usé video.js para lograrlo. .,
ejecutó el siguiente comando
npm install --save-dev video.js
, y luego descubrí que el tipo video.js es difícil de operar (no hay un tutorial en Internet),
así que mordí la bala y leí el informe de error nuevamente
¡Jeje! Realmente me hizo descubrir
npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps
, así que lo ejecuté
npm install video.js @videojs-player/vue --save --force
de nuevo, ¡y funcionó! ! ! , por supuesto, también puede deberse a que instalé video.js (porque he estado comentando vue-video-player antes, por lo que en realidad no tengo forma de determinar cuándo y en qué paso se resolvió este problema), la razón específica por la que No entraré en detalles, hablaré de eso cuando regrese de mis estudios.
inserte la descripción de la imagen aquí

  1. ¿Cómo oculta la tabla electrónica de ElementUI una determinada columna?

  2. Cómo realizar el salto de página y asignar a otra variable de página

  3. Ocho formas en que vue realiza saltos de página y parámetros de paso

  4. Establecer una columna de el-table como un botón
    Agregar un componente de botón directamente en la tabla

  5. Pasar valor del componente principal al componente secundario

    props es un objeto que contiene todos los datos pasados ​​del componente principal al componente secundario.
    props+setup Sin embargo, no soy muy bueno usando la configuración, porque nunca he usado un valor antes, y siento que tengo que cambiar los datos y el método originales, temiendo que se cambien más errores. los cambios en las propiedades en
    props
    (porque el atributo en prop se asigna dinámicamente), y luego este atributo no se puede this.obtener directamente en los métodos, por lo que debe monitorear sus cambios y asignar el valor si cambia.

    Componente principal Father.vue

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <demo1 :message="message"></demo1>
  <button @click="alter">父组件传值</button>
</template>

<script>
import demo1 from "@/components/demo1";

export default {
    
    
  name: 'App',
  components: {
    
    
    demo1
  },
  data(){
    
    
    return{
    
    
      message:'seeYou',
    }
  },
  methods:{
    
    
    alter(){
    
    
      this.message="happy"
    }
  }
}
</script>

<style>
#app {
    
    
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

子组件
<template>
<div>
  <div>{
    
    {
    
    msg}}</div>
  <button @click="msg='hello'">改变msg</button>
</div>
</template>

<script>
export default {
    
    
  // eslint-disable-next-line vue/multi-word-component-names
  name: "demo1",
  props:{
    
    
    message:String
  }
  ,
  watch:{
    
    
    message:function (newData){
    
    
      this.msg=newData;
      this.getMessage(this.message)

    }
  },
  data(){
    
    
    // return obj
    return {
    
    
      msg:'',
    }
  },
  methods:{
    
    
    getMessage(){
    
    
      console.log(this.msg)

    }
  }
}
</script>

<style scoped>

</style>
  1. El
    artículo de configuración de vue3 comprende la diferencia entre setup() y <script setup><script> en vue3

  2. Cuatro niveles de ámbito en vue
    Ámbito global
    Ámbito de subárbol
    Ámbito de componente (se puede entender como una clase)
    Ámbito de instancia (se puede entender como un objeto)
    De hecho, debería haber un ámbito de bloque de código (let)

  3. Native js se da cuenta de la descarga de archivos

  4. Cómo descarga o exporta archivos el frontend desde el backend

  5. img vincula dinámicamente el atributo src

    注意如果是vue项目文件夹下的资源(例如assets目录)需要require函数
    
//img标签
<img :src=imgSrc>

data:{
    
    
return{
    
    
imgSrc=require(imgUrl)//imgUrl:图片的相对地址
}
}
  1. ¿Cómo hacer que el contenido de la etiqueta span en el div se distribuya uniformemente en el div?

  2. Error:
    Runtime directive used on component with non-element root node.
    Significa que la instrucción personalizada no se puede colocar en el componente, sino en su propio elemento, es decir, el v-show utilizado aquí no se puede colocar en el componente personalizado, sino en la etiqueta original On, por lo que una capa de div se establece aquí

  3. Al especificar dependencias en Vue.js u otros paquetes npm, puede usar los símbolos "~" y "^" para especificar los números de versión. Diferencia:
    la diferencia entre ellos es cómo actualizar versiones menores de paquetes y parchear actualizaciones de seguridad.
    Por ejemplo, suponiendo que la versión actual es Vue.js 2.5.0:

    Si especifica una dependencia de Vue.js en el formato ~2.5.0, puede actualizar a cualquier versión de 2.5.x (por ejemplo, 2.5.1, 2.5.2, etc.).
    Si especifica una dependencia de Vue.js en el formulario ^2.5.0, puede actualizar a cualquier versión de 2.xx (por ejemplo, 2.6.0, 2.7.0, etc.).
    En la práctica, generalmente se recomienda usar el símbolo ^ para especificar el número de versión de una dependencia, a menos que el parche de seguridad correspondiente a una versión específica del paquete sea muy importante y no desee aceptar automáticamente otras actualizaciones menores.

El uso de echarts en vue3 se presenta
globalmente y
se monta en la aplicación en el archivo de entrada main.js

//注册
import * from as echarts from 'echarts'
app.config.globalProperties.$echarts=echarts
//组件中使用
this.$echarts

Uso local, vinculación inicial a una instancia

//在使用的组件上
import * from as echarts from 'echarts'
let chart1 = echarts.init(document.getElementById('cpu'));

Aviso:

echarts4:
 import echarts from 'echarts'
echarts5:
 import * as echarts from 'echarts'
  1. Vue3 introduce error dataV
ERROR in ./node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue?vue&type=template&id=5b231048 (./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue?vue&type=template&id=5b231048)
Module Error (from ./node_modules/vue-loader/dist/templateLoader.js):

VueCompilerError: <template v-for> key should be placed on the <template> tag.
at E:\gitProject\demo\vue\node_modules@jiaminghi\data-view\lib\components\decoration3\src\main.vue:9:11
7 | >
8 | <rect
9 | :key=“i”
| ^^^^^^^^
10 | :fill=“mergedColor[0]11 | :x=“point[0] - halfPointSideLength”

La solución dada por el proyecto dataV github

solución: utiliza el atributo :key="i" para declarar una variable de bucle i, y esta :key se suele utilizar para identificar de forma única cada elemento del bucle. Sin embargo, este atributo debe colocarse en la etiqueta que contiene el ciclo, no en el elemento real sobre el que desea realizar el ciclo.
Es decir, :key="i" muévelo a la etiqueta de la plantilla.

  <template
        v-for="(point, i) in points"  :key="i"
      >
        <rect
          :fill="mergedColor[0]"
          :x="point[0] - halfPointSideLength"
          :y="point[1] - halfPointSideLength"
          :width="pointSideLength"
          :height="pointSideLength"
        >
          <animate
            v-if="Math.random() > 0.6"
            attributeName="fill"
            :values="`${mergedColor.join(';')}`"
            :dur="Math.random() + 1 + 's'"
            :begin="Math.random() * 2"
            repeatCount="indefinite"
          />
        </rect>
      </template>
  1. La función del proxy
    proxyObj es un objeto que se utiliza para configurar los ajustes del proxy de la aplicación Vue.js. En la configuración de devServer en el archivo vue.config.js, habilite el proxy pasando este objeto a la propiedad del proxy.
    La configuración del proxy puede reenviar ciertas solicitudes enviadas por su navegador a otro servidor. En una aplicación Vue.js, la configuración del proxy generalmente se usa para reenviar solicitudes de front-end al servidor de back-end para la interacción y colaboración entre el front-end y el front-end. Por ejemplo, las solicitudes enviadas por una aplicación front-end a http://localhost:8081/api se pueden enviar a otro servidor, como http://example.com/api, para que el servidor back-end pueda manejar la peticiones.
    En este ejemplo, el objeto proxyObj establece dos proxies:

    Las solicitudes de la ruta / se envían a http://43.143.212.177:9090.
    Las solicitudes de la ruta /ws se envían a ws://43.143.212.177:9091.

    A través de esta configuración de proxy, la aplicación Vue.js puede interactuar con el servidor especificado, realizar el desarrollo por separado de front-end y back-end y evitar de manera efectiva los problemas de solicitud entre dominios.

Supongo que te gusta

Origin blog.csdn.net/m0_51312071/article/details/129942246
Recomendado
Clasificación