zoukankan      html  css  js  c++  java
  • vuejs2点滴

    在Vue定义一个不被添加getter setter 的属性:

    https://github.com/vuejs/vue/issues/1988 

    博客:

    0.vux的x-input源码分析。

    http://www.cnblogs.com/coding4/p/7509282.html

    1.在vue中,如何通过触发一个dom节点的click事件触发另一个dom节点的click事件?

    https://www.zhihu.com/question/51989820

    2.从数据结构着手,做关注的话,你的数据中得有关注这个字段

    https://segmentfault.com/q/1010000006990991

    3.iview应该学习的一些东西;

    http://www.jianshu.com/u/ab510d028207

    4.vue源码学习的博客:

    http://hcysun.me/2017/03/03/Vue%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/

    5.vue弹出窗的理解哈哈。http://www.jb51.net/article/92436.htm

    https://segmentfault.com/a/1190000006849814

    以下是vue中躺过的坑。

    1.this.$ref 有时间多尝试这种用法。

    2.@click.natvie @click.self 

    3.在webpack入口的js上导入是全局导入,在内部vue 的script标签导入是局部导入 ,import 和require 一样

    4.现在试验的结果是,如果我们在main.js的导入文件中,import $ from 'jquery',在局部的组件中使用$还是会报错,所以在每次的局部组件中还是需要引入$的。

    如果我们在引入cdn的话,在局部的组件中就不知道了。有时间测试。

    5.为什么wos的全局的variable.less文件在每个.vue的style都导入?

    其实webpack最后结果是一样的,只会导入一次 但是再写vue文件的时候,less是要编译然后热更新的 有些模块不需要variable.less,就不用去编译它。速度自然会快一点。对于大项目就能看出来明显的速度了。

    6.vuex中利用,store,直接发起ajax的请求

    过去类似cookie

    7. v-show中可以使用this.$store但是在@click中就不可以使用this.$store,必须使用$store.state

    8.vue.resource

    https://segmentfault.com/a/1190000007087934

    9.vuex

    http://www.cnblogs.com/lyz1991/p/5568801.html

    10.vue组件中如果有加载一个<hahaVue/>

    这样的组件的话, 那么在父组件中写样式的话(有scoped)那么子组件是没有效果的。

    11.

    http://www.cnblogs.com/lvyongbo/p/5946271.html

    12.zh这里有时候需要{}有时候不需要括号的,这个我不知道为什么。

    13.vue2官方组件库。

    https://github.com/vuejs/awesome-vue#libraries--plugins 

    14.vue 父给子传递数据的时候,使用props传递数据。会产生警告。

    https://i.cnblogs.com/EditPosts.aspx?postid=6411807

    http://www.jb51.net/article/98881.htm

    这个问题我至今没有解决 

    15.在components,props这些传值的时候小心报错,各种对象还是数组,需要''不需要点的。

    16.写一个鼠标悬停后2秒移除的效果,vue各种坑。

     有事情清楚的话,必须用clearTimeout,直接==Null是不行的。

    17.这个是什么鬼。

     

    这个是什么鬼。

    18.一个vuex学习的网站。

    https://www.lambda-study.com/articles/doc/592e7c612beffe0cd1ace950 

    19.watch的多种用法。

    http://www.cnblogs.com/dupd/p/5887907.html

    20.今天遇到一个特别奇怪的问题,但是这个奇怪的问题帮我解决了一个难题,以后有时间在看看吧,我感觉是extend的问题哈。

    <template>
    	<div class="titleTip" v-show="options.show">
    		<div class="arrowNew"></div>{{options.content}}
    	</div>
    </template>
    <script type="text/javascript">
    	import $ from 'jquery'
    	export default {
    		name : 'titleTip',
    		props:["options"],
    		data(){
    			return {
    				show:false
    			}
    		},
    		computed:{
    			optionsDefault(){
    				var that = this;
    				var optionsDefault  = {
    					zIndex: 10,
        				position:' absolute',
    					right:'-122px',
    					top:'8px',
    					content:"这是一个小提示哈哈!",
    					show:false,
    					arrow:"left"
    				}
    				//optionsDefault = this.options;
    				optionsDefault = window.tools.extend({},optionsDefault,this.options);
    				return optionsDefault;
    			}
    		},
    		watch:{
    			optionsDefault(newValue,oldValue){
    				var that = this;
    				window.haha = that.optionsDefault.show;
    				if(that.optionsDefault.show==true){
    					setTimeout(function(){
    						that.options.show = false;
    						//that.show = false;
    						//that.optionsDefault.show==false;
    
    					},2000)
    				}
    			}
    		},
    		mounted(){
    			var that = this;
    			$('.titleTip').css(that.optionsDefault);
    			if(that.optionsDefault.arrow=="left"){
    
    			}else if(that.optionsDefault.arrow=="right"){
    
    			}else if(that.optionsDefault.arrow=="top"){
    
    			}else if(that.optionsDefault.arrow=="bottom"){
    
    			}
    		}
    	}
    </script>
    <style type="text/css">
    	.arrowNew{
    		display:inline-block;
    		position: absolute;
    		0;
    		height:0;
    		border-top:6px solid transparent;
    		border-bottom:6px solid transparent;
    		border-right:6px solid;
    		color: rgba(70,76,91,.9);
    		left: -5px;
    	}
    	.titleTip{
    		max- 250px;
    	    min-height: 34px;
    	    padding: 8px 12px;
    	    color: #fff;
    	    text-align: left;
    	    text-decoration: none;
    	    background-color: rgba(70,76,91,.9);
    	    border-radius: 4px;
    	    box-shadow: 0 1px 6px rgba(0,0,0,.2);
    	    white-space: nowrap;
    	}
    </style>
    

    这里有一部that.options.show= false;

    这里的虽然options从父那里继承来的,但是这个属性单项绑定,我们这样子是改变不了父元素的属性的,所以说这样子还是只是改变子组件内部的东西。

    21.如果你父调用子的话,可以用refs但是如果子调用父的方法的话。

    eventHub 

    this.$root.eventHub.$on('registerToLoginEvent', ()=>{
    //handle(yourData)
    this.modalLogin = true
    })
    //开始轮训请求后台监测是否支付成功
    that.$root.eventHub.$emit('shopStartEvent')

    22.

    login.vue包含register.vue

    login.vue和register.vue都有titleTip这个插件。

    因为有了这句代码导致所有的.titleTip的样式都相同了。

    23.
    vue.common.js?c9e6:436 [Vue warn]: Unknown custom element: <router-view> - did you register the component correctly?

    因为没有添加。Vue.use(Router);

    24.我们来写一个最简单的带路有例子哈。

    a.html

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
        <title> vux2 多页面测试 </title>
      </head>
      <body>
        <div id="app">
    		<router-view></router-view>
    	</div>
        <!-- built files will be auto injected -->
      </body>
    </html>
    

      

    a.js

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    
    import Add from './addApp'
    import List from './listApp'
    
    
    
    const routes = [
      { path: '/', component: Add },
      { path: '/list', component: List }
    ]
    
    Vue.use(VueRouter)
    
    const router = new VueRouter({
      routes:routes
    })
    
    
    new Vue({
      router: router
    }).$mount('#app')
    

    25.export default 和export 的区别和联系。

    http://blog.csdn.net/zhou_xiao_cheng/article/details/52759632  

    相信很多人都使用过export、export default、import,然而它们到底有什么区别呢? 
    JavaScript ES6中,export与export default均可用于导出常量、函数、文件、模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用,但在一个文件或模块中,export、import可以有多个,export default仅有一个。 
    具体使用: 
    1、

    //demo1.js
    export const str = 'hello world'
    
    export function f(a){
        return a+1
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对应的导入方式:

    //demo2.js
    import { str, f } from 'demo1' //也可以分开写两次,导入的时候带花括号
    • 1
    • 2
    • 1
    • 2

    2、

    //demo1.js
    export default const str = 'hello world'
    • 1
    • 2
    • 1
    • 2

    对应的导入方式:

    //demo2.js
    import str from 'demo1' //导入的时候没有花括号

    26.Router命名就行,但是VueResource这样子命名就不行。

    27.这里我们需要明白这里的headerCom 这里边写v-model这里来说是不对的,但是iview这里就是可以的,应为iview是自己定义的标签,不是组件,学习一个iview的渲染方法。

     28.http-server的使用方法

    http-server -cros -P http://172.16.2.21:8080

    29.第一次用native,这里iview的标签如果不用.native的话,步骤不到@click.native事件。

     30.window.location.href可以的,但是window.location.open就是不行的

     31.有时间研究一下,vue2 中的render函数。

    32.今天遇到这样一个问题:

    我在new Vue赋值给另一个window.vmT中。

    我们发现在mounted中,必须放在setTimeout0中可以访问到。唯一的解释是new Vue没有渲染完成。

     33.你的一个js已经编译了,所以不能再另一个cms.js中再去引用他

    Module not found: Error: a dependency to an entry point is not allowed

     34. 有时间研究下iview的下拉框。

     35.vuex 常用的代码

    import { mapState,mapActions } from 'vuex'
    computed:{
        ...mapState({
             pay: ({pay}) => pay
        })
    },
    ...mapActions([
         'getApps'
    ]),
    //在module中的用法
    import {
      SET_ORDER_DATA,
      REPONSE_SUCCESS,
      REPONSE_FAIL
    } from '../types'
    
    import api from '../../api/index'
    
    const state = {
      //用于支付的几个需要的参数
      barcodeShow:false,//点击购买的时候,弹出二维码的弹窗
      barcodeUrl:'',//后台传过来的二维码的base64的地址
      vipInfo:'',//会员信息
      mealPayIndexCounselShow:false,//mealPayIndex路由下边 两个地方都用到
      orderId:'',//订单详情
      orderSucessData:{},//订单成功数据
      shopRoute:'',//保存购买成功前的路由
      userInfo:{}
    }
    const mutations = {
      [SET_ORDER_DATA](state,data){
      	state.orderSucessData = data;
      },
      [REPONSE_SUCCESS](state,data){
        state.orderSucessData = data;
      },
      [REPONSE_FAIL](state,data){
        state.orderSucessData = data;
      },
      aa(state){
        state.mealPayIndexCounselShow = true;
      },
      mealPayIndexCounselShow(state){
        state.mealPayIndexCounselShow = true;
      }
    }
    // actions
    const actions = {
      getApps ({ commit }){
        api.apps().then(function(data){
          //commit(SUCCESS_GET_APPS, { apps: response.data.data })
        }).catch(function(e){})
        /*api.getApps().then(response => {
          if(!response.ok){
            return commit(FAILURE_GET_APPS)
          }
          commit(SUCCESS_GET_APPS, { apps: response.data.data })
        }, response => {
          commit(FAILURE_GET_APPS)
        })*/
      }
    }
    
    export default {
      state,
      mutations,
      actions
    }
    

     目录结构:

    store.js中的代码:

    import Vue from 'vue';
    import Vuex from 'vuex';
    Vue.use(Vuex);
    import pay from './modules/pay.js'
    import common from './modules/common.js'
    
    const debug = process.env.NODE_ENV !== 'production'
    Vue.config.debug = debug
    Vue.config.warnExpressionErrors = false
    export default new Vuex.Store({
      modules: {
        'pay':pay,
        'common':common
      },
      strict: false
    })
    

     36. 这种方式的打包必须使用npm install

    "idata3d-webapp-main":"/Users/jinyunyan/Desktop/svn/idata3d-webapps/idata3d-webapp-main", 

     37.$router.push

    http://blog.csdn.net/sinat_17775997/article/details/68941091

    38.监听vuex 中state某个值的改变

    http://www.tuicool.com/articles/UvQR3qq

    39.vuex dispatch方法有两个用处。

    在$store调用.dispatch方法然后,返回的promise对象,可以直接执行.then方法。 

    另一个用处在action的里边

    await这个方法可以等待异步完成。

    40.vue不兼容jquery的地方

    当我们的代码中可以执行$,但是在我们的控制台$就会失去效果。

    41.

    以前一直为什么时候用url传参,什么时候用localstorage,而烦恼,今天在偶然间写代码的时候,遇到了这个问题,类似的问题,为什么要用vuex,是不是所有的对象都经过vuex好,为什么不把所有的对象都放到window对象下,为什么前后端一定要设置相同的配置文件,如果不配置的话,有没有什么比较好的方法避免,个人意见,只有涉及到可能出现修改的变量,才会考虑vuex,或者多个页面共用的变量时,建议直接放window就可,别想太多,url的方式适合传静态的或者写死的一些变量,如果涉及到刷新的话,刷新面临你在其他页面设置的window变量失效,vuex也同样失效,这样的话我们必须考虑到localstorage,或者websql之类的,还有前后端的配置,让我拿汉字直接当key用,倒是简单,在浏览器的url上传的时候,娶不到,我像了各种方法,也可能是当时脑子懵了,明天去的在看看,

    42.iview table严重的bug。

    用icon图标的时候发现触发不了onclick事件,必须包一层其他的元素比如div,span,或者btn之类的。

    43. v-model="!redcar.compareValueSecondShow" 这样子写是不行的v-show="!(redcar.compareValueFirstShow)"

    44.vue事件,特别注意vue的自定义事件。

    http://www.tuicool.com/articles/au2AJbm 

    45.vuex变量在刷新之后会消失的。

    刷新之后两次都打出来12.

    46.那么在页面跳转的时候回消失么。路由跳转的时候不会消失。

    47.用一个日期插件,你会发现监听绑定的事件和监听数值watch的方法都行,但是事件方法比watch快一些。这两个功能有重复了。

    48.在mounted中调用方法改变值,在watch是可以监听到的。

    49.有时候你发现$refs找不到了,因为你在生命周期中的ready中调用了。

    50.有时候你发现在ready中调用方法有时候会有异常。

    因为ready的时候,data可能绑了,但是methods有可能没有绑。你需要把methods中的代码放到ready中执行。

    51.watch和computed。

    两个都有监听类似的效果,

    computed在里边的值改变的时候,return也会改变。

    watch在值改变的时候监听到了。

    52.这两个有本质的区别。v-model是绑定。 双向的可以用watch。 但是:value就不行了,只能通过事件去获取改变的值。

    :data是向子级传数据了。

    v-model是双向绑定了。

    :value这个就不知道了。

    52.beforeMount中改变的变量在watch中也可以监测到。

    53. vue子组件调用父组件的方法。

    http://www.cnblogs.com/caik13/p/6896890.html

    54.vue-loader这个会依赖于postcss这个模块,这样子的话,我们写的css,会帮助我们自动抹平一些兼容性的问题。

    55.这里的router还可以这样配置,我也是第一次见。

     56.v-if 与v-for的区别和联系。

    v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)。

    相比之下,v-show 简单得多——元素始终被编译并保留,只是简单地基于 CSS 切换。

    一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。

     57.怎么解决两个inline-block之间的距离,可以把父元素的font-size设置为0,然后在设置子元素对应的宽和高。
    58.一个图片和一排文字在一横,发现怎么都不能对齐的时候,我们的方法,先设置vertical-align:top;然后调一个的margin-top
    59.如果两个display:inline-block之间有距离除了上面说的,把父的font-size设置为0,我们还有其他的办法来解决,就是把两个span标签紧挨着,不留任何空隙。
     60.在flex布局中。
    如果父是display:flex;
    子最好用div,用span有问题再android上。
    61.

    这个optimize的OccurenceOrderPlugin这个的作用优化下,这个优化是把经常使用的模块放在优先位置,使他能优先使用。

    62. 这个插件的作用是跳过执行的那行代码,定位出来它,并且包还能继续往下执行。

    63.这种中间件的作用就是,开发的时候把,对应的目录放到内存下,然后我们也可以访问到。

    64.vue路由

    http://www.cnblogs.com/dmcl/p/6138389.html

    http://www.cnblogs.com/mingweiyard/p/6744222.html

     65.这个背景的模糊。实现方法,来个背景图片,然后在子元素来个absolute,然后下边就行。

    z-index: -1
    filter: blur(10px)

    z-index: -1
    filter: blur(10px)

     

     66.track-by="$index"

     67.

     68.ios下有模糊的效果。

     69.设置了flex又设置width是为了android的兼容性问题。

     70.this.$nextTick

    71.vue2关于父子传值和双向绑定。

    (1)父给子单项传值,通过props值,代码:

    <div id="app">
        <modal :haha="haha"></modal>
    </div>
    components:{
      'modal':{
        'template':'<div>hahayan</div>',
        'props':['haha'],
        data () {
          return {
            visible:true
          }
        },
        mounted(){
          this.haha = "1234";
          alert(this.haha);
        }
      }
    },

     这样子改变父元素传过来的值,会导致报警告。

     所以说我们一般不改变父元素传过来的值,如果说要改变,那么你可以新创建一个值,然后把父传过来的值付给它就行。

    (2)通过computed属性,监测父元素的传过来的值,有类似watch的效果。(watch在改变的时候才会有,第一次复制是不会触发的,但是computed在第一次赋值的时候就会触发)

     但是你会发现通过computed的值 ,好像无法改变了。

    请看这边博客:https://segmentfault.com/q/1010000004571556

    这个是computed的两种写法

    如果你不写set方法的话,你会发现你的=赋值操作没有任何意义。

      (3)通过watch去监听。watch监听也有两种方法。

       http://www.cnblogs.com/dupd/p/5887907.html

      第一种用法中,传一个参也可以用。

    (4双向绑定。

    良心博客

    http://www.cnblogs.com/wwlhome/p/6551165.html

    https://segmentfault.com/a/1190000008662112

     方法1.

     方法2.

     72.监测全局store状态的改变。

     73.vue懒加载 ,原来只有一个app.js现在生成多个了。

    这个截图是一个简单的实现。

    http://blog.csdn.net/yangbingbinga/article/details/61417689

    74.better-scroll真的会导致pc端点击产生两次。

    better-scroll

    http://blog.csdn.net/qq_35844177/article/details/54629666 

     75.这个non-primitive这个因为

    76.或许可以用$event里边的bubbles组织冒泡

     77.这两个是可以共存的。

     78.特别注意

    http://localhost:8080/#/

    http://localhost:8080/index.html#/

    79.vue动画

    http://www.cnblogs.com/jiangxiaobo/p/6076652.html 

    80.当路由传过去值的时候,可以通过this.$route.query.key去获取对应的值。

    81.vue路由重定向

    http://blog.csdn.net/lemon_zhao/article/details/55509903

    82.v-for循环的时候,如果把遍历出来的值放到方法里。

     83.对于vue中相同组件同事出现同样的ajax请求,但是这些ajax请求的结果都是一致的,这些结果应该放到vuex或者全局变量中。请求之前先进行判断是否存在。

    84.这么监听state中的数据的变化

     85.vue的过滤器的使用。

    http://blog.csdn.net/weiweismile123/article/details/70226319

  • 相关阅读:
    python random模块随机取list中的某个值
    初学习-python打印乘法表、正方形、三角形
    python字符串拼接相关
    导航条2-
    HTML输入验证提示信息
    CMD常用功能
    AngularJs学习笔记(4)——自定义指令
    AngularJs学习笔记(3)——scope
    AngularJs学习笔记(2)——ng-include
    AngularJs学习笔记(1)——ng-app
  • 原文地址:https://www.cnblogs.com/coding4/p/6811978.html
Copyright © 2011-2022 走看看