Vue(一)vue 概述与用法、MVVM、绑定语法、vue 指令

10 篇文章 72 订阅
订阅专栏

        Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

        vue 是第三方开发的,所以需要下载才可使用;它基于 MVVM 设计模式;可以逐步在项目中使用 vue 技术(渐进),还可以和其它技术混搭;单靠浏览器就可以运行,不需要任何后端技术。

        以数据操作(增删改查)为主的项目,都可以由vue框架开发如:饿了么、大众点评\淘宝、京东、今日头条、微博、网易云音乐、小红书、知乎、自如、链家、携程.......等等;不是以数据操作为主的如大型游戏、微信、qq、抖音、爱奇艺等则尽量不用 vue 框架。


目录

一、vue的使用

1. vue的下载

2. vue三步

二、MVVM

1. MVVM设计模式

2. vue的绑定原理

三、绑定语法

四、指令

1. v-bind

2. v-show

3. v-if, v-else

4. v-else-if


一、vue的使用

 Vue.jsVue.js - The Progressive JavaScript Frameworkhttp://cn.vuejs.org

1. vue的下载

(1)只下载一个 vue.js 文件,引入网页使用

        vue 版本分为开发版和生产版,开发版(未压缩版)有完备的注释、代码格式,以及见名知意的变量名和极其友好的错误提示,可读性好,适合学习和开发之用,但是体积大,不适合生产环境快速下载运行。

        生产版(压缩版)去掉了所有数值和代码格式,极简化了变量名,去掉了友好的错误提示,体积小,适合生产环境快速下载运行,但是可读性差,不适合学习和开发之用。

(2)使用 vue 脚手架工具

        脚手架是一套已经包含核心功能的标准的半成品项目文件和文件夹结构,便于大项目的标准化和分工协作。

2. vue三步

1.做界面

        1.1 将界面中所有元素包裹在一个唯一的父元素下,通常用

<div id="app"></div>

        1.2 找到界面中将来可能随程序自动变化的位置,用{{ 变量名 }}来标记/占位;

        1.3 找到界面中将来可能触发事件的元素,用专门的语法:@事件名="事件处理函数名" 来标记。

2.创建一个 new Vue() 对象,用来监控 div 所包含的区域

var vm = new Vue({
  //vue对象中,必须用el属性,指出new Vue()要监控的区域
  el: "#app",
 })

3.定义模型对象,来保存界面中所需的所有变量和事件处理函数

        3.1 创建一个 data:{ } 来保存界面中所需的所有变量和初始值;

        3.2 创建一个 methods:{ } 来保存界面中所需的所有事件处理函数;

        注意:模型对象就是专门替界面保存变量和事件处理函数的特殊的对象

                    methods 中的事件处理函数中,如果要操作data中的变量,必须加 this.

                    不用考虑如何从界面取值和如何将新值放回界面,只需考虑如何把data中的变量值修改正确。

举例:vue 程序,模拟购物车加减商品数量;

<body>
  <!--VUE 3步-->
  <!--1. 先做界面
  1.1 将界面中所有元素包裹在一个唯一的父元素下<div id="app"></div>
  1.2 找到界面中将来可能随程序自动变化的位置,用{{变量名}}来标记/占位
  1.3 找到界面中将来可能触发事件的元素,用@事件名="事件处理函数名" 来标记-->
  <div id="app">
    <button @click="minus">-</button>
    <span>{{n}}</span>
    <button @click="add">+</button>
  </div>
  <script>
    //2. 创建一个new Vue()对象,来监控div所包含的区域
    var vm = new Vue({
      //vue对象中,必须用el属性,指出new Vue()要监控的区域
      el: "#app",
      //3. 定义模型对象,来保存界面中所需的所有变量和事件处理函数
      //3.1 先创建一个data:{}来保存界面中所需的所有变量和初始值
      data: {
        n: 0
      },
      //3.2 创建一个methods:{}来保存界面中所需的所有事件处理函数
      methods: {
        add() {
          this.n++;
        },
        minus() {
          if (this.n > 0) {
            this.n--;
          }
        }
      }
    })
  </script>
