Vue-(1)

内容概览

  • 前端发展介绍
  • MVVM与组件化开发
  • Vue的快速使用
  • 插值语法
  • 指令系统之文本指令
  • 指令系统之事件指令
  • 指令系统之属性指令

前端发展介绍

1. HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES13):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看
    # ECMA标准
    # JavaScript=ECMA+bom+dom
2. Ajax的出现 -> 后台发送异步请求,Render+Ajax混合
3. 单用Ajax(加载数据,DOM渲染页面):前后端分离的雏形
4. Angular框架的出现(1个JS框架):出现了“前端工程化”的概念(前端也是1个工程、1个项目)
5. React、Vue框架:当下最火的2个前端框架(Vue:国人喜欢用,React:外国人喜欢用)
6. 移动开发(Android+IOS) + Web(Web+微信小程序+支付宝小程序) + 桌面开发(Windows桌面):前端 -> 大前端
7. 一套代码在各个平台运行(大前端):谷歌Flutter(Dart语言:和Java很像)可以运行在IOS、Android、PC端
8. 在Vue框架的基础性上 uni-app:一套编码 编到10个平台

主流:vue,react ,uni-app
	typescript:包含了JavaScript并对扩展了对变量类型的规定
	less:包含了css并做了扩展

MVVM与组件化开发

"""
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架(可以在部分使用它,也可以整个项目都使用它)。
"""
"""开发vue的编辑器"""
1. vscode:微软 轻量级编辑器,免费
2. vim:装插件,搞得花里胡哨,开发代码
3. Jetbrains:IDEA(java),Pycharm,Goland,phpStrom,webstorm   收费 吃内存(java开发)
4. AndroidStadio:免费,谷歌买了Jetbrains授权+ADT
	sun:java---》后来被甲骨文收购了--->oracle jdk   openjdk  毕昇jdk
        
Pycharm + 插件  开发vue 使用起来跟webstorm差不多
	把vue的源代码下载到本地或使用cdn
		开发环境版本,包含了有帮助的命令行警告
			https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js
		生产环境版本,优化了尺寸和速度
			https://cdn.jsdelivr.net/npm/vue@2

"""M-V-VM思想"""
MVVM(Model-view-viewmodel):前端框架 vue 
MTV :django
MVC :后端框架一般基于这种架构
MVP:移动端

"""组件化开发、单页面开发"""
组件化开发:页面中的一块区域有自己独立的html、css、js,可以直接将多个组装起来使用
单页面应用(SPA):只有一个html页面

Vue的快速使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>

</head>
<body>
<div id="d1">
    <h1>vue快速使用</h1>
    <p>名字:{{name}}</p>
    <p>年龄:{{age}}</p>
</div>

</body>
<script>
	// 引入vue后,会有Vue的构造函数,传入 配置项 对象
    // 页面中id为d1的div就被vue托管了,在div中就可以写vue的语法,指令
    var vm = new Vue({
        el: '#d1',
        data: {
            name: '小明',
            age: 18,
        }
    })
</script>
</html>
<!--现在数据和 DOM 已经被建立了关联,所有东西都是响应式的;可以通过浏览器的JavaScript控制台修改 d1.name 的值,页面上的数据也会同步更新-->

插值语法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>

</head>
<body>
<div id="d1">
    <h1>vue快速使用</h1>
    <p>名字:{{name}}</p>
    <p>年龄:{{age}}</p>
    <p>爱好:{{hobby}}</p>
    <p>第3个爱好:{{hobby[2]}}</p>
    <p>wife:{{wife}}</p>
    <p>wife的名字:{{wife['name']}}</p>
    <p>wife的年龄:{{wife.age}}</p>
    <p>标签:{{a}}</p>
    <h1>vue插值渲染简单表达式</h1>
    <p>{{10 > 9 ? '大于' : '小于'}}</p>
    <!--三目运算符————python中的三元表达式:'大于' if 10 > 9 else '小于'-->
    <p>{{age+1}}</p>
</div>

</body>
<script>
    var vm = new Vue({
        el: '#d1',
        data: {
            name: '小明',
            age: 18,
            hobby:['c','t','r','l'],
            wife:{name:'小红', age:22},
            a:'<a href="http://www.baidu.com">点我</a>'  // 不会转换为a标签
        }
    })
</script>
</html>

指令系统之文本指令

写在任意标签上,以v-xxx开头的,都是vue的指令

  • 文本指令
    • v-text:把变量渲染到标签中,如果之前有数据,会覆盖原有数据
    • v-html:如果是标签字符串,会把标签渲染到标签内
    • v-show:控制标签的显示与隐藏,通过标签的style的display控制的;style=“display:none;”
    • v-if:控制标签的显示与隐藏,通过dom操作删除或增加标签
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>

