原文在我的博客:https://www.liboer.top/articles/detail/vue-BasedUse/
官方文档:https://cn.vuejs.org/v2/guide/components-props.html
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
// 建议引入带有版本号的
<script src="https://cdn.jsdelivr.net/npm/[email protected]">script>
https://cdn.jsdelivr.net/npm/[email protected]
打开此链接,新建一个vue.js文件,ctrl+a 全选, ctrl+c 复制 ctrl+v粘贴
<script src="vue.js">script>
# 最新稳定版
$ npm install vue
Vue 提供了一个官方的 CLI,为单页面应用 (SPA) 快速搭建繁杂的脚手架。它为现代前端工作流提供了 batteries-included 的构建设置。只需要几分钟的时间就可以运行起来并带有热重载、保存时 lint 校验,以及生产环境可用的构建版本。
这个需要一定基础,后边再学。
https://www.dcloud.io/hbuilderx.html
使用标准版即可
解压后即可使用,我们新建一个普通项目,选择vue项目(普通模式)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WfcH2lgK-1618130967977)(https://i.loli.net/2021/04/11/F2WyNGPmYiBDcUg.png)]
数据和 DOM 已经被建立了关联,所有东西都是响应式的。打开你的浏览器的 JavaScript 控制台 (就在这个页面打开),并修改 app.message
的值,你将看到上例相应地更新。
<html>
<head>
<meta charset="utf-8" />
<title>title>
<script src="js/vue.js" type="text/javascript" charset="utf-8">script>
head>
<body>
<div id="app">
{
{message}}
div>
<script type="text/javascript">
// 声明一个vue对象
let app = new Vue({
el:"#app",
// 数据
data:{
message:"Hello Vue!"
}
})
script>
body>
html>
绑定元素 attribute:
<div id="app02">
<span v-bind:title="message">
鼠标悬停几秒钟查看此处动态绑定的提示信息!
span>
div>
<script type="text/javascript">
// 声明一个vue对象
let app2 = new Vue({
el:"#app02",
data:{
message:'页面加载于 ' + new Date().toLocaleString()
}
})
script>
v-bind
attribute 被称为指令。指令带有前缀 v-
,以表示它们是 Vue 提供的特殊 attribute。它们会在渲染的 DOM 上应用特殊的响应式行为。
v-if v-else 之间不能有其他不在判断语句之中的内容
v-for
指令可以绑定数组的数据来渲染一个项目列表:
<div id="app03">
<p v-if="seen">现在你看到我了!p>
<li v-for="item in todos">{
{item.text}}li>
div>
let app3 = new Vue({
el:"#app03",
data:{
seen:true,
todos:[
{ text: '学习 JavaScript' },
{ text: '学习 Vue' },
{ text: '整个牛项目' }
],
}
})
//在浏览器调试窗口改变seen的值,你会发现网页立马变化。同步的。
app3.seen = false
false
app3.seen = true
true
v-on
指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法
v-model
指令,它能轻松实现表单输入和应用状态之间的双向绑定
<div id="app04">
<p>{
{message}}p>
<input v-model="message" />
<button v-on:click="reverse">反转button>
div>
let app4 = new Vue({
el:"#app04",
data:{
message:"Hello Vue!"
},
//方法
methods:{
reverse:function(data){
this.message = this.message.split('').reverse().join('')
}
}
})
通过上边的了解,我们已经知道,vue实例:
var vm = new Vue({
// 选项
})
数据:data,里边为键值对。
方法:methods,方法名:对应的函数。
v-onec 只插入一次
v-html 渲染标签,相当于Django中的safe过滤,不加可以防止XSS攻击
v-bind 绑定一个属性,可以缩写成 :绑定的属性字段名曾
v-on 事件绑定,可以缩写成 @click=
表达式应用
三元运算符
代码实例
<html>
<head>
<meta charset="utf-8" />
<title>title>
<script src="js/vue.js" type="text/javascript" charset="utf-8">script>
head>
<body>
<div id="app">
<h1>{
{msg}}h1>
<h1 v-once>{
{msg}}h1>
<h1>{
{htmltext}}h1>
<h1 v-html="htmltext">h1>
<div :id="idname">
<h1>{
{idname}}h1>
div>
<h1>{
{firstName+lastName}}h1>
<h1>{
{isVip?"Vip":"novip"}}h1>
<h1><button type="button" @click="changeBg">改变背景button>h1>
div>
<script type="text/javascript">
var app = new Vue({
el:"#app",
data:{
msg:"hello vue",
htmltext:"hello",
idname:'login',
firstName:"张",
lastName:"三",
isVip:true,
},
methods:{
changeBg:function(){
document.body.style.background = "skyblue"
}
}
})
script>
body>
html>
computed
代码
<html>
<head>
<meta charset="utf-8" />
<title>title>
<script src="js/vue.js" type="text/javascript" charset="utf-8">script>
head>
<body>
<div id="app">
<h1>{
{firstname + lastname}}h1>
<h1>{
{fullname}}h1>
<h1>{
{reverseMsg}}h1>
div>
<script type="text/javascript">
let app = new Vue({
el:"#app",
data:{
firstname:'张',
lastname:'三',
msg:'hello vue',
},
computed:{
// 计算属性
fullname:function(){
// 会将计算的结果进行缓存,只要遍历属性值不变,就不会重新计算
return this.firstname+this.lastname
},
// get和set事件,当reverseMsg改变后,会调用set方法
reverseMsg:{
get:function(){
return this.msg.split('').reverse().join('')
},
set:function(val){
console.log(val)
this.msg = val
}
}
}
})
script>
body>
html>
尽量不要多用,可以用coputed
<html>
<head>
<meta charset="utf-8">
<title>title>
<script src="js/vue.js" type="text/javascript" charset="utf-8">script>
head>
<body>
<div id="app">
{
{msg}}
div>
<script type="text/javascript">
var app = new Vue({
el:'#app',
data:{
msg:"hello vue"
},
// 监听事件
watch:{
msg:function(val){
console.log(val)
}
}
})
script>
body>
html>
通过对象的方式决定是否存在某个类
通过数组加载类名
直接放置字符串
混合使用
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
.active{
width: 200px;
height: 200px;
background-color: skyblue;
}
style>
<title>title>
<script src="js/vue.js" type="text/javascript" charset="utf-8">script>
head>
head>
<body>
<div id="app">
<div id="" :class="{active:isTrue}" class="page">
div>
<div id="" :class="styleObj" class="page">
div>
<div id="" :class="styleArr">
div>
<div id="" :class="styleStr" class="page-9">
div>
<div id="" :class="arrobj">
div>
div>
<script type="text/javascript">
var app = new Vue({
el:"#app",
data:{
isTrue:true,
styleObj:{
active:true,
laochen:true,
"col-6":true,
},
styleArr:['col-lg-2', 'col-xs-12'],
styleStr:"abc page col-mg-9",
arrobj:["abc", {
active:true}]
},
computed:{
trueis:{
get:function(){
return
},
set:function(val){
console.log(val)
this.isTrue = val
}
}
}
})
script>
body>
html>