基于vue2快速上手vue3

5 篇文章 0 订阅
订阅专栏

创建vue项目

在这里插入图片描述
首先现在德vue3已经成为了默认德版本了,现在的创建vue项目的方式有两种:
1:使用脚手架,不走和vue2大致是一样的但是需要注意的是我们vue的版本必须要在4.5以上才能创建vue3项目,现在如果你还再使用vue2过渡到vue3的时候必须要更新开发者工具,不然它无法工作
在这里插入图片描述
在这里插入图片描述
2:使用一个新的构建工具vite这是vue团队基于vue推出的一套工具,它于weakpack不同之处就在于weaked是将我们所有的代码打包好后,然后将所有的志愿上传到服务器,然后再生成一个服务器端口,vite的原理是我先给你一个端口,你需要访问那部分资源,我再去加载
使用vite,需要自己打开项目文件夹去下载依赖

下面的知识点依然是基于脚手架去学习

分析vue3工程结构

main.js的变化

  1. vue2引入的是vue,vue3引入的是creatApp
    在这里插入图片描述
    在这里插入图片描述
  2. 因为引入的不再是一个构建函数所以创建的也不再是vm,而是app,app和vm有什么区别?其实他们的作用是类似的只不过app里去除了许多用不上的方法,属性

在这里插入图片描述
注意vue3并不兼用vue2的写法

App的变化

app中最大的变化即使书写html时不必加上一个根标签,当然你习惯了写也可以,其他的变化不大

在这里插入图片描述

常用的Composition API

组合式API

了解setup

在这里插入图片描述
例子如下:
在这里插入图片描述

在这里插入图片描述

首先式这个setup配置项的作用:在vue2的时候我们习惯于将数据放在data配置项中,方法放在methods配置项中,在vue3中就不再这样使用了,我们统一将这些数据方法都放在setup配置项中,然后将这些数据作为一个对象返回即可,在vue3中依然可以使用data,methods这些配置项,但不推荐混合使用因为setup无法访问data与methods中的数据,其次就是重名的问题

setup的两个注意点

在这里插入图片描述
首先setup中的参数问题:
首先是因为setup的执行时间所以无法访问到this(vc),所以之前通过this使用的数据都无法再访问,所以通过传递参数的方式调用这些参数

第一个参数是props:我们声明接受后(和vue2一样都要声明接受)的数据都会被做成代理对象放到props里面,这些数据都是响应式的

第2个参数是context:里面有几个十分有用的属性
attrs:props没有声明接收的属性都会放到attrs里面

slots:所拥有的插槽的信息,注意在vue3里面使用插槽必须要使用v-slot指令
在这里插入图片描述

emit:用于触发自定义事件,注意在vue3中使用自定义事件的时候,需要在触发事件的组件中使用一个emits配置项声明所定义的自定义事件,不然的话会有警告

ref函数

我们之前学习 vue2的时候有一个ref属性,这个属性的作用是为了获取dom节点

ref函数的作用

在上面的那个例子中我们提到了一个响应式数据的问题,也就是说我们上面的数据并不是响应式的我们更改setup中的数据后,页面的数据并不会更新,所以要实现相应式的数据我们必须要使用ref函数

ref函数的工作原理

我们将数据交给ref后,它会生成一个ref引用实例对象,然后它会将我们的数据保存在value中,并生成代理(set,get函数),然后根据set和get的调用页面进行更新,所以我们在使用ref函数后如果需要在setup中使用ref代理的数据就应该使用该ref引用对象中的value属性 ,但在模版中就不需要再使用value了,因为vue会自动帮我们调用.value

首先vue将我们的数据拿走后生成了一个引用实例对象
在这里插入图片描述

并通过object.denif…的方式配置好了该属性,就类似于vue2中的-data,然后再将value定义到引用对象身上方便访问
在这里插入图片描述

在这里插入图片描述

例子如下:
在这里插入图片描述

ref处理对象类型的数据

在这里插入图片描述

为普通的数据添加ref对象的时候:使用代理后可以直接通过使用value来使用对象,对象也是一样的使用,因为它深层已经为我们设置好了(它求助了reactive函数),就不需要我们自己考虑了

例子如下:
在这里插入图片描述

在这里插入图片描述

使用ref代理对象类型的数据的时候确实使用了,get和set代理了job这个变量,不过job.value底层求助了reactive来生成代理对象
在这里插入图片描述

在这里插入图片描述

reactive函数

在这里插入图片描述

作用:同样是生成响应式数据,不过这个函数只能用于生成对象类型的响应式数据,而ref则什么数据都可以使用,使用reactive代理对象数据后,在我们的script中使用对象数据也不需要加上.value(在html模版中直接使用即可)
在这里插入图片描述