</body>

二、MVVM

        以往 的前端代码往往分为三个部分:

  • HTML(专门定义网页的内容和结构)
  • CSS(专门为网页添加样式)
  • js(专门操作网页中的内容,为页面添加交互行为)

        但是 HTML 和 CSS 功能太弱,即使很小的修改,都要通过 JS 来操作,导致 js 中存在大量重复和冗余的工作。所以为了解决此问题,就需要用到 MVVM 设计模式。

1. MVVM设计模式

        MVVM 设计模式是对前端三大代码的重新划分,包括三部分;

(1)界面(View):包含以前的 HTML+CSS,让 HTML 也支持变量、判断、循环;

(2)模型对象(Model):专门保存页面中所需的变量和函数的特殊对象,

data:{ }  专门保存界面中所需的所有变量

methods:{ } 专门保存界面中所需的所有函数

(3)视图模型(ViewModel):专门负责将模型对象中的变量和函数,自动运送到界面中指定位置的特殊对象,自动将程序中的变量和函数运送到界面中所需的位置。并且还能自动保持界面显示与程序中的数据同步。

2. vue的绑定原理(vue框架如何实现 MVVM 设计模式)

(1)访问器属性

a. new Vue() 将 data:{ } 引入到 new Vue() 中时,先将 data 对象及其内部的内容全部隐藏;

b. new Vue() 自动为data中每个变量创建访问器属性,监视对每个变量的修改操作,访问器属性不再隶属于data对象,而是直接隶属于new Vue();

c. 只要在程序中修改变量,都会自动调用访问器属性的set()函数;

d. set() 函数中提前安插了一个通知函数(),可通知外部哪个变量值发生了变化;

e. methods 中所有的函数,进入 new Vue() 后,methods 对象就被打散,原 methods 中所有函数直接隶属于 new Vue() 对象;

f. methods 中的函数和 data 中的变量,最终会平级保存,都直接隶属于new Vue(),methods 中的函数,想操作 data 中的变量,必须加 this.。

(2)虚拟 DOM 树

        是专门保存界面中所有可能发生变化的元素的简化版 DOM 树;在创建完 data 和 methods 之后,根据 el 属性值的选择器所指的元素,去扫描界面中指定区域的元素,一边扫描真实 DOM 树,一边创建虚拟 DOM 树,只保存可能发生变化的元素。

a. 只要在程序中修改了变量值,就会自动触发访问器属性的 set(),自动执行 set() 中的通知函数,通知函数()通知虚拟 DOM 树哪个变量发生了变化;

b. 虚拟 DOM 树扫描自己内部保存的所有可能发生变化的元素,只找出受本次变量修改影响的元素;

c.可以用提前封装好的 DOM 操作,将变量的新值,自动修改回页面中显示。

小结(高频笔试面试):

· vue绑定原理:访问器属性虚拟DOM树

· 虚拟DOM树四大优点:

(1)内容少体积小:只保存可能变化的个别元素;

(2)遍历查找快:保存的元素少,所以每次遍历查找受影响的元素时比遍历原始DOM树快;

(3)修改效率高:每次只修改受影响的个别元素,不受影响的元素是不改变;

(4)避免重复编码:提前封装了DOM的增删改查+事件绑定操作。

三、绑定语法

       绑定语法是 在界面中标记可能发生变化的元素内容的特殊语法,只要发现一个元素的内容可能随程序自动改变时,都要用绑定语法来标记。

<元素>xxxx{{自定义变量名}}xxx</元素>

        {{ }} 的原理和模板字符串中的 ${ } 完全一样,可以放一切有返回值的合法的 js 变量或表达式如变量、三目、算术计算、访问数组元素、创建对象、调用函数;不能放分支、循环以及没有返回值的js表达式。

举例:使用{{}}显示隐藏不同数据;

