1.组件引入css。

例:test.vue引入swiper.min.css

| -- src

|  | -- components

|   | -- test

|      | -- test.vue

| | -- css 

|     | -- swiper.min.css

<script>
  import '../../css/swiper.min.css';
</script>

组件所在处为相对位置。

2.全局安装vue-cli

首先确保安装node,检查node-v;.

在node目录下输入:

npm install - g vue-cli

确定是否安装,输入:
vue -V
 

3.不要使用编辑器自带的代码格式整理

如HBuilder
会导致代码格式不符合规范。
例:看起来是2个空格,实则是使用的缩进符号。
 
 

4.请求本地数据配置

旧版本dev-server.js ,新版本webpack.dev
 
 

5.修改代码规范

.eslintrc.js文件内的rules(好像没效果?)

6.移动端设备访问

移动端设备必须和计算机处于局域网内。

config>>index.js文件内修改dev属性值host为本机IP地址。

然后把网址生成二维码通过手机微信或QQ扫描。

二维码可通过firebox或草料二维码生成

dev: {
host: '192.168.31.129',
}

7.vue-resource

前后端数据调用.

首先在package.json里“dependencies”引入"vue-router": "^3.0.1"

然后npm install vue-resource

例:使用data数据seller

HTML调用组件,传递值

<v-header :seller="seller"></v-header>

js

import header from './components/header/header'
const ERR_OK = 0
export default {
name: 'App',
data () {
return {
seller: {}
}
},
created () {
// vue-resourse use
this.$http.get('/api/seller').then((response) => {
response = response.body
if (response.errno === ERR_OK) {
this.seller = response.data
console.log(this.seller)
}
})
},
components: {
'v-header': header
}
}

header组件

HMTL

<template>
<div class="header">
我是{{msg}}
<div class="content-wrapper">
<div class="avatar">
<img width="64" height="64" :src="seller.avatar"/>
</div>
<div class="content">
<div class="title">
<span class="brand"></span>
<span class="name">{{seller.name}}</span>
</div>
<div class="description">
{{seller.description}}/{{seller.deliveryTime}}分钟送达
</div>
</div>
</div>
</div>
</template>

JS

<script type="text/ecmascript-6">
export default {
name: 'header',
data () {
return {
msg: 'this is header!'
}
},
props: {
seller: {
type: ''
}
}
}
</script>

8.stylus使用

package.json内“devDependencies” 添加属性

{
"devDependencies": {
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
}
}

npm

npm install stylus -g

src下common内创建文件夹stylus,存放styl文件

调用minxin.styl文件,并使用border-1px函数

minxin.styl文件

border-1px($color)
position : relative
&:after
display: block
position: absolute
left: 0
bottom: 0
border-top 1px solid $color
width: 100%
content: ' '

引用

<style lang="stylus" rel="stylesheet/stylus">
@import "common/stylus/mixin.styl";
.tab
// border-bottom: 1px solid rgba(7, 17, 27, 0.1)
border-1px(rgba(7, 17, 27, 0.1))
</style>

9.没有找到相应的模块。

These relative modules were not found

例:引用图标字体路径不对。

大多都是路径的引用出了问题。

10.过渡和v-for

transition

一定要使用<transition name="abc"></transition>包裹。

使用transition="abc",方法不行

v-for

<div v-for="(value, key, index) in object">
{{ index }}. {{ key }}: {{ value }}
</div>
new Vue({
el: '#v-for-object',
data: {
object: {
firstName: 'John',
lastName: 'Doe',
age: 30
}
}
})

11. this.nextTick()

DOM更新后的回调函数,

操作DOM在这个回调函数里比较好

12.watch和computed属性

compute属性可以更改data的值。要设置set属性

computed: {
msgChange: {
get: function () {
return this.msg.split('').reverse().join('')
},
set: function (abc) {
this.msg = abc
}
}
},

可以使用watch监听事件来更改data属性值

watch: {
// 总数发生变化时,show属性值更改为false
count: function () {
this.show = false
}
},

13.事件修饰符:stop,prevent

.stop

.prevent

.capture

.self

.once

.passive

<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a> <!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form> <!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a> <!-- 只有修饰符 -->
<form v-on:submit.prevent></form> <!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div> <!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。

14.父组件调用子组件的方法 ref="children"

15.prop是单向绑定,不能更改数据的解决方案

use a data or computed property based on the prop's value.

https://blog.csdn.net/a_bet_of_three_years/article/details/78470757

16.$emit,$on的使用详解

主要介绍了vue2.0 中#$emit,$on的使用详解

vue1.0中 vm.$dispatch 和 vm.$broadcast 被弃用,改用$emit,$on