其次reactive处理的对象式深层的也就是说,即使对象里面在嵌套几个对象数据它依旧能监测到

在这里插入图片描述
注意如果想要使数组里面的数据也变成响应式的数据也推荐使用reactive

对比ref和reactive

在这里插入图片描述

vue3中的响应式原理

在这里插入图片描述
vue2中检测对象数据的问题:就是说get和set只能监测的数据的修改和获取,但是对于增加属性和删除属性对象是无法监测到的,所以在vue2中对于对象增加和删除属性的方法是使用this.$set()与this.$delete方法

vue2中检测数组数据的问题:我们增加数组数据和删除数组数据只要调用数组中相应的方法vue就可以监测到但是通过下标修改数组的值是无法被vue监测到的,只能通过数组的方法进行修改

下面模拟vue2中的响应式原理
在这里插入图片描述

vue3中使用了reactive代理的方式,所以vue2中有关对象和数组的一些问题也被解决了
在这里插入图片描述

原理如下:简单点说就是使用了代理,代理了我们setup中的数据,所以我们在修改setup中的数据就可以通过代理完成,也正是因为代理所以我们可以在数据修改之前完成数据的响应(就是在代理的捕获函数中完成相应的代码),也正因为代理里面有增加删除的方法,所以vue3中没有vue2的问题
在这里插入图片描述
不过vue3的底层使用了反射,而不是直接返回对象的属性
在这里插入图片描述

计算属性和监视属性

计算属性

在vue3中虽然可以继续使用computed配置项但不推荐使用,vue3中的计算属性变成了一个函数
在这里插入图片描述

例子如下:
计算属性的简写写法
在这里插入图片描述
因为vue3中可以监视到对象属性的增删改查,所以可以改进上述代码
在这里插入图片描述

完整写法:
在这里插入图片描述

监视属性

监视ref定义的属性

监视ref定义的一个属性
在这里插入图片描述

同时监视多个属性
首先最简单的就是为每个属性都设置一个watch函数

其次可以多个属性使用一个wacth,只不过newvalue和oldvalue都变成了一个数组
在这里插入图片描述
在这里插入图片描述
如果watch函数想要设置immediate与其他的参数如何设置?直接将其作为第三个参数
在这里插入图片描述

监视reactive定义的属性

在这里插入图片描述

在这里插入图片描述

监视reactive定义的属性中的某个数据

在这里插入图片描述

监视reactive定义的属性中的某些数据

在这里插入图片描述
在这里插入图片描述

watchEffect函数

在这里插入图片描述

vue3中生命周期钩子的使用

在这里插入图片描述
在这里插入图片描述

自定义hook函数

在这里插入图片描述

例子如下:
在这里插入图片描述
在这里插入图片描述

toRef

在这里插入图片描述
最直接的作用就是将我们setup中的对象数据交出去的时候,在模版中使用时可以不再写重复的代码
在这里插入图片描述

toRefs

作用批量处理一个对象里面的所有属性

在这里插入图片描述
上面的代码中之所以要使用展开语法,是因为对象里面无法直接再写一个对象

其他的组合API

shallowReactive与shallowRef

在这里插入图片描述

首先是shallowReactive,浅层次的数据代理,只处理第一层的数据,其他的不管
就例如下面的例子中你修改person对象中的name,age,job 属性都是响应式的,但是j1就不是响应式的了
在这里插入图片描述

其次是shallowRef只会处理基本数据类型

readonly与shallowReadonly

在这里插入图片描述
readonly的主要作用是保护一个响应式的数据,使其所有的数据都不可被更改
在这里插入图片描述
shallowReadonly的主要作用是保护一个响应式的数据,但其只会保护第一层数据,其它层次的数据是可以更改的

toRaw与markRaw

在这里插入图片描述

markRaw的作用:如果如下代码我们直接给person添加一个属性的话那么这个属性一定是响应式的,有没有办法让这个数据不是响应式的呢?有的就是使用markRaw经过这个方法处理的数据都不是响应式的,但是数据还是会更改
在这里插入图片描述

customRef

在这里插入图片描述
这个函数的作用是自定义一个ref函数,里面获取值的逻辑以及更改值得逻辑都需要自己去实现

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

provide与inject

在这里插入图片描述
例子如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

响应式数据的判断

在这里插入图片描述

Composition API的优势

在这里插入图片描述
在这里插入图片描述

新的组件

Fragment组件

在这里插入图片描述

Teleport

在这里插入图片描述

