[初期]Vue使用过程中的积累

发布于 2021-05-10  475 次阅读


  • 安装cnpm时报错EAI_AGAIN,EAI_AGAIN is a DNS lookup timed out error, means it is a network connectivity error or proxy related error. 解决办法:换网
  • 老师安装cnpm包时,npm install -g cnpm --registry=https://registry.npm.taobao.org变为npm install --registry=https://registry.npm.taobao.org
  • 先通过vue create [文件夹名]创建一个vue项目, 这里要注意只有选择vue2.0才能正常使用ant-design-vue, 然后通过cnpm install ant-design-vue来引入ant-design-vue, 然后就可以引用该组件库了
  • Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统
  • Vue生命周期
    • beforeCreate(创建前): 在数据观测和初始化事件还未开始,data、watcher、methods都还不存在,但是$route已存在,可以根据路由信息进行重定向等操作。
    • created(创建后):在实例创建之后被调用,该阶段可以访问data,使用watcher、events、methods,也就是说 数据观测(data observer) 和event/watcher 事件配置 已完成。但是此时dom还没有被挂载。该阶段允许执行http请求操作。
    • beforeMount(挂载前):将HTML解析生成AST节点,再根据AST节点动态生成渲染函数。相关render函数首次被调用(划重点)。
    • mounted (挂载后):在挂载完成之后被调用,执行render函数生成虚拟dom,创建真实dom替换虚拟dom,并挂载到实例。可以操作dom,比如事件监听
    • beforeUpdate:在vm.data更新之后,虚拟dom重新渲染之前被调用。这个钩子可以修改vm.data,并不会触发附加的冲渲染过程。
    • updated:虚拟dom重新渲染后调用,若再次修改$vm.data,会再次触发beforeUpdate、updated,进入死循环。
    • beforeDestroy:实例被销毁前调用,也就是说在这个阶段还是可以调用实例的。
    • destroyed:实例被销毁后调用,所有的事件监听器已被移除,子实例被销毁。
  • Vue在哪个生命周期阶段调用异步请求最佳?
    • 异步请求在哪个阶段都可以调用,因为会先执行完生命周期的钩子函数之后,才会执行异步函数,但如果考虑用户体验方面的话,在created中调用异步请求最佳,用户就越早感知页面的已加载,毕竟越早获取数据,在mounted实例挂载的时候就越及时
  • 为什么vue组件的属性,有的需要加冒号“:”,有的不用?加冒号的,说明后面的是一个变量或者表达式;没加冒号的后面就是对应的字符串字面量
  • 有冒号的:v-if和无冒号的v-for, v-if要是绑定的某一个数据而不是表达式那也无冒号
  • axios更换请求头的写法:
    • const headerThis = {
      'Content-Type': 'application/json;charset=UTF-8',
      'Authorization': ''
      }
      const instance = axios.create({
      headers: headerThis
      });
      var keyUrl = 'http://192.168.124.108:8567/api/extract-keywords';
      instance.post(keyUrl, text)
      this.$http.post(keyUrl, text).then((res)=>console.log(res))
  • 插槽本质上是为了动态生成HTML。 如果只是数据是动态的,用普通的数据绑定就可以, 如果不仅数据是动态的,HTML也是动态的,数据绑定就不行了,因为HTML语法会混在JS语法里面,导致语法错误。 用插槽其实就是解决这个问题。
  • props: clues:{type: Array, default: ()=>{}} 注意:default就只能函数,要么就是null或是1这种
  • vue用ref来像getElementById一样获取DOM
  • 使用vue.set(obj, newKey, newValue)这个方法来添加数据。使用此方法添加的数据是响应式的。在本项目中是this.$set(obj, 'name', newvalue)
  • 因为< keep-alive >,所以才有的activated deactivated
  • 在本地通过npm run serve启动时,我们本地系统的环境变量NODE_ENV值默认是development,这时就会先后加载.env和.env.development这两个文件。而当我们打包到服务器后,服务器的NODE_ENV值一般为production,则此时Vue仍会先加载.env文件,然后加载.env.production文件。
    • .env 全局默认配置文件,不论什么环境都会加载合并
    • .env.development模式用于serve,开发环境
    • .env.production模式用于build,线上环境
    • .env.test测试环境
  • 注意axios的写法:
    • axios.post(url, {'name': 'Alan'}, {headers: {'token': token}})
    • axios.get(url, {params: {name: 'Alan'}, headers: { token: token}})

暂时还没找到人生乐趣的消极家