vm.$on( event, callback )

监听当前实例上的自定义事件。事件可以由vm.$emit触发。回调函数会接收所有传入事件触发函数的额外参数。

vm.$emit( event, […args] )

触发当前实例上的事件。附加参数都会传给监听器回调。

例子:

//父组件
<template>
<ratingselect @select-type="onSelectType"></ratingselect>
</template>
<script>
data () {
return {
selectType: 0,
},
methods: {
onSelectType (type) {
this.selectType = type
}
}
</script>

父组件使用@select-type="onSelectType"@就是v-on的简写,监听由子组件vm.$emit触发的事件,通过onSelectType()接受从子组件传递过来的数据,通知父组件数据改变了。

// 子组件
<template>
<div>
<span @click="select(0, $event)" :class="{'active': selectType===0}"></span>
<span @click="select(1, $event)" :class="{'active': selectType===1}"></span>
<span @click="select(2, $event)" :class="{'active': selectType===2}"></span>
</div>
</template>
<script>
data () {
return {
selectType: 0,
},
methods: {
select (type, event) {
this.selectType = type
this.$emit('select-type', type)
}
}
</script>

子组件通过$emit来触发事件,将参数传递出去。

17.缓存组件状态keep-alive

<!-- 失活的组件将会被缓存!-->
<keep-alive>
<component v-bind:is="currentTabComponent"></component>
</keep-alive>

https://cn.vuejs.org/v2/guide/components-dynamic-async.html#%E5%9C%A8%E5%8A%A8%E6%80%81%E7%BB%84%E4%BB%B6%E4%B8%8A%E4%BD%BF%E7%94%A8-keep-alive

vue记事1的更多相关文章

  1. vue记事2

    1.vue2父子组件双向数据传递 https://segmentfault.com/a/1190000011783590 2.vue父组件通过props向子组件传递方法的方式 https://segm ...

  2. 百度分享vue版-vshare

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...

  3. vue项目引入社交分享插件

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...

  4. vue分享插件

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...

  5. 一篇文章带你了解网页框架——Vue简单入门

    一篇文章带你了解网页框架--Vue简单入门 这篇文章将会介绍我们前端入门级别的框架--Vue的简单使用 如果你以后想从事后端程序员,又想要稍微了解前端框架知识,那么这篇文章或许可以给你带来帮助 温馨提 ...

  6. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

随机推荐

  1. (博弈 sg入门)kiki's game -- hdu -- 2147

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2147 题意: 在一个n*m的棋盘上,从  (1,m),即右上角开始向左下角走. 下棋者只能往左边(lef ...

  2. JAVA反射机制o

    Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性.例如,使用它能获得 Java 类中 ...

  3. 咏南中间件新增SQL日志

    为了方便开发时跟踪调试SQL语句的执行情况,咏南中间件新增SQL日志,所有执行过的SQL都会写入SQL日志文件中. SQLDEBUG设为1,启用:设为0,停止写SQL日志.

  4. Mac提示App已损坏 你应该将它移到废纸篓的解决方案

    现象 "Elmedia Player.app"已损坏,打不开. 您应该将它移到废纸篓. 原因 很多朋友们在安装软件时Mac OS系统出现提示"XXXApp 已损坏&quo ...

  5. GBK还是UTF-8? Eclipse连接TFS的编码之痛!encoding, encoding, encoding…

    在中文Windows操作系统上安装Eclipse或MyEclipse,默认会将Eclipse的编码设置为GBK,与操作系统的默认编码保存一致. 在这种默认设置下,在Eclipse新增的文件不会自动被团 ...

  6. Hadoop 新建集群namenode format

    在hadoop部署好了之后是不能马上应用的,还要对配置的文件系统进行格式化. 使用命令: hadoop namenode -format 注释:namenode和secondary namenode均 ...

  7. 调整Linux最大打开文件数

    #!/bin/bash ## 文件数限制 ulimit -n ulimit -Sn ulimit -Hn ## fs.nr_open,进程级别 ## fs.file-max,系统级别 ## 最大文件描 ...

  8. Jquery EasyUI 各组件属性、事件详解

    CSS类定义: div easyui-window                               window窗口样式 属性如下: 1)       modal:是否生成模态窗口.tru ...

  9. 记那些年在asp.net mvc上挖过的坑

    表现: IDE是vs2017.是在 A 控制器方法断点后,却怎么也运行不到那个位置,但是又正常返回页面.该方法位于web项目引用的控制器类库上的一个控制器,试过它隔壁的控制器,一切正常. 但每次访问该 ...

  10. leetcode 字符串转整数(atoi)

    实现atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值. ...