美文网首页
【前端】Vue.js 基础篇(中)

【前端】Vue.js 基础篇(中)

作者: irenb | 来源:发表于2020-02-03 16:12 被阅读0次

Vue 实例的生命周期

  • 概念:从 Vue 实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件统称为生命周期。
    生命周期的四个阶段:create(初始)、mount(加载)、update(更新)、destroy(销毁)


    Vue 实例的生命周期

    常用方法:

  1. created:Vue 实例创建完成后调用,处理数据。
  2. mounted:挂载完成(完成渲染页面),el 挂载到实例上后调用,监听页面显示。
  3. beforeDestroy:即将销毁,实例销毁之前调用。主要解绑一些使用 addEventListener 监听的事件等。
var app = new Vue({
  el: '#app',
  data: {
    msg: 'ok'
  },
  methods: {
    show() {
      console.log('执行了show方法')
    }
  },

  /**
   * 生命周期函数--创建完成:Vue 实例创建完成后调用
   */
  created: function() {
    // data 和 methods 都已经被初始化好了!处理数据...
    console.log(this.msg) // ok
  },

  /**
   * 生命周期函数--挂载完成/完成渲染页面,el 挂载到实例上后调用
   */
  mouted: function() {
    console.log(this.$el) // <div id="app"></div>
  },

  /**
   * 生命周期函数--重新渲染页面(data发生改变时执行)
   */
  update: function() {
    // data数据改变,页面重新渲染的原理:
    // data中的数据发生改变时,会先根据data中的最新的数据,在内存中重新渲染出一份最新的虚拟DOM(即内存中的DOM树),当最新的内存DOM树被更新之后,会把最新的内存DOM树重新渲染到真实的页面中去。这样就完成了数据从 data(Model层)到 view(视图层)的更新。
  },

  /**
   * 生命周期函数--即将销毁
   */
  beforeDestroy: function() {
    
  }
})

网络请求

除了 vue-resource 之外,还可以使用 axios 的第三方包实现数据的请求
常用请求:get、post、jsonp

JSONP:JSON with Padding,JSONP 和 < script> 标签有关,最大的优势就是实现异步跨域的作用。JSONP 就是利用 <script> 的 src 属性,实现跨域的功能。

JSONP的实现原理:

  • 由于浏览器的安全性限制,不允许AJAX访问跨域请求(协议不同/域名不同/端口号不同的接口,浏览器认为这种访问不安全)。
  • 可以通过动态创建script标签的形式(<script>标签跨域),把script标签的src属性,指向数据接口的地址,因为script标签不存在跨域限制,这种数据获取方式,称作JSONP(注意:根据JSONP的实现原理,知晓,JSONP只支持Get请求)

具体实现过程:

  • 先在客户端定义一个回调方法,预定义对数据的操作;
  • 再把这个回调方法的名称,通过URL传参的形式,提交到服务器的数据接口;
  • 服务器数据接口组织好要发送给客户端的数据,再拿着客户端传递过来的回调方法名称,拼接出一个调用这个方法的字符串,发送给客户端去解析执行;
  • 客户端拿到服务器返回的字符串之后,当作Script脚本去解析执行,这样就能够拿到JSONP的数据了;

1.模拟前端发送 JSONP 请求

<script>
// 2.返回请求数据
function complete (data) {
  // 接收返回的 json 对象
  console.log(data);
};
</script>
 
<!-- 1.发送 JSONP 请求(支持跨域请求) -->
<!-- 指定请求地址、回调函数名称 和 回调函数的参数 -->
<script src='http://www.girls.hustonline.net?callback=complete&name=jimmy&age=18'></script>
  • 下面模拟一下实在的JSONP请求。上面是直接将script写死在html内部,这样造成的结果可能会阻塞页面的加载
var sendJSONP = function(url, callbackName) {
    var script = docuemnt.createELement('script');
    script.src = `${url}&callback=${callbackName}`;
    document.head.appendChild(script);
}
// 2.请求完成的回调函数
var complete = function(data){
  // 接收返回的 json 对象
  console.log(data);
}
// 1.发送 JSONP 请求
sendJSONP('http://girls.hustonline.net?name=jimmy&age=18', 'complete');
  • 使用 jquery 发送 JSONP 请求
$.getJSON("http://girls.hustonline.net?callback=?", function(result){
  console.log(result);
});
// 这里,我们需要关注一下url里面中callback=?里的?的内涵。jquery使用自动生成数的方式,省去了我们给回调命名的困扰。 其实,最后?会被一串字符代替,比如:json23153123。这个就代表你的回到函数名。不过,还是推荐使用$.ajax,因为你一不小心就有可能忘掉最后的?。
  • 使用 $.ajax 发送 JSONP 请求
$.ajax({
    url: 'http://girls.hustonline.net?name=jimmy',
    dataType: 'jsonp',
    success: function(result) {
       console.log(result);
    }
});

2.模拟服务器端执行一个JSONP的函数

const util = require('util'),
    http = require('http'),
    url = require('url');
let data = JSON.stringify({
    message:"I've already received"
});
http.createServer(function(req, res) {
    req = url.parse(req.url, true);
    if (!req.query.callback) res.end();
    console.log(`name is  ${req.query.name} and his age is ${req.query.age}`);
    res.writeHead(200, { 'Content-Type': 'application/javascript' })
    res.end(req.query.callback + "('" + data + "')")
}).listen(80)

Vue 组件

  • 什么是组件:组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可;

相关文章

  • 【前端】Vue.js 基础篇(下)

    【前端】Vue.js 基础篇(下)

  • 【前端】Vue.js 基础篇(中)

    Vue 实例的生命周期 概念:从 Vue 实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件统称为生命...

  • Vue基础篇(四)

    本教程分为三部分 : 基础 进阶 实战 ,深入浅出Vue.js基础篇持续 更新中 第五章 Vue.JS中的内置指令...

  • 【前端】Vue.js 基础篇(上)

    前言 前端开发发展历程,目的都是为了提高开发效率: 原生JS Jquery之类的类库(解决不同浏览器兼容性问题) ...

  • Vue基础篇(一)

    本教程分为三部分 : 基础 进阶 实战 ,深入浅出Vue.基础篇持续 更新中 --- vue.js的基本介绍和...

  • Vue基础篇(五)

    本教程分为三部分 : 基础 进阶 实战 ,深入浅出Vue.js基础篇持续 更新中 ------ 列表渲染指令v-­...

  • Vue基础学习

    Vue.js基础学习 Vue.js的基本介绍 轻量级的前端界面框架,是一套构建用户界面的渐进式框架,与其他重量级...

  • web前端开发高级

    前端高效开发框架技术与应用 Vue 基础Vue 框架简介 MVX 模式介绍Vue 框架概述如何使用 Vue.js ...

  • 前端知识库 - 收藏集 - 掘金

    如何在 Vue.js 中使用第三方库 - 前端 - 掘金在诸多 Vue.js 应用中, Lodash, Momen...

  • 伸手党系列三:使用mpvue+VantUI+flyio进行小程序

    基础介绍 mpvue: (github 地址请参见)是一个使用 Vue.js 开发小程序的前端框架。Vant W...

网友评论

      本文标题:【前端】Vue.js 基础篇(中)

      本文链接:https://www.haomeiwen.com/subject/hchqxhtx.html