课程简介
准备知识
10秒钟看懂Vue.js
<div id="demo">
<p>{{message}}p>
<input v-model="message">
div>
var demo = new Vue({
el: '#demo',
data: {
message: 'Hello Vue.js'
}
})
Vue.js的一个组件
*.vue = (HTML) +
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>todoListtitle>
<style>
#app{
margin: 0 auto;
width: 400px;
}
#add-input{
width: 350px;
height: 30px;
}
li{
list-style: none
}
p{
display: inline
}
.finished{
text-decoration:line-through;
}
.item-status{
background-color: red;
color: #fff;
font-size: 12px;
padding: 0 5px;
}
.item-delete{
text-decoration:underline;
color: gray;
font-size: 12px;
cursor: pointer;
}
style>
<script src="https://unpkg.com/vue">script>
head>
<body>
<div id="app">
<h1>{{title}}h1>
<input id="add-input" v-model="newItem" @keyup.enter="addNew">
<ul>
<li v-for="(item,index) in items">
<h3 @mouseenter="itemEnter(item)" @mouseleave="itemLeave(item)">
<input type="checkbox" @click="toggleFinish(item)" v-model="item.isFinished">
<p class="item-label" :class="{finished:item.isFinished}">{{ index + 1 }}.{{item.label}}p>
<p class="item-status" v-if="item.isFinished">finishedp>
<p class="item-delete" v-if="item.showDelete" @click="deleteItem(item)">Deletep>
h3>
li>
ul>
div>
<script>
var STORAGE_KEY = "todos_vuejs"; //放在最前面,因为要拿到赋值"todos_vuejs"
new Vue({
el: '#app',
data:{
title:"This is a todoList",
items: fetch(),
newItem:''
},
watch:{
items:{
handler:function(items){
save(items);
},
deep: true
}
},
methods:{
toggleFinish:function (item) {
item.isFinished = !item.isFinished;
item.showDelete = true;
},
addNew:function(){
this.items.push({
label:this.newItem,
isFinished: false,
showDelete: false
})
this.newItem='';
},
itemEnter: function (item) {
item.showDelete = true
},
itemLeave:function(item){
item.showDelete = false
},
deleteItem:function(item){
var index = this.items.indexOf(item);
this.items.splice(index, 1)
}
}
})
function fetch() {
return JSON.parse(window.localStorage.getItem(STORAGE_KEY) || '[]');
};
function save(items) {
window.localStorage.setItem(STORAGE_KEY,JSON.stringify(items));
}
script>
body>
html>
NPM
在用Vue.js构建大型应用时推荐使用NPM安装,NPM能很好地和诸如Webpack或
Browerify的CommonJS模块打包器配合使用。Vue.js也提供配套工具来开发单文件组件。
# 最新稳定版本
$ npm install vue
# 最新稳定 CSP 兼容版本
$ npm install vue@csp
命令行工具
Vue.js提供一个官方命令行工具,可用于快速搭建大型单元应用。该工具提供开箱即用的
构建工具配置,带来了现代化的前端开发流程。只需要一分钟即可启动带热重载、保存时
静态检查以及可用于生产环境的构建配置的项目。
# 全局安装 vue-cli
$ npm install -g vue-cli
# 创建一个基于“webpack”模板的新项目
$ vue init webpack my-project
# 安装依赖,走你
$ cd my-project
$ npm install
$ npm run dev
从*.vue到页面
.vue –> webpack –> .html + .js + .css
一个最简单的实例
<div id="app">
{{message}}
div>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js'
}
})
如何划分组件
Vuejs组件之间的调用 - 另外一个重要选项 - components
import Header from './header'
import Footer from './footer'
new Vue({
data: {
isShow: true
},
components: {
Header, Footer
}
})
Vuejs组件之间的通信 - props
<header msg='something interesting'>header>
<footer>footer>
// this is header.vue
new Vue({
data: {
username: 'xxx'
},
props: ['msg'],
methods: {
doThis: function () {
console.log(this.msg)
}
}
})
《vue.js入门基础视频地址》