Vue3中的其他改变

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

router使用方法的改变

在这里插入图片描述
在这里插入图片描述

首先是创建router方式的改变:首先roure的创建也不再是通过引入钩爪函数来创建router,而是通过引入createRouter函数来改变,其次就是mode:history也被createWebHashHistory()所代替了
例子如下:

import { createRouter,createWebHashHistory} from "vue-router"

//1. 定义要使用到的路由组件  (一定要使用文件的全名,得包含文件后缀名)
import Found from "../page/Found.vue"
import Me from "../page/Me.vue"
import Country from "../page/Country.vue"
import View from "../page/View.vue"

// 2. 创建路由实例
const router = createRouter({
    // (1)采用hash 模式
    history: createWebHashHistory(),
    // 配置路由路径
    routes:[
        //当浏览器没有任何 #锚点信息时,默认也给显示一个组件。
        {
            path: "/",
            redirect: "/found",
        },
        {
            path: "/found",
            component: Found 
        },
        {
            path: "/country",
            component: Country 
        },
        {
            path: "/view",
            component: View
        },
        {
            path: "/me",
            component: Me
        }
    ]
})

// 4. 导出router
export default router


在main.js中的改变
在这里插入图片描述
因为vue3中不再引入vue所以直接使用即可

import { createApp } from 'vue'
import App from './App.vue'

// 引入我们的路由器
import router from "./router"

const app=createApp(App);
// 使用我们自己创建的路由
app.use(router);

app.mount('#app')

在app或其他组件中的改变
因为在setup中无法使用this,所以this. $ route和this.$router,也被两个函数所代替了:useRoute, useRouter

        //    创建一个变量来保存router
              const router= useRouter();

vuex使用方法的改变

一、基本结构
src/store/index.js中,代码如下:

// vue3中创建store实例对象的方法createStore()按需引入
import { createStore } from 'vuex'

export default createStore({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  getters: {
  },
  modules: {
  }
})

2.注意一定要先在main.js中use,我们自己创建的store才能在其他组件中使用

import { createApp } from 'vue'
import App from '@/App.vue'
import store from '@/store/index.js' // 引入
const app = createApp(App)
app
// ...
.use(store)
.mount('#app')

export default app

3.基本使用:

<template>
  <h2>{{ state.title }}</h2>
  <div>{{ state.count }}</div>
  <button @click="onCount">Count</button>
</template>
<script>
import { useStore } from 'vuex' 
import { computed } from 'vue'
export default {
	setup() {
		const store = useStore() // 引入 useStore 类似 vue2 的 this.$store
		
		const state = computed(() => { // 使用计算属性来监听数据的变化
			return store.state
		})

		const onCount = () => {
			store.commit('increment') // 触发 vuex 里定义的函数
		}

		return { // 返回出去供 template 模板访问
			state,
			onCount
		}
  }
}
</script>

4.注意看上面的代码:在模板中是没有办法直接使用store,要先使用计算属性监视state或者 let state=store.state;使用一个变量保存store.state,然后将该变量返回

上面的方法不知道为什么没有生效:(已经解决,没有在main.js中使用,还直接在模版中使用了store)
不过我们可以直接引入我们我们创建的store

<template>
  <div>测试组件</div>
  <hr>
  <!-- 页面中直接使用渲染时与vue2中的使用方法相同 -->
  <div>获取Store中的state、getters: {{$store.getters.formatInfo}}</div>
  <button @click='handleClick'>点击</button>
</template>

<script>
// 按需引入useStore()方法
import { useStore } from 'vuex'

export default {
  name: 'Test',
  setup () {
    // this.$store.state.info
    // Vue3中store类似于Vue2中this.$store
    // useStore()方法创建store对象,相当于src/store/index.js中的store实例对象
    const store = useStore()
    console.log(store.state.info) // hello
    // 修改info的值
    const handleClick = () => {
      // 触发mutations,用于同步修改state的信息
      // store.commit('updateInfo', 'nihao')
      // 触发actions,用于异步修改state的信息
      store.dispatch('updateInfo', 'hi')
    }
    return { handleClick }
  }
}
</script>


如何通过ret函数获取dom节点

在这里插入图片描述
在这里插入图片描述

