1、Vue.js是什么?
Vue是一个构建用户界面(UI)的[渐进式]JavaScript框架
- 渐进式:
渐进式的意思就是 “主张最少”。每个框架都会有自己的一套编码方式,从而对使用者有一定的要求,这些要求就是主张/约束,主张有强有弱,它的强势程度会影响业务开发中的使用方式。
通俗理解渐进式的意思就是:你可以只用我的一部分,而不是用了我这一部分就必须用我的所有部分。
2、Vue优点
-
轻量级的框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb。Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统。
-
简单易学:国人开发,中文文档,不存在语言障碍,易于理解和学习。
-
双向数据绑定:同时也是vue.js最大的优点,通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象,有更多的时间去思考业务逻辑。
-
组件化:在前端应用里我们是否也可以像面向对象编程一样把模块封装呢?这就引入了组件化开发的思想。Vue.js通过组件,把一个单页应用中的各种模块拆分到一个一个单独的组件(component)中,我们只要先在父级应用中写好各种组件标签(占坑),并且在组件标签中写好要传入组件的参数(就像给函数传入参数一样,这个参数叫做组件的属性),然后再分别写好各种组件的实现(填坑),然后整个应用就算做完了。
-
视图&数据&结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作。
-
运行速度快
3、库和框架的区别
3.1 库(Library)
3.1 库(Library),本质上是一些函数的集合。每次调用函数,实现一个特定的功能,接着把控制权交给使用者
代表:jQuery
jQuery这个库的核心:DOM操作,即:封装DOM操作,简化DOM操作
JavaScript:document.getElementById()
jQuery: $('').val()
3.2 框架(Framework)
3.2 框架(Framework),是一套完整的解决方案,使用框架的时候,需要把你的代码放到框架合适的地方,
框架会在合适的时机调用你的代码
代表:自定义mvc、SpringMVC、vue等。
框架规定了自己的编程方式,是一套完整的解决方案
使用框架的时候,由框架控制一切,我们只需要按照规则写代码
框架的侵入性很高(从头到尾)
侵入式代码:
- 指的是引入或继承了别的包或框架;
- 从字面意思理解,就是你的代码里已经嵌入了别的代码,这些代码可能是你引入过的框架,也可能是你通过接口继承得来的(比如:java中的继承),这样你就可以拥有侵入代码的一些功能。所以我们就称这段代码是侵入式代码。
- 比如:自定义MVC框架就是侵入式框架。我们在在使用自定义MVC框架的时候就要继承自定义MVC框架所提供中央调度器(DispatchServlet),这时自定义MVC框架的代码就侵入到我们的代码里面了,所以自定义MVC框架的代码就是侵入式的。
- 侵入式代码的优点:侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
- 侵入式代码的缺点:侵入式让用户代码产生对框架的依赖,框架外代码就不能使用了,不利于代码复用,依赖太多重构代码太痛苦了。一句话概括就是,你的代码需要依赖框架的代码,如果把框架拿掉或者换一个框架,就需要重新修改代码(因为使用侵入式的框架,一般需要继承或者实现框架的某一个类或者接口)。
非侵入式代码:
- 非侵入式与侵入式正好相反,用户的代码不需要引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。
- 非侵入式代码优点:代码可复用,方便移植。体现了代码的设计原则:高内聚,低耦合。
- 非侵入式代码缺点:用户代码与框架代码交互的方式可能就比较复杂。
- Vue框架就是非侵入式框架。
4、第一个Vue实例:“Hello Vue!”
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<h1>时间戳:{{dt}}</h1>
<h1 v-once>{{msg}}</h1>
<input type="text" v-model="msg" />
<!-- <button v-on:click="me">点击事件</button> -->
<!-- <button v-on:mouseenter="me">进入事件</button> -->
<button @click="me">点击事件</button>
<button @mouseenter="me">进入事件</button>
<hr/>
<br/>
姓氏:<input type="text" v-model="xs"/><br/>
名字:<input type="text" v-model="mz"/><br/>
<h2>姓名:{{xs}}{{mz}}</h2>
</div>
</body>
<script type="text/javascript">
// var data = {
// dt:new Date().getTime(),
// msg:'Hello Vue-------',
// };
// 创建Vue实例
var vm = new Vue({
el:'#app', // 挂载点/管理
// 方式一:
// data:data
// 方式二:
// data:{ // JSON格式
// dt:new Date().getTime(),
// msg:'Hello Vue-------',
// }
// 方式三:
// data:function(){
// return{
// dt:new Date().getTime(),
// msg:'Hello Vue-------',
// }
// },
// 方式四:
data(){
return{
dt:new Date().getTime(),
msg:'Hello Vue-------',
xs:'',
mz:'',
}
},
methods:{ // 定义方法,所有方法放在fail属性里面
me:function(){
console.log("调用了输出方法!");
}
}
});
</script>
</html>