<body>
  <div id="app">
    <h3>Welcome:{{uname}}</h3>
    <h3>性别:{{sex == 1?"男":"女"}}</h3>
    <h3>小计:¥{{price*count.toFixed(2)}}</h3>
    <h3>下单时间:{{new Date(orderTime).toLocaleString()}}</h3>
    <h3>星期{{arr[day]}}</h3>
  </div>
  <script>
    new Vue({
      el: "#app",
      data: {
        //假设从服务器端请求回来个别数据,显示到页面上
        uname: "王麻子",
        sex: 1,
        price: 12.5,
        count: 5,
        orderTime: 1614158191101,
        arr: ["日", "一", "二", "三", "四", "五", "六"],
        day: new Date().getDay()
      }
    })
  </script>
</body>

效果如下: 

          

四、指令

        专门给 HTML 元素添加新功能的特殊 HTML 属性就是指令,含13种。

1. v-bind

        如果元素的属性值可能随程序自动变化,则不能用 {{ }} 绑定,要用v-bind指令代替 {{ }} 绑定属性值。格式如下:

<元素  v-bind:属性名="js变量或表达式">

//简写
<元素  :属性名="js变量或表达式"> 

//注意:
//加了: 之后就不需要{{}}了
//=右边的""就起到了{{}}的作用

原理:new Vue()在扫描页面时,只要发现 : 开头的属性,都会先自动计算=右边的js变量或表达式的值,然后将变量或表达式的值作为当前属性的属性值;

举例:根据pm2.5数值,显示不同表情;

<body>
  <div id="app">
    <!--
    如果pm25<100,显示img/1.png
    如果pm25<200,显示img/2.png
    如果pm25<300,显示img/3.png
    否则显示img/4.png
    -->
    <img :src="
      pm25<100 ? 'img/1.png':
      pm25<200 ? 'img/2.png':
      pm25<300 ? 'img/3.png':
                 'img/4.png'
    ">
  </div>
  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        //程序中只保存pm2.5的数值,不保存图片路径
        pm25: 200
      }
    })
  </script>
</body>

效果如下: 

2. v-show

        专门控制一个元素显示隐藏的特殊指令,用程序控制一个元素的显示或隐藏时,都用v-show

<元素  v-show="true/false">

原理:只要 new Vue() 扫描到 v-show,就会先计算=右边的判断条件的值,如果=右边的判断条件值为 true,则当前元素默认正常显示,如果=右边的判断条件值为 false,则 v-show 自动被翻译为style="display:none",表示当前元素隐藏

举例:打开和关闭对话框;

<body>
  <!--VUE 3步
  1. 做界面: 
  1.1 唯一父元素
  1.2 找可能发生变化的元素
  本例中:id="pop"的div显示和隐藏状态来回切换。所以应该用v-show
  1.3 找触发事件的元素
  本例中: 两个触发事件按钮和超链接a
  -->
  <div id="app">
    <button @click="show">click me</button>
    <div v-show="visible" id="pop">
      <a @click="hide" href="javascript:;">×</a>
    </div>
  </div>
  <script>
    //2. 创建new Vue()对象,监控id为app的区域
    new Vue({
      el: "#app",
      //3. 创建模型对象: 
      //3.1 创建data对象
      // 本例中visible变量,控制对话框是否出现
      data: {
        visible: false //初始默认隐藏
      },
      //3.2 创建methods对象
      methods: {
        show() {
          this.visible = true //点击按钮时显示对话框
        },
        hide() {
          this.visible = false //点击×隐藏对话框
        }
      }
    })
  </script>
</body>

效果如下:对话框点击按钮显示,点击×隐藏。

3. v-if, v-else

        专门控制两个元素二选一显示,当要在两个元素之间选择一个时,就用 v-if 和 v-else

<元素1  v-if="条件1">
<元素2  v-else>

//注意:
//else后无序再写等于
//元素1和2之间不能再有其他元素

原理:当 new Vue() 扫描到 v-if 时,先计算=右边条件变量或表达式的值,如果 v-if 等号右边的条件为 true,则 new Vue() 会保留 v-if 所在元素,删除 v-else 所在元素;如果 v-if 等号右边的条件为false,则 new Vue() 会先删除 v-if 所在的元素,保留 v-else 所在的元素。

