Vue入门篇
Vue-cli开发环境搭建
1. 安装nodejs
2. 设置缓存文件夹
$ npm config set cache "D:\vueProject\nodejs\node_cache"
3. 设置全局模块存放路径(设置成功后,之后用命令npm install XXX -g安装以后模块就在D:\vueProject\nodejs\node_global里)
$ npm config set prefix "D:\vueProject\nodejs\node_global"
4. 基于node js 安装cnpm淘宝镜像
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
5. 加入环境变量
D:\vueProject\nodejs\node_global
6. 安装Vue
$ cnpm install vue -g
7. 安装vue-cli脚手架
$ cnpm install vue-cli -g
8. 根据模板创建项目
$ vue init webpack mytest
- Project name :项目名称 ,如果不需要更改直接回车就可以了。注意:这里不能使用大写,所以我把名称改成了vueclitest
- Project description:项目描述,默认为A Vue.js project,直接回车,不用编写。
- Author:作者,如果你有配置git的作者,他会读取。
- Install vue-router? 是否安装vue的路由插件,我们这里需要安装,所以选择Y
- Use ESLint to lint your code? 是否用ESLint来限制你的代码错误和风格。我们这里不需要输入n,如果你是大型团队开发,最好是进行配置。
- setup unit tests with Karma + Mocha? 是否需要安装单元测试工具Karma+Mocha,我们这里不需要,所以输入n。
- Setup e2e tests with Nightwatch?是否安装e2e来进行用户行为模拟测试,我们这里不需要,所以输入n。

|-- build // 项目构建(webpack)相关代码 | |-- build.js // 生产环境构建代码 | |-- check-version.js // 检查node、npm等版本 | |-- utils.js // 构建工具相关 | |-- vue-loader.conf.js // webpack loader配置 | |-- webpack.base.conf.js // webpack基础配置 | |-- webpack.dev.conf.js // webpack开发环境配置,构建开发本地服务器 | |-- webpack.prod.conf.js // webpack生产环境配置 |-- config // 项目开发环境配置 | |-- dev.env.js // 开发环境变量 | |-- index.js // 项目一些配置变量 | |-- prod.env.js // 生产环境变量 |-- src // 源码目录 | |-- components // vue公共组件 | |-- router // vue的路由管理 | |-- App.vue // 页面入口文件 | |-- main.js // 程序入口文件,加载各种公共组件 |-- static // 静态文件,比如一些图片,json数据等 |-- .babelrc // ES6语法编译配置 |-- .editorconfig // 定义代码格式 |-- .gitignore // git上传需要忽略的文件格式 |-- .postcsssrc // postcss配置文件 |-- README.md // 项目说明 |-- index.html // 入口页面 |-- package.json // 项目基本信息,包依赖信息等
9. 安装工程依赖模块
$ cd mytest && cnpm install
10. 启动项目
$ cnpm run dev
属性绑定:
v-bind: 或者 :
<div id="root">
<span v-bind:title="'this is '+title">hello world</span>
</div>
<script>
new Vue({
el:"#root",
data:{
title:"hello world"
}
})
</script>
事件绑定:
v-on: 或者 @
<div id="root">
<h1 @click="handleClick">{{msg}}</h1>
</div>
<script>
new Vue({
el: "#root",
data: {
msg: "hello",
},
methods: {
handleClick: function () {
this.msg = "world";
}
}
})
</script>
双向数据绑定:
v-model
<div id="root">
<input v-model="content">
<div>{{content}}</div>
</div>
<script>
new Vue({
el:"#root",
data:{
content:"this is content"
}
})
</script>
计算属性:
computed:
<div id="root">
姓<input v-model="firstName">
名<input v-model="lastName">
<div>{{fullName}}</div>
</div>
<script>
new Vue({
el:"#root",
data:{
firstName:"",
lastName:""
},
computed:{
fullName:function () {
return this.firstName+" "+this.lastName
}
}
})
</script>
侦听器:
watch
<div id="root">
姓<input v-model="firstName">
名<input v-model="lastName">
<div>{{fullName}}</div>
<div>{{count}}</div>
</div>
<script>
new Vue({
el:"#root",
data:{
firstName:"",
lastName:"",
count:0
},
computed:{
fullName:function () {
return this.firstName+" "+this.lastName
}
},
watch:{
firstName:function () {
this.count ++
},
lastName:function () {
this.count ++
}
}
})
</script>
v-if 和v-show的区别:
<div id="root">
<div v-show="show">hello world</div>
<button @click="handleClick">toggle</button>
</div>
<script>
new Vue({
el: "#root",
data: {
show: true
},
methods:{
handleClick:function () {
this.show = !this.show;
}
}
})
</script>
条件为false时:v-if 这个元素不复存在,v-show style="display:none"
v-for:
<div id="root">
<ul>
<li v-for="(i,index) in list" :key="index">{{i}}</li>
</ul>
</div>
<script>
new Vue({
el: "#root",
data: {
list:[1,2,3]
},
})
</script>
key的存在是为了提高遍历性能。
组件内使用v-for
<template>
<ul>
<item-component v-for="item in items" :item="item"></item-component>
</ul>
</template>
<script>
export default {
props: ['item']
}
</script>

浙公网安备 33010602011771号