vue实例

vue实例

每一个应用都是通过vue这个构造函数创建根实例(root instance),启动 new vue(选项对象)

需要传入选项对象,对象包含挂载元素,数据,模板,方法等。

  • el:挂载元素选择器 string|htmlelement
  • data:代理数据 object|function
  • methods:定义方法 object

vue代理data数据

每个vue实例都会代理其data对象所有的属性,这些被代理的属性是响应的。新添加的属性不具备响应功能,改变后不会更新视图。

vue实例自身属性和方法

暴露自身的属性和方法,已$开头 例如:$el $data

声明式渲染

命令式

需要以具体代码表达在哪里(where)做什么(what),如何实现(how)

声明式

只需要声明在哪里(where)做什么(what),而无需关心如何实现(how)

  1. //eg1:如下为命令式:
  2. var arr=[1,2,3,4];
  3. var newArr=[];
  4. for (var i = 0; i < arr.length; i++) {
  5. newArr.push(arr[i]*2)
  6. }
  7. console.log(newArr);//2,4,6,8
  8. //eg2:如下为声明式
  9. var arr=[1,2,3,4,5];
  10. var newArr=arr.map(function(item){
  11. return item*2;
  12. })
  13. console.log(newArr);//2,4,6,8,10

在vue中,就是采用的声明式渲染方式,只要明确挂载元素和data值就好,复杂的赋值过程vm帮你实现了。

  1. <div id='demo'>
  2. <span>{{message}}</span>
  3. </div>
  4. <script src='vue.js'></script>
  5. <script>
  6. // 数据
  7. let obj={
  8. message:'hello vue',
  9. id:'123'
  10. }
  11. // 声明式渲染
  12. var vm= new Vue({
  13. el:'#demo',
  14. data:obj
  15. })
  16. console.log(vm.$data)
  17. </script>

指令

是一种特殊的自定义行间属性

指令的职责就是当其表达式的值改变时,相应的某些行为应用到DOM上

在vue中,指令以V-开头

Vue中的内置指令

  • v-bind 动态的绑定数据,简写为 :
  • v-on 绑定事件监听器,简写为@
  • v-text 更新数据,会覆盖已有结构
  • v-html 可以解析数据中的HTML
  • v-show 根据值得真假,切换元素的display属性
  • v-if 根据值得真假,切换元素会被销毁、重建
  • v-else 条件都不符合渲染
  • v-else-if多条件进行判断,为真则渲染
  • v-for基于原数据多次渲染元素或模板块
  • v-model在表单控件元素上创建双向数据绑定
  • v-pre跳过元素和子元素的编译过程
  • v-once只渲染一次,随后数据更新不重新渲染

模板

HTML模板

基于DOM的模板,模板都是有效的可解析的HTML

  1. <div id='demo'>
  2. <div v-html="html" :custom='abc'></div>
  3. {{true?'yes':'no'}}
  4. </div>
  5. <script src='vue.js'></script>
  6. <script>
  7. // 数据
  8. let obj={
  9. html:'<div>hello vue.js</div>',
  10. abc:'123'
  11. }
  12. // 声明式渲染
  13. var vm= new Vue({
  14. el:'#demo',
  15. data:obj
  16. })

插值

  • 文本:使用‘mustache’语法{{value}}
  • 作用:替换实例上的属性值,当值改变时,插值内容处会自动更新
  • 原生的HTML:双大括号输出的是文本,不会解析HTML
  • 属性:可以使用v-bind 绑定,可以响应变化。
  • 使用javascript表达式:写简单地表达式

字符串模板

template模板

  1. <div id='demo'>
  2. <div v-html="html" :custom='abc'></div>
  3. </div>
  4. <script src='vue.js'></script>
  5. <script>
  6. // 数据
  7. let obj={
  8. html:'<div>hello vue.js</div>',
  9. abc:'123'
  10. }
  11. var str='<div>hello,{{abc}}</div>'
  12. // 声明式渲染
  13. var vm= new Vue({
  14. el:'#demo',
  15. data:obj,
  16. template:str
  17. })