举例:切换用户登录状态;

<body>
  <!--VUE 3步
  1. 做界面
  1.1 唯一父元素包裹
  1.2 找可能发生变化的元素
  本例中:两个div之间二选一显示一个,所以用v-if和v-else
  1.3 找触发事件的元素
  本例中: 触发事件的元素为注销和登录两个超链接
  -->
  <div id="app">
    <!--已登录时显示-->
    <div @click="logout" v-if="a">
      <h3>Welcome dingding <a href="javascript:;">注销</a></h3>
    </div>
    <!--未登录时显示-->
    <div v-else>
      <a @click="login" href="javascript:;">登录</a>
      <a href="javascript:;">注册</a>
    </div>
  </div>
  <script>
    //2. 创建new Vue()
    new Vue({
      el: "#app",
      //3. 创建模型对象
      //3.1 创建data对象
      data: {
        a: false //开始时用户默认未登录
      },
      //3.2 创建methods对象
      methods: {
        login() {
          this.a = true //点击login进入已登录界面
        },
        logout() {
          this.a = false
        }
      }
    })
  </script>
</body>

效果如下:

4. v-else-if

        和v-if和v-else一起控制多个元素多选一显示隐藏,只要控制多个元素选择一个显示隐藏时,都用v-else-if

<元素1  v-if="条件1">
<元素2  v-else-if="条件2">
<元素3  v-else-if="条件3">
... ...
<元素n  v-else>

//注意:
//元素123之间不能有其他元素

原理:当new Vue()扫描到v-if时,先计算v-if后的条件,如果v-if条件为true,则保留v-if所在元素,删除其余v-else-if、v-else元素;如果v-if条件为false,则先删除v-if所在元素,然后,继续计算每个v-else-if后的条件;如果任意一个v-else-if的条件为true,则只保留着一个v-else-if所在元素,删除其余v-if、v-else-if和v-else元素;如果所有v-if和v-else-if的条件都不满足,则只保留v-else,删除其余v-if和v-else-if的元素。

举例:使用v-else-if实现根据pm2.5数值不同显示不同的表情;

<body>
  <!--如果pm25<100,显示1.png
      如果pm25<200,显示2.png
      如果pm25<300,显示3.png
      如果pm25>=300,显示4.png-->
  <!-- 本例中有多个元素需要多选一,所以用v-if和v-else-if -->
  <div id="app">
    <img src="img/1.png" v-if="pm25<100">
    <img src="img/2.png" v-else-if="pm25<200">
    <img src="img/3.png" v-else-if="pm25<300">
    <img src="img/4.png" v-else>
  </div>
  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        pm25: 600
      }
    })
  </script>