</head>
<body>
<div id="d1">
    <h1>文本指令v-text</h1>
    <p v-text="name"></p>
    <h1>文本指令v-html</h1>
    <span v-html="a"></span>
    <h1>v-show</h1>
    <img v-show="vs" src="https://img0.baidu.com/it/u=1727590956,2341015234&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=369"
         alt="">
    <h1>v-if</h1>
    <img v-if="vi" src="https://img1.baidu.com/it/u=2774948329,4157779396&fm=253&fmt=auto&app=138&f=JPG?w=1180&h=358"
         alt="">
</div>

</body>
<script>
    var vm = new Vue({
        el: '#d1',
        data: {
            name: '小明',
            a: '<a href="http://www.baidu.com">点我</a>',
            vs: true,
            vi: false
        }
    })
</script>
</html>

指令系统之事件指令

放在标签上:v-on:事件名='函数'
事件名可以写:click,dbclick, input标签:change,blur,input
补充:es6 对象写法
    var name = 'lqz'
    var age = 19
    var obj={name:name,age:age, handleClick:function(){}}
    var obj = {name, age, handleClick() {}}  # 简写
    
v-on:事件名='函数'  简写成  @事件名='函数'
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>

</head>
<body>
<div id="d1">
    <h1>事件指令</h1>
    <button v-on:click="handleShow">btn</button>  <!--可以简写为 @click="handleShow"-->
    <br>
    <img v-show="vs" src="https://img0.baidu.com/it/u=1727590956,2341015234&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=369"
         alt="">
    <hr>
    <h1>事件指令函数携带参数</h1>
    <button @click="handleClick1">函数需要参数但是没传,默认会把event事件传入第一个参数,多余的参数为undefined</button>
    <br>
    <button @click="handleClick2(123, 'abc', vs)">函数需要参数且传入了参数,参数需要是数字,字符串,布尔值,变量</button>
    <br>
    <button @click="handleClick3($event, 'abc')">函数需要两个参数,一个事件,一个字符串</button>


</div>

</body>
<script>
    var vm = new Vue({
        el: '#d1',
        data: {
            vs:true,
        },
        methods:{
            handleShow:function (){this.vs = !this.vs},  // this代表vm对象,this.vs=vm.vs
            // 上边代码在es6中可以简写为:handleShow(){this.vs = !this.vs}
            handleClick1(a,b,c){
                console.log(a)
                console.log(b)
                console.log(c)
            },
            handleClick2(a,b,c){
                console.log(a)
                console.log(b)
                console.log(c)
            },
            handleClick3(a,b){
                console.log(a)
                console.log(b)
            }
        }
    })
</script>
</html>

指令系统之属性指令

写在标签上的idclass、name等属性
v-bind:属性名='变量'
可以简写为  :属性名='变量'
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>

</head>
<body>
<div id="d1">
    <h1>属性指令</h1>
    <button @click="handleClick">查看图片</button>
    <br>
    <img :src="url" alt="">
    <hr>
    <button @click="handleChange">切换图片</button>
    <br>
    <img :src="url1" alt="">
    <hr>
    <img :src="url2" alt="">

</div>

</body>
<script>
    var vm = new Vue({
        el: '#d1',
        data: {
            url: 'https://img0.baidu.com/it/u=3864291308,939897230&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=550',
            url1: 'https://img0.baidu.com/it/u=3864291308,939897230&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=550',
            url2: 'https://img0.baidu.com/it/u=3864291308,939897230&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=550',
            urlList: ['https://img2.baidu.com/it/u=2572989638,2230022051&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281',
                'https://img2.baidu.com/it/u=3764088126,316976367&fm=253&fmt=auto&app=138&f=JPEG?w=1180&h=430',
                'https://img1.baidu.com/it/u=4250080464,1051503416&fm=253&fmt=auto&app=138&f=JPEG?w=1000&h=500',
                'https://img2.baidu.com/it/u=107149946,675401149&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=234',
                'https://img2.baidu.com/it/u=1811815088,3518163412&fm=253&fmt=auto&app=138&f=JPEG?w=1067&h=500']
        },
        methods: {
            handleClick() {
                this.url = 'https://img1.baidu.com/it/u=2774948329,4157779396&fm=253&fmt=auto&app=138&f=JPG?w=1180&h=358'
            },
            handleChange() {
                // floor:只取整数部分
                //Math.random() 生成0--1直接的数字,小数
                var i = Math.floor(Math.random() * this.urlList.length)  // 生成的小数乘以数组中的个数,再地板取整
                this.url1 = this.urlList[i]
            },
        },
        mounted() {
            // 页面加载完,开启一个定时器,每隔1s执行函数内容,函数里面在变化变量
            setInterval(() => {
                var i = Math.floor(Math.random() * this.urlList.length)
                this.url2 = this.urlList[i]
            }, 1000)

        }
    })
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值