理理Vue细节】的更多相关文章

理理Vue细节 1. 动态属性名:可使用表达式来设置动态属性名或方法名: <!-- 属性name --> <a :[name]="url"> ... </a> <!-- 计算属性sss和s --> <img :[sss]="/img/test.png"/> <!-- 方法change1和change2 --> <img :[change1()]="change2()"/…
*只有vm.$data这些被代理的属性是响应的,能够重新渲染视图 *注意,不要在实例属性或者回调函数中(如 vm.$watch('a', newVal => this.myMethod()))使用箭头函数.因为箭头函数绑定父级上下文,所以 this 不会像预想的一样是 Vue 实例,而且 this.myMethod是未被定义的. *常用的生命周期钩子:[before]created.mounted.updated.destroyed,钩子的 this 指向调用它的 Vue 实例. *render…
通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项目中创建如下对应的文件 ├── App.vue // APP入口文件 ├── api // 接口调用工具文件夹 │ └── index.js // 接口调用工具 ├── components // 组件文件夹,目前为空 ├── config // 项目配置文件夹 │ └── index.js // 项目配置文…
安装环境 安装vue-cli 脚手架 1. 安装nodejs环境 下载地址: (nodejs)[https://nodejs.org/zh-cn/download/] 安装(略) 2. 安装vue-cli系列工具 npm install -g @vue/cli npm install -g @vue/cli-service-global 3. vue create hello-world // 用vue 初始化hello-world 项目 3.1 vue create hello-world 3…
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定. Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层.它的核心是 MVVM 中的 VM,也就是 ViewModel. ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量…
[前言] 使用vue处理项目中遇到列表页面时,之前项目中总会有一些细节问题处理得不太好,这里总结一下,以便优化以后的代码.如下: 1. 使用mint-ui中的LoadMore组件上下拉刷新时,有时无法触发上拉加载更多的方法.还有ios上滚动不太流畅. 2. 从列表进入详情,再返回时,列表页需要记住之前的滚动位置,记住它上次的数据,但从其他页面进入列表页时,需要它重新刷新. [需要实现效果] 本demo将实现如下效果. [实现思路] 1. 使用mint-ui中LoadMore组件,定时器模拟上下拉…
1.按需引入element-ui vue脚手架搭建完成之后,可以到element-ui官网进行npm 安装: npm i element-ui -S 如果是完整引入可以按照官网一步一步做即可完成:这里是按需引入,借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的. 首先,安装babel-plugin-component: npm install babel-plugin-component -D 然后,需要将项目里的.babelrc修改为: {…
前情提要: 这里盘点一下,组件细节的问题 现在我们观察一些用框架开发的网页BiliBili.掘金,会发现很多部分都十分相似或者一模一样,我们甚至可以将其拆分归类.而事实上,页面的确是被一个个组件构成的,本章,我们就对组件的细节做一个细致的拆分. 一:组件的使用 组件的注册分为全局注册和局部注册,目前我们用全局注册做例子. 使用Vue.component()对 Vue 实例进行全局组件的注册.这里我们注册了一个叫 Row 的组件,本质是它的模板在template中定义.另外需要注意的是,与根实例 …
Vue.js 和 MVVM 的小细节 转载 作者:流云诸葛 链接:www.cnblogs.com/lyzg/p/6067766.html MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定. Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层.它的核心是…
props使用细节 在Vue.js中我们可以使用 props 实现父组件传递数据给子组件,下面我们总结一下props的使用细节 1.基础类型检查 2.必填数据 3.默认值 4.自定义验证函数 其中每一项也有很多细节,具体看demo Vue.component('my-component',{ props:{ // 基础的类型检查('null',匹配任何类型) propA:Number, // 多个可能的类型 propB:[String,Number], // 必填的字符串 propC:{ typ…
细节1:table(表格)中直接引用自定义组件出现的bug 如上图,tr本应在tbody中面,现在却是同级.造成的原因是h5规定table里必须有tbody,tbody中必须有tr, 当tbody中引入自定义组件,浏览器解析后就出现了上述问题   解决方法:依然在tbody中使用tr,同时使用vue的is属性, 该属性可理解为我想使用一个组件,但不能直接使用,虽然我这里写的是tr,但实际使用的是自定义组件,  同时建议ul中的li, select里的option都使用is属性,以防止上述问题的出…
前言 喜欢购物的小伙伴看过来,你们期待已久的购物车来啦!相信小伙伴逛淘宝时最擅长的就是加入购物车了,那购物车是如何实现商品全选反选的呢?今天就带你们研究购物车的源码,以vue+vant为例. 正文 首先,成功请求购物车以后,使用数组的map方法,在购物车数组里遍历添加 checked: false 属性,初始化 checkbox 选中状态为未选中 接着,开始进行全选的绑定,实现点击全选checkbox,让所有checkbox状态变为选中,这里我们定义一个数组checkList用来计算商品总价,这…
第一种情况:在vue中使用的数据必须先在data中定义数据,不然报错: 第二种情况:访问对象中不存在的值,是可以得到undefined,但是不会报错 第三种:vue只会监听data已经定义的值,后续添加的新值不会被监听 如何解决给vue添加新值的问题 一, vue实例调用$set方法 二, Vue自己调用set方法 第四种: 使用delete运算符删除数据vue检测不到, 那么视图也不会刷新…
vue\src\platforms\web\entry-runtime-with-compiler.js /** * Get outerHTML of elements, taking care * of SVG elements in IE as well. */ function getOuterHTML (el: Element): string { if (el.outerHTML) { return el.outerHTML } else { const container = doc…
1.对于自定义标签名(组件名称),Vue.js 不强制要求遵循 W3C 规则 (小写,并且包含一个短杠),尽管遵循这个规则比较好.HTML 特性是不区分大小写的.所以,当使用的不是字符串模板,camelCased (驼峰式) 命名的 prop 需要转换为相对应的 kebab-case (短横线隔开式) 命名: Vue.component('child', { // camelCase in JavaScript props: ['myMessage'], template: '<span>{{…
@1===>发现一个神奇的地方在对数组进行增加删除的时候 react中一个输入框点击enter键,然后数组push,然后渲染 <input ref='valInput' onKeyUp={this.sureEnter}></input> 还必须拆开来写这么写是不对的 必须拆开一步一步来写,日了狗了,删除也是 *************************************************************************************…
1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解释: 这么一看是我在created中抛出的原因了,于是我换到mounted中,最后果然全出来了! $refs只在组件渲染完成后才填充,并且他是非响应式的,它仅仅作为一个直接访问子组件的应急方案,应当避免在模板或者计算属性中使用$refs!——<vuejs实战>梁灏 对于一个vue小白来说,这个确实…
1.如果使用路由跳转到别的界面的话,例如从文章list页面跳转到具体文章查看详情页,查看某一个具体就需要传递那个文章的id去后台查询, this.$router.push的params方法可以实现传递,但是如果在详情页面再一次刷新,你会发现详情页面数据没有了.就需要用query属性把需要的参数传递过去即可解决问题 this.$router.push({ name: 'ArticleDetail', query: { articleId: obj.id, }, path: '/article/de…
vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-----------------------------------------------------------------------回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数.这个过程就叫做回调;回调,回调,就是回头调用的意思.主函数的事先干完,回头再调用传进来的那个函数.---------…
computed和watch的区别 computed特性 1.是计算值,2.应用:就是简化tempalte里面{{}}计算和处理props或$emit的传值,computed(数据联动).3.具有缓存性,页面重新渲染值不变化,计算属性会立即返回之前的计算结果,而不必再次执行函数 watch特性 1.是观察的动作,2.应用:监听props,$emit或本组件的值执行异步操作,watch(异步场景).3.无缓存性,页面重新渲染时值不变化也会执行 注:watch:一般监听单个变量或者一个数组或对象,c…
Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现数据绑定的. 当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter. 用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化.   Observer :数据监听器,能够对数据对象的…
1. element-ui 日期选区禁用,设置属性 disabledDate: (time) => { const curDate = (new Date()).getTime() const day = 10 * 24 * 3600 * 1000 const dateRegion = curDate + day return time.getTime() < curDate - 24*3600*1000 || time.getTime() > dateRegion } 2.  vue…
当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter.Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是为什么 Vue 不支持 IE8 以及更低版本浏览器. 这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化.这里需要注意的问…
在 @vue/cli-plugin-babel/index.js 中: api.genCacheConfig('babel-loader', {}, []) 我们看一下 api.genCacheConfig 在文件:@vue/cli-service/lib/PluginAPI.js 中被定义: Generate a cache identifier from a number of variables 在函数一开始接受 3 个参数: id partialIdentifier configFile…
1. 在methods 中添加一个方法.如果这个方法使用箭头函数的话,箭头函数中的this不是当前的vue实例,所以通过this.xxx是获取不到实例上面的属性的,这时我们可以用函数的简写来获取到实例上面的属性 2. vue中的v-for循环不能放在根元素上 以下是示例 <template> <div class="schedule" v-for="cur in schedule"> {{ 我是例子 }} </div></t…
ref 当ref写在一个标签元素中,通过this.$refs.name 获取的是标签对应的dom元素 <section id="app" ref="froggy" @click="handleClick">{{name}}</section> <script> var vm = new Vue({ el: "#app", data:{ name:"emit" }, met…
前言 嗯,偶尔看看学习Vue 3技能啦,此前用过Vue 2做过一点东西,Vue 3已面世一段时间,于是乎,我来看看所遇到的问题是否在Vue 3中得到解决,首先,我们来讲讲一个例子在Vue 2中的实现,举个栗子吧,开发过程中我们只会用到省.市.区,这里的区也可以看做是三.四线城市中的县,若我们想要基于县动态创建镇.村,更有甚者,在全国各地在镇下还划分不同的区域,我们通过Vue结合ElementUI来实现此例子 Vue 2 + ElementUI 由于示例代码比较多,这里我们首先直接看效果,如下:…
注意区别 //鼠标滚轮事件 @wheel = "demo"demo()注意执行顺序,用户滚动鼠标滚轮,触发事件执行demo()函数,函数执行完毕后,页面滚动条滚动所以,当demo()函数操作量很大时,就会出现页面卡顿,滚动条不移动的问题解决方法:passive事件修饰符:可以让事件默认行为立即执行,无需等待回调函数完毕 //滚动条事件 @scroll滚动条则先执行滚动再执行回调 键盘事件 //keydown //keyup 两者区别在于,前者按下键盘按键后就触发事件,后者按下再松开后触…
#后面是表达式,下面是参数列表,参数列表每行说明一个参数.每行的参数说明,最后边对应表达式的参数,左边是该参数的类型一类的说明.…
JSX 中 on 开头的属性名 在用 elementui 中的 el-upload 的时候,他们组件中有一个属性 on-change ,也不知道谁想出来的属性名,太扯淡了,非要 on 开头,我开始的代码如下: <el-upload action="/" list-type="picture-card" class="createopt__picupload" auto-upload={false} show-file-list={false…