vue3快速上手.md
01-06
- Vue3可以更好的支持TypeScript 4.新的特性 1. Composition API(组合API) - setup配置 - ref与reactive - watch与watchEffect - provide与inject 2. 新的内置组件 - Fragment - Teleport - Suspense 3. ...
Vue3快速上手-vue3详细基础教程
最新发布
06-20
Vue3快速上手,vue3详细基础教程,涵盖了知识点讲解和案例的使用讲解,makdown格式,是一份不可多得的学习资料
vue3.2 + ts + vite】watch 实现同时监听多个值
票票的博客
05-06 1461
vue3.2 + ts 使用watch监听多个值
vuex使用笔记
weixin_43144490的博客
11-23 202
1.Vuex简介 vuex是专门用来管理vue.js应用程序中状态的一个插件。他的作用是将应用中的所有状态都放在一起,集中式来管理。需要声明的是,这里所说的状态指的是vue组件中data里面的属性。了解vue的同学应该是明白data是怎么回事的吧,如果不懂的话,建议先学完vue的基础知识再看vuex。 Vuex有五个核心属性,state, getters, mutations, actions, modules。 2.使用步骤 这里使用的是vue3.0版本vue-cli直接创建 (1)store-i
传统HTMl页面,Vue2中使用Vue3自定义组件
qq_38902432的博客
05-20 368
由于我们的组件是一些跟AI相关的,已有功能都是用Vue3开发的,如果重新用原生js开发一个工具库说真的很麻烦,工作量也大。当时就想能不能将vue3组件打包后直接应用在应用中,接着就是不停的在百度中搜索相关资料,功夫不负有心人,总算是有了一些思路。最近公司让前端将现有的Vue3组件开发成通用的组件库,即在任何web应用中都可以通过script标签引用资源的方式使用。我们小组顺着上面的思路,最后探索出了以插拔的形式将Vue3自定义组件应用到任何web应用中。
vue3使用2
weixin_47039303的博客
11-18 906
1.context 可以拿到属性 插槽 发射的自定义事件 <div id="app"> <lk-box style="width: 200px; height: 200px; background-color: red;" > </lk-box> </div> const app=Vue.createApp({ }); app.component('lk-
Vue基础笔记
weixin_68915174的博客
11-16 7464
每个Vue应用都是通过createApp函数创建一个新的应用实例const app = createApp({ //根组件选项})
vue的基础知识大全,一篇文章就够了!
qq_65010070的博客
09-22 5058
Vue的基础知识,持续整理中。。。
vue3快速上手教学笔记.md
12-03
vue3快速上手教学笔记.md
Vue3快速上手(Vue3学习笔记)
07-11
Vue3快速上手(Vue3学习笔记) .Vue3简介 - 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) - 耗时2年多、[2600+次提交](https://github.com/vuejs/vue-next/graphs/commit-activity)、[30+个RFC]...
Vue3快速上手.md
01-21
这个是禹神Vue3的最新笔记!!!
如何用Vue开发前端和网站
itcyy的博客
11-05 1398
如果你正在使用 Vue 来增强服务端渲染 HTML,并且只想要 Vue 去控制一个大型页面中特殊的一小部分,应避免将一个单独的 Vue 应用实例挂载到整个页面上,而是应该创建多个小的应用实例,将它们分别挂载到所需的元素上去。虽然本指南中的许多示例只需要一个组件,但大多数真实的应用都是由一棵嵌套的、可重用的组件树组成的。API 允许你在同一个页面中创建多个共存的 Vue 应用,而且每个应用都拥有自己的用于配置和全局资源的作用域。的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。
通过差异化对比学习法,带你回顾Vue2快速掌握Vue3
秦爱德
04-02 1543
Vue3已经发布有一段时间了,本文意在通过梳理Vue2常用api通过差异化对比Vue3,帮助你快速掌握Vue3
vue3快速学习(vue2转vue3学习)
Black____White的博客
03-11 1998
首先要知道的一些方法,基础api。避免看不懂vue3。 1. reactive 返回对象的响应式副本,实际上reactive 将解包所有深层的 refs,同时维持 ref 的响应性。 个人理解:相当于把reactive里面的内容a,push到一个对象中,而且还互相相应。我称这个对象为依赖于a的副本。内容为空,后续通过 obj.count = count 这样的写法,也能将其绑定响应。 const obj = reactive({ count: 0 }) 响应式转换是“深层”的——它影响所有...
vue3学习笔记一:createApp, ref, reactive, onMounted,computed
九段刀客的博客
11-17 2574
compositions-api的优势 可以将每个功能相关的代码放在一个部分,避免代码混乱。后面的示例代码中可以看到,将人物部分的逻辑和标题相关的逻辑可以提取到单独的方法中,如果是正式的项目中,这两块的逻辑比较复杂,可以将它们提取到两个单独的js文件中,类似与vue2中的mixins但是不出现mixins中各个部分的属性互相影响的问题 createApp 用于创建一个新的Vue应用实例 createApp({ setup(){ //...... } }).mount('#app') setup
使用Vue3重构vue2项目
奇舞周刊
10-20 3940
前言2020年9月18日,vue3正式版发布了,前几天把文档整体读了一遍,感触很深,可以解决我项目中的一些痛点,于是就决定重构之前那个vue2的开源项目。本篇文章就记录下重构vue2项目...
一、vue3初体验
qq_37299479的博客
09-17 3625
vue3 初体验
使用vue3重构升级vue2项目流程与总结
lwx33912138的博客
02-16 2710
使用vue3重构升级vue2项目流程与总结,vue2项目升级为vue3项目时候的注意事项与bug的处理研究
在新项目中使用 Vue3 使用总结
鹤汀凫渚 的博客
05-21 1702
在项目中使用后,精心总结。
java开发者 怎么快速上手vue3
09-25
如果你是一名 Java 开发者想要快速学习 Vue.js,你可以尝试以下步骤: 1. 了解 Vue.js 的基本概念,包括双向数据绑定、组件化和路由。 2. 安装 Node.js 和 Vue CLI,并使用 Vue CLI 创建一个 Vue.js 项目。 3. 在项目中使用 Vue.js 的模板语法,并在组件中使用 props 和 data 属性进行数据传输。 4. 了解 Vuex 和 Vue Router,并使用它们来管理应用状态和实现路由功能。 5. 参考 Vue.js 官方文档和社区资源,并通过尝试不同的例子来加深对 Vue.js 的理解。 希望这些建议能帮助你快速上手 Vue.js

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数 10704
  • 编写一个C程序,实现以下功能: 编写一个sort函数,实现对5个字符串按从大到小进行排序。在主程序中输入5字符串,调用sort(s,n)函数对n个字符串s进行排序,然后输出排序后的结果 8962
  • (java)实现字符串大小写的转换并倒序输出,要求如下: 8768
  • 输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。 5296
  • 小学生加减乘除法做题系统,代码为纯c语言 5011

分类专栏

  • java算法 21篇
  • SpringBoot
  • SSM 2篇
  • Javaweb 3篇
  • JDBC 1篇
  • 操作系统 2篇
  • Linux 1篇
  • 数据库系统 1篇
  • vue-element-admin 4篇
  • 概率伦
  • java计巧 1篇
  • java内存模型 1篇
  • VUE 5篇
  • js学习笔记 5篇
  • 项目总结 3篇
  • 需要进行实操的视频
  • js+html+css的小练习 9篇
  • 递归 1篇
  • 二叉搜索树 1篇
  • 数据结构 3篇
  • java练习题 2篇
  • c语言练习题 25篇

最新评论

  • vue-element-admin 项目运行流程梳理

    狗蛋儿588: 能不能换成白色主题? 黑色主题眼睛看着难受

  • 基于vue2快速上手vue3

    小饼儿~: b站尚硅谷

  • 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8036779, 请多输出高质量博客, 帮助更多的人

  • 编写一个C程序,实现以下功能: 编写一个sort函数,实现对5个字符串按从大到小进行排序。在主程序中输入5字符串,调用sort(s,n)函数对n个字符串s进行排序,然后输出排序后的结果

    2301_79697819: main33333错了

  • 计算机操作系统(王道)

    永恒达芬奇: 大佬'这个有word或者pdf版吗?想直接导入平板做笔记来着。感谢ing

大家在看

  • STM32单片机开发入门(十)SSCOM串口通信助手软件安装及使用提供软件网盘链接 181
  • 苍穹外卖---Day03(P31-48) 493
  • AI学习指南机器学习篇-朴素贝叶斯算法(Naive Bayes)简介 1464
  • 计算机组成原理 | 硬件电路整理 81
  • BIM模型技术标准

最新文章

  • 嵌入式微处理结构与应用
  • SSM整合及创建WEB项目(整个项目的部署)
  • 解决vue-servlet数据传输时出现的跨域问题
2022年34篇
2021年31篇
2020年24篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司木棉湾seo西乡网站排名优化沙井百搜词包西乡设计网站坪山网站排名优化石岩关键词按天计费福永企业网站建设石岩网络广告推广布吉网站优化按天计费福田网站优化丹竹头SEO按效果付费大芬至尊标王龙华营销网站木棉湾网站设计模板爱联SEO按天扣费永湖网站关键词优化福田网页设计盐田建网站大运网站制作福田网站搭建木棉湾网站优化按天计费大芬百搜标王大运网站优化大浪建设网站坪地网络营销石岩网站优化松岗seo网站优化大运企业网站制作南澳网站建设惠州SEO按天计费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化