vue02

spa框架:单页应用 (1个页面)组件:component 把一个复杂的页面拆分成若干个组件,最后再拼成一个完整的页面组件的分类:页面级组件(home组件 ,list组件)基础组件(页面组件包含着基础组件,可复用的组件)组件的使用:全局组件(不需要在组件中再次声明了)-写一些插件时可能会需要用到全局组件 局部组件(在某个组件中声明的)自己写的一些组件一般都是局部组件全局组件:Vue.component(tagName,options)局部组件:new Vue({el:'',components:{child:{template:'

'}}})1.组件的名字不能使用已经存在的标签2.一个组件就是一个对象3.名字规范 myHello会自动转化成myhello4.组件模板中必须只能仅仅有一个根节点 5.标签中的名字可以转化(知横线转驼峰->大写转小写)一律名字相同即可6.组件中的data必须是一个函数 7.组件中的数据可以在自己的模板中使用template:'

' //用模板中的内容替换掉标签(el)局部组件 定义在内部的,组件之间应该是互不影响的,所以data是个函数,返回一个新对象,来避免相互引用的问题对象是引用数据类型组件中函数的this指向的是当前组件的实例组件的使用顺序 1.引入这个组件 2.注册组件 3.在模板中使用(是在父组件模板中使用)template中的内容会被转化成虚拟dom,文档碎片,先获取第一个元素通过createElement创建一个元素,firstChild appendChild到这个dom元素里MVVM=数据劫持+compile+发布订阅组件的特点:相互独立,两个人之间没有任何关系子组件不能直接更改父组件的数据 ,可以子组件传递给父组件,父组件改变后再重新渲染子组件 单向数据流 父组件变化刷新子组件属性校验:校验父灯传递过来的属性props:['title'] 数组方式不能实现属性的校验props:{ title:{ type:[Number,Boolean,Array,Object,String],default:'无',validator(val){ val代表传递过来的值 ,如果返回true通过 ,返回false,不通过return val>50}}} 子组件的属性refref放在原生dom上可以获取元素,放在组件上可以获取当前组件eg:this.$refs.child.hit();子组件通过event给父组件传递信息第一种方法:子组件:this.$emit('child-fn','blue') 第一个参数是方法,第二个参数是传递给父级的this.$on('child-fn',changeColor) 这个this指的是child给子组件绑了一个监听函数,这个监听函数是父类的第二种方法:子组件:this.$emit('update:msg','blue');第三种方法:子组件:this.$emit('update:msg','blue');使用模板编译的方式:1.有el2.template3.render会将el和template的形式转化成AST(抽象语法树)会转化成一个函数render 会个vhode{tage:'div',children:['hello',{tab:'h1'}]}->createElement->append页面中let vm = new Vue({      el:'#app',      render:createElement=>{        return createElement('div',{class:'a'},['hello',createElement('h1','你好')])      }      /*template:`

hello

你好

`*/  })//父组件挂载完成并不能确保子组件一定渲染完成,所以在mounted中一般会加nextTick防止无法获取的最新的结果mouted(){this.$nextTick(()=>{})}slot:例如别人写好的一个模态框组件 我们来使用,我们会先引入进来,传入一些自己的内容,所以绑定的方法都是自己的父组件中:

{{msg}}

子组件中:×keeplive:保持缓存组件切换时用的东西加了keeplive created只会执行一次 activated都会执行不加keeplive created都会执行 activated不会执行router 路由 需要引用vue-router.js这个js安装npm init -ynpm install vue-router不同的url返回不同的结果vue的路由(spa)spa中只有一个首页,切换url地址显示不同的组件 切换路径但是页面仍然是以前的那个1.hash #2.pushState 没有#号(在开发的时候会产生404),上线时会使用这个方式,可以依赖服务端解决404问题3.mode模式 默认就是hash  如果mode:'history' h5的api步骤:1.创建一个VuerRouter实例  let router = new VueRouter({      routes // 将路由表注入进来  });2.准备好需要切换的组件  let Home = {template:'

首页

'};  let List = {template:'

列表页

'};3.将路由实例放在vue实例中,在任意组件中会多两个属性let vm = new Vue({      el:'#app',      router      // this.$router this.$route  });//路由表 let routes = [      {path:'/home',component:Home},      {path:'/list',component:List}  ];router-view会将默认匹配到的结果插到此标签内router-linkto动态绑定时可以放对象 tag表示编译后的标签名let router = new VueRouter({    mode:'history', // h5 pushState没有# 但是会有404,开发时采用默认hash的形式    routes:[        {path:'',component:Home}, // 配置默认显示的组件        {path:'/home',component:Home},        {path:'/list',component:List},        // {path:'*',component:List} //如果这样写组件是切换了 但是路径还是写错的        {path:'*',redirect:'/list'} //重定向 一般是404配置    ]  });路由的嵌套routes:[          {path:'/home',component:Home},          {              path:'/profile',              component:Profile,              children:[ //children的path不能加/                  {path:'aboutme',component:AboutMe},                  {path:'introduce',component:Introduce},              ]          }      ]webpack用来打包vue- vue组件都写在写在一起了,.vue文件,每一个.vue文件都是一个组件 .js babel-loader .css css-loader.vue vue-loader组件组成1.模板(结构) 需要vue-template-compiler2.逻辑(行为)3.样式 webpack(模块化)webpack webpack-dev-serverjs打包 babel-core babel-loader babel-preset-es2015 babel-preset-stage-0css模块 less less-loader css-loader style-loaderimg模块 url-loader file-loaderhtml打包 html-webpack-pluginvue模块 vue-loader vue-template-compilervue vue-routervue-cli 脚手架npm install vue-cli -gvue init 模板名 项目名vue init webpack vue-pro-webpack

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,818评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,185评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,656评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,647评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,446评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,951评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,041评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,189评论 0 287
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,718评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,602评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,800评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,316评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,045评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,419评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,671评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,420评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,755评论 2 371

推荐阅读更多精彩内容

  • 基本格式 以json的形式、将数据(支持所有格式)挂载在vue的data上、方法挂载在vue的methods上。 ...
    kirito_song阅读 782评论 0 21
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,066评论 0 29
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,230评论 0 6
  • 目標: 1. 2017年3-5月,每月收入港幣5萬 2. 理想伴侶:身高170或以上,不喝酒,不賭錢,大方,有愛心...
    潔雯阅读 125评论 0 4
  • 温室花儿不知福, 活在锦衣玉食中。 生来注定无风雨, 屋塌室灭去何从。 (这是我的第一首诗听着有点幼稚不过大家的想...
    汉旻阅读 302评论 2 1