页面显示 hello,123

  • template选项对象属性
  • 模板将会替换挂载的元素,挂载元素的内容将被忽略
  • 根节点只能有一个
  • 将HTML结构写在一对script标签中,设置type="x-template"

模板render函数

  • render选项对象的属性
  • createElement(标签名,[数据对象],子元素);其中子元素为文本或按钮。

vue刨坑(二)的更多相关文章

  1. vue踩坑(二):跨域以及携带cookie

    最近后台需求要在请求的时候传cooki给后台,正常情况下拿到cookie后存在cookie里,同域名下是会自己带到请求头里的,但是因为要在本地调试,那么问题就来了,localhost:8080下面的c ...

  2. Vue刨坑

    vue常见问题 1.在自定义组件里,你可以像任何普通元素一样用v-for.eg1: <my-component v-for="item in items"></m ...

  3. Vue 爬坑之路(十二)—— vue-cli 3.x 搭建项目

    Vue Cli 3 官方文档:https://cli.vuejs.org/zh/guide/ 一.安装 @vue/cli 更新到 3.x 之后,vue-cli 的包名从 vue-cli 改成了 @vu ...

  4. Vue入坑教程(二)——项目结构详情介绍

    之前已经介绍了关于Vue的脚手架vue-cli的安装,以及一些文件目录介绍.具体可以查看<vue 入坑教程(一)--搭建vue-cli脚手架> 下面简单说一下具体的文件介绍 (一) pac ...

  5. Vue 爬坑之路(二)—— 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  6. (转)Vue 爬坑之路(二)—— 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  7. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  8. Vue 爬坑之路(九)—— 用正确的姿势封装组件

    迄今为止做的最大的 Vue 项目终于提交测试,天天加班的日子终于告一段落... 在开发过程中,结合 Vue 组件化的特性,开发通用组件是很基础且重要的工作 通用组件必须具备高性能.低耦合的特性 为了满 ...

  9. Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli vue ...

随机推荐

  1. 用ajax获取淘宝关键字接口

    可定需要查看淘宝界面的结构,按F12查看网页,此时先清除一下网页中的数据,让Network制空,随后在输入框中输入新的内容,比如钱包,数据中会出现新的数据.点击及查看蓝色方框中的内容 点击之后,你可以 ...

  2. [C#]常用开源项目

    [转][C#]常用开源项目 本文来自:http://www.cnblogs.com/sunxuchu/p/6047589.html Json.NET http://www.newtonsoft.com ...

  3. POJ:2229-Sumsets(完全背包的优化)

    题目链接:http://poj.org/problem?id=2229 Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissio ...

  4. Nginx安装,目录结构与配置文件详解

    1.Nginx简介 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设 ...

  5. 3 Mongodb数据查询1

    1.基本查询 方法find():查询 db.集合名称.find({条件文档}) 方法findOne():查询,只返回第一个 db.集合名称.findOne({条件文档}) 方法pretty():将结果 ...

  6. Android stadio butternife工具

    http://www.androidchina.net/5068.html svn今天我对它有了更深的认识.我知道了有冲突了不能提交.但是可以update,updata之后就会有冲突的东西生成,如果你 ...

  7. python和matlab

    一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...

  8. Null / Loopback (Null)

    参考: http://www.cnblogs.com/caoguoping100/p/3654452.html https://wiki.wireshark.org/NullLoopback 抓包安装 ...

  9. 《Cracking the Coding Interview》——第11章:排序和搜索——题目1

    2014-03-21 20:35 题目:给定已升序排列的数组A和数组B,如果A有足够的额外空间容纳A和B,请讲B数组合入到A中. 解法:由后往前进行归并. 代码: // 11.1 Given two ...

  10. 在sqlserver 中如何导出数据库表结构到excel表格中

    先建空白excel--在数据库中的左侧找到该表, 选中需要导出的数据--Ctrl+C复制--打开记事本修改编码格式为Unicode-不自动换行保存--Ctrl+A--Ctrl+C,再打开excel-- ...