</body>
Vue原理剖析 实现双向绑定MVVM
08-30
Vue原理剖析实现双向绑定MVVM 本文将详细剖析Vue原理,实现双向绑定MVVM,具有一定的参考价值。主要内容包括了解Vue的双向数据绑定原理、核心代码模块、缓解好奇心的同时了解如何实现双向绑定、实现MVVM的双向绑定...
vue-:visible.sync的作用
startyangu的博客
11-25 3121
vue-:visible.sync的作用
VUE基础之:visible.sync-模态框显示隐藏、elementUI dialog组件报错或者visible属性不生效问题
热门推荐
tangdou369098655的博客
05-14 1万+
VUE基础之:visible.sync-模态框显示隐藏、elementUI dialog组件报错或者visible属性不生效问题 这篇文档存成草稿2年了,最近终于有时间拉出来写完了。。。。 我们日常开发中经常遇到:visible.sync修饰符,特别是当你使用elementUI的时候,el-dialog组件如果不使用:visible.sync就会出现一些意想不到的问题,比如说疯狂报错给你看~~~ 场景: 父组件引用子组件 <child-dialog :visible="visible"><
Vue的介绍
最新发布
ssjssj_的博客
09-12 1570
什么是Vue,介绍Vue了解Vue
强迫症讨厌的vue警告,[Vue warn]Prop being mutated: “visible
草叶儿的博客
03-08 6573
VUE组件的时候,用到Modal经常会有这个警告,强迫症看的不舒服: [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "visible" 原
vue子组件修改父组件的值(修改visible最简单的方法)
qq_46167326的博客
07-13 754
【代码】vue子组件修改父组件的值(修改visible最简单的方法)
05 Vue进阶高级插件(组件)开发
qq_37550440的博客
06-20 773
高级插件开发 this.$notify() api的方式调用组件
Vue双向数据绑定(MVVM)的原理
10-14
Vue.js的双向数据绑定是其最引人注目的特性之一,它使得开发者可以在视图(View)和模型(Model)之间实现数据的自动同步。这一机制的核心在于MVVM(Model-View-ViewModel)架构模式。MVVM模式由三个主要部分组成:...
Vue】1788- 一起玩转 Vue 中的 JSX
pingan8787
08-29 111
作者:Rockkyhttps://juejin.cn/post/7188898676993949752JSX简介JSX是一种Javascript语法扩展,即具备了Javascript的全部功能,同时又兼具html的语义化和直观性。它可以让我们在JS中写模板语法:constel=<div>Vue2</div>;上面这段代码既不是 HTML 也不是字符串,被称之为 ...
vue中子组件更新父组件
Mr古技术分享
07-22 1343
一、关于vue中watch的认识 我们要监听一个属性的的变化就使用watch一般是父组件传递给子组件的时候 •1、常见的使用场景 … watch:{ value(val) { console.log(val); this.visible = val; } } … •2、如果要一开始就执行 watch: { firstName: { handler(newName, oldName) { this.fullName = newName + '-' + this.lastName;
vue中dialog下修改弹框的visible的值之加.sync的区别
MISS_zhang_0110的博客
05-05 4452
比方说,elementui中的dialog组件,它有个prop 叫visible,在使用该组件的时候,我们希望点击dialog 右上角的x号,或者点击遮罩层,隐藏dialog。但是我们没法在子组件去直接修改父组件绑定visible属性的变量,按照规则,我们需要在dialog里。sync 修饰符其实是个双向绑定语法糖,一般用于“双向绑定”props的时候,类似v-model。一个事件,然后在父组件的处理方法中去修改该值,但是这样写太麻烦了,因此,我们使用了。修饰符,然后约定子组件使用。
vue 如何让后台管理系统最后一个标签页不能被关闭?
书写人生
07-09 2951
如何让后台管理系统最后一个标签页不能被关闭? <template> <div id="tags-view-container" class="tags-view-container"> <scroll-pane ref="scrollPane" class="tags-view-wrapper"> <router-link v-for="tag in visitedViews" ref="tag"
vue 实例化几种方式_Vue组件的三种调用方式
weixin_34898216的博客
12-23 1119
最近在写fj-service-system的时候,遇到了一些问题。那就是我有些组件,比如Dialog、Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然它们有按需引入的功能,但是整体风格和我的整个系统不搭。于是就可以考虑自己手动实现这些简单的组件了。通常我们看Vue的一些文章的时候,我们能看到的通常是讲Vue单文件组件化开发页面的。单一组件开发的文章...
Vue2信息提示(Modal)
Mr Dear的博客
07-28 1万+
一共有两种模式,六种展示效果,弹窗随内容自适应增加高度,同时支持对弹窗位置进行设置:①水平垂直居中②高度固定水平居中
Vue介绍使用、MVVM数据双向绑定Vue的安装使用、Vue的两种语法vue常用指令vue修饰符、vue监视数据原理、vue中数组/对象修改视图不更新问题、VScode插件推荐
TKY666的博客
06-27 1342
VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定Vue的安装和使用、Vue模板语法-文本渲染、常用的vue指令
vue核心语法(超详细)
小罗的博客
03-09 7146
全称是Vue.js或者Vuejs。 基于标准HTML,CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型。
vue基本语法
qq_62087717的博客
04-16 3770
1、插值表达式 {{ 、、、 }} 大括号中可以写变量名,对象.属性等,还可以写入js语句 2.变量显示在界面上 v-text: v-html: 两者的区别v-text把内容当纯文本处理,v-html遇到html的标签会当html代码处理 如: v-text: v-html: 3.v-moldel实现双向动态绑定 data:{ username: “” ​ } 当username改变时,页面上的username也会动态改变 页面上的username改变时,data中的us
v-if 的使用
前端职场小白_炜晨科技的博客
08-13 1269
v-if的使用
写文章

热门文章

  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍 185745
  • Vue项目的打包方式(生成dist文件) 156809
  • Linux【命令篇】—— Linux操作系统常用指令大全 134926
  • Git 管理工具 SourceTree 的使用(上手简单,不熟悉git命令的开发者必用) 120605
  • 小马带你认识前端开发神器WebStorm(WebStorm及Git的相关配置与使用) 120591

分类专栏

  • Java 零基础入门到精通 付费 9篇
  • 2024软考 - 系统集成项目管理工程师极致备考 付费 43篇
  • 前沿技术解读 24篇
  • 云原生/云计算 - 入门到实战 35篇
  • Linux 操作系统入门到精通 12篇
  • Web 前端开发工程师知识体系 39篇
  • 前端实战知识集锦 19篇
  • 开发工具/开发语言 24篇
  • 前端框架之 —— Vue 10篇
  • 前端框架之 —— React 4篇
  • 前端领域高频笔试面试题集锦 7篇
  • C认证 5篇
  • 技术博客成长总结 9篇

最新评论

  • 2024 Google 开发者大会深度探秘与AI技术前瞻

    沃和莱特: 很不错的简介文章,介绍了前沿科技的发展,支持博主更多优质输出!

  • 【云服务器 ECS 实战】云服务器新手指南(配置+使用详解)

    阑梦清川: 想问一下,如果最后想要上传的这个html附带的有音频和图片之类的,是不是要一起上传过去

  • vue框架中,图片应该保存在哪里?应该如何访问?

    高级bug制造机: 写反了 请不要误导人

  • Vue环境下,在单页面中遍历显示出多个Echarts图表

    m0_54103484: 为什初始遍历数据没有设置的时候,后面通过js赋值只会有div空白,不能正常渲染呢

  • 前端案例:像素鸟小游戏(js+dom操作,完整代码,附案例素材)

    G666game: 方块洋洋(微信小游戏)~ 这点小难度,等你来挑战!

最新文章

  • 2024 Google 开发者大会深度探秘与AI技术前瞻
  • 小牛翻译API详解:功能、优势介绍及案例实战(附完整代码)
  • 合合信息embedding模型登顶MTEB中文榜单:中文文本向量化技术的创新突破
2024年6篇
2023年67篇
2022年96篇
2021年66篇

目录

目录

评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敬 之

您的鼓励就是我持续创作的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家梅州公仔玻璃钢卡通雕塑天津水果玻璃钢雕塑图片福建主题商场美陈制造玻璃钢雕塑什么材质的韶关玻璃钢园林人物雕塑玻璃钢花盆价格怎样计算温江玻璃钢造型雕塑南阳玻璃钢花盆多少钱高架玻璃钢花盆哪里有深圳现代玻璃钢卡通雕塑专业制作玻璃钢雕塑玻璃钢雕塑 掉色银川户外玻璃钢雕塑价格玻璃钢地藏王雕塑图片玻璃钢动物雕塑生产商佛山黑色小型玻璃钢花盆山东商业商场美陈哪家好玻璃钢基督教雕塑制作泡沫玻璃钢雕塑哪家好玻璃钢雕塑艺术系昆明户外玻璃钢雕塑设计广东商场玻璃钢雕塑厂家无锡灰色玻璃钢花盆商场粉红美陈青海玻璃钢广场雕塑厂家上海玻璃钢户外雕塑上海超市商场美陈采购扬州园林景观玻璃钢雕塑半透明玻璃钢雕塑江西人物玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化