全局安装 vue-cli
npm install -g vue-cli
创建一个基于 "webpack" 模板的新项目
vue init webpack my-project // 这样安装就自动试生\成router文件
// vue init webpack-simple shangc 这样就没有router
安装依赖
cd my-project
npm install
npm run dev
第二种
1.下载node
二.使用vue-cli搭建脚手架
npm 安装不用装加 --save -dev
npm install -g @vue/cli (一次安装,后面不需要在安装)
1.vue create 项目名 这个一定要写
2.cd 项目名
3..npm run serve
第三种
新建一个文件
1.下载node
检测npm版本,在终端输入 npm -v
,尽量使用5.x以上版本。
全局安装vue-cli,在终端里输入,npm install vue-cli -g
。
在终端中输入 vue init webpack
npm run dev
父组件
mounted() { //要在数据显示出来后调用
console.log(this.$refs.h);
this.$refs.h.innerHTML = "我是一个标题呀";
}
};
refs获取标记的元素 ,父组件中获取dom元素,子组件中获取实例,不过vue不推荐操作dom元素。
全局组件
在main.vue 父组件中
子组件中
export defult{props:["level2","level3"]}
局部组件
.引入组件在main.js中import mybreadctum from "./component/mybreadctum.vue"
注册组件:components("mybreadctum "//组件名,mybreadctum //组件)
在main.vue中使用<mybreadctum >mybreadctum >
1.vue中父组件向子组件(小功能)传值是通过绑定属性的形式传递的,子props接收 ,父组件可以监听子组件的绑定事件,子组件通过$emit 向外触发事件,通过@监听事件的变化,this.$emit('delete', this.index) 向外触发delete自定义事件
2.虽然说 Vue.component里是子组件, todo-item替换过来是子组件,但todo-item本身是包含在父组件模板里的,所以它属于父组件。那个li标签才属于子组件
绑定原生事件在点击@click.native @click后面加一个native
渲染组件不用直接写组件名 如ul里面写li 可以用
组件参数校验
在props中声明一个content:numer/string(数据类型),或者可以content:[string,number]
Vue.component里面的jdata应该是一个函数 写法data:function(){}
methods中就是一个data:
新建todolist文件
在main.js文件中引入外部组件import todolist from "./todolist"
el:"#app",
components:{todolist },
template:"
.export default {
components:{ "el-button" todoitem }, //el-button是elment中的ui组件
}
/el-button是elment中的ui组件 在对应是位置使用
num:0, 如果有传过来的值就显示值,,如果没有就显示0
created() {
// 如果有值
if (this.swiperList) {
this.defaultSwiperList = this.swiperList;
}
子组件中写 ,如果$emit放在标签里this可以不写, 如果写在methods:{ this.$emit( "num-change",this.num)} num-change是事件名, 事件后拿到的数据。
父组件中 使用@num-change=''change'' 数据改变拿到子组件里的数据
methods:{
change(){
}
}
new Vue({
el:"#app",
//todo-item是要显示的标签 ,todolist是引进来的文件
components:{'todo-item': todolist },
v-for="(item ,index) in list" :key="index" :content="item" :index="index" @delete="handeldelete" >
// 全局组件(1)
Vue.component("todo-item",{
// 子组件接收父组件传过来的值
props:['content','index'],
// 给li绑定点击事件
template:'
methods: {
// 子组件给父组件传值
handeldelete:function(){
this.$emit("delete",this.index)
}
},
})
// 局部组件1
// var TodoItem={template:'
'}new Vue({
el:"#app",
// 局部组件要注册2
// components:{'todo-item':TodoItem},
data() {
return {
list:[],
index:"",
content:''
}
},
methods: {
handerclick:function(){
this.list.push(this.content)
this.content=""
},
handeldelete:function(index){
this.list.splice(index,1)
},
}
})
npm n install vuex --save
新建store.js
文件
在store.js中
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
const state={
count:1
},
const mutations={
add(state){
state.count++;
},
reduce(state){
state.count--;
}
}
})
新建一个vue的模板,位置在components文件夹下,名字叫count.vue
。在模板中我们引入我们刚建的store.js
文件,并在模板中用$store.state.count
输出count 的值。
在count.vue模板中加入两个按钮,并调用mutations中的方法。
{{msg}}
{{$store.state.count}}