本篇文章给大家谈谈vue.js,以及vue.js设计与实现 pdf对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享vue.js的知识,其中也会对vue.js设计与实现 pdf进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
vue.js是什么
Vue.js:(读音 /vjuː/, 类似于 view)是一个构建数据驱动
vue.js的 web 界面
vue.js的渐进式框架。Vue.js
vue.js的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。
ue.js 是一个用于创建 web 交互界面的。其特点是
1.简洁 HTML 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单。
2.数据驱动 自动追踪依赖的模板表达式和计算属性。
3.组件化 用解耦、可复用的组件来构造界面。
4.轻量 ~24kb min+gzip,无依赖。
5.快速 精确有效的异步批量 DOM 更新。
6.模块友好 通过 NPM 或 Bower 安装,无缝融入
vue.js你的工作流。
Vue.js 入门
BootCDN(国内)
unpkg
cdnjs
Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。
进入项目,安装并运行vue.js:
打开localhost:8080
vue实例:
选项API:
https://cn.vuejs.org/v2/api/#components
组件化应用构建
声明式渲染
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:
指令邦定
指令
指令 (Directives) 是带有 v- 前缀的特殊属性
v-bind:
v-on:
v-if
v-for:
v-model:
数据,方法,计算属性,侦听器
生命周期
组件
全局注册
局部注册
组件组合
组件 A 在它的模板中使用vue.js了组件 B。它们之间必然需要相互通信:父组件可能要给子组件下发数据,子组件则可能要将它内部发生的事情告知父组件。
prop 向下传递,事件向上传递
子组件要显式地用 props 选项 声明它预期的数据:
动态邦定prop
单项数据流
Prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意间修改了父组件的状态,来避免应用的数据流变得难以理解。
注意在 JavaScript 中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态。
自定义事件
每个 Vue 实例都实现了 事件接口 ,即:
父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。
这里有一个如何使用载荷 (payload) 数据的示例:
官方支持的 vue-router 库
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM。然而,也可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。
认识Vue.js+Vue.js的优缺点+和与其他前端框架的区别
Vue.js与其他框架的区别
vue.js:
1.与AngularJS的区别
相同点:
都支持指令:内置指令和自定义指令。
都支持过滤器:内置过滤器和自定义过滤器。
都支持双向数据绑定。
都不支持低端浏览器。
不同点:
1.AngularJS的学习成本高
vue.js,比如增加
vue.js了Dependency Injection特性,而Vue.js本身提供的API都比较简单、直观。
2.在性能上,AngularJS依赖对数据做脏检查,所以Watcher越多越慢。
Vue.js使用基于依赖追踪的观察并且使用异步队列更新。所有的数据都是独立触发的。
对于庞大的应用来说,这个优化差异还是比较明显的。
2.与React的区别
相同点:
React采用特殊的JSX语法,Vue.js在组件开发中也推崇编写.vue特殊文件格式,对文件内容都有一些约定,两者都需要编译后使用。
中心思想相同:一切都是组件,组件实例之间可以嵌套。
都提供合理的钩子函数,可以让开发者定制化地去处理需求。
都不内置列数AJAX,Route等功能到核心包,而是以插件的方式加载。
在组件开发中都支持mixins的特性。
不同点:
React依赖Virtual DOM,而Vue.js使用的是DOM模板。React采用的Virtual DOM会对渲染出来的结果做脏检查。
Vue.js在模板中提供
vue.js了指令,过滤器等,可以非常方便,快捷地操作DOM。
vue什么时候火起来的
vue是2016年火起来的。2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点,授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人尤雨溪。
vue的优点
1、轻量级框架
只关注视图层,是一个构建数据的视图集合,大小只有几十kb,Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统。
2、简单易学
国人开发,中文文档,不存在语言障碍,易于理解和学习。
3、双向数据绑定
也就是所谓的响应式数据绑定。这里的响应式不是媒体查询中的响应式布局,而是指vue.js会自动对页面中某些数据的变化做出同步的响应。
也就是说,vue.js会自动响应数据的变化情况,并且根据用户在代码中预先写好的绑定关系,对所有绑定在一起的数据和视图内容都进行修改,
而这种绑定关系,就是以input 标签的vmodel属性来声明的,因此你在别的地方可能也会看到有人粗略地称vue.js为声明式渲染的模版引擎。
这也就是vue.js最大的优点,通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象,有更多的时间去思考业务逻辑。
4、组件化
在前端应用,我们是否也可以像编程一样把模块封装呢?这就引入了组件化开发的思想,Vue.js通过组件,把一个单页应用中的各种模块拆分到一个一个单独的组件中,我们只要先在父级应用中写好各种组件标签。
并且在组件标签中写好要传入组件的参数,就像给函数传入参数一样,这个参数叫作组件的属性,然后再分别写好各种组件的实现填坑,然后整个应用就算做完了。
5、视图,数据,结构分离
使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作。
6、虚拟DOM
现在的网速越来越快了,很多人家里都是几十甚至上百M的光纤,手机也是4G起步了,按道理一个网页才几百K,而且浏览器本身还会缓存很多资源文件,那么几十M的光纤为什么打开一个之前已经打开过,已经有缓存的页面还是感觉很慢呢。
这就是因为浏览器本身处理DOM也是有性能瓶颈的,尤其是在传统开发中,用JQuery或者原生的JavaScriptDOM操作函数对DOM进行频繁操作的时候,浏览器要不停的渲染新的DOM树,导致页面看起来非常卡顿。
而VirtualDOM则是虚拟DOM的英文,简单来说,他就是一种可以预先通过JavaScript进行各种计算,把最终的DOM操作计算出来并优化,由于这个DOM操作属于预处理操作,并没有真实的操作DOM,所以叫作虚拟DOM。
最后在计算完毕才真正将DOM操作提交,将DOM操作变化反映到DOM树上。
7、运行速度更快
像比较与react而言,同样都是操作虚拟dom,就性能而言,vue存在很大的优势。
Vue.js的data是要一个对象还是一个function
Vue 实例
vue.js的数据对象。Vue.js 会递归地将它全部属性转为 getter/setter
vue.js,从而让它能响应数据变化。这个对象必须是普通对象:原生对象
vue.js,getter/setter 及原型属性会被忽略。不推荐观察复杂对象。
在实例创建之后,可以用 vm.$data 访问原始数据对象。Vue 实例也代理
vue.js了数据对象所有的属性。
在定义组件时,同一定义将创建多个实例,此时 data 必须是一个函数,返回原始数据对象。如果 data 仍然是一个普通对象,则所有的实例将指向同一个对象!换成函数后,每当创建一个实例时,会调用这个函数,返回一个新的原始数据对象的副本。
以上内容均来自官网,说得很清楚啊。
文件写成.vue的文件就是组件的写法,因此这时data必须是一个函数,而你贴的var vm = new Vue({})是直接跑在浏览器环境下的用法,这时data可以是一个普通对象,也可以写成一个返回普通对象的函数,不过没必要。
如何在 Vue.js 中使用第三方库
在项目中添加第三方库的最简单方式是讲其作为一个全局变量, 挂载到 window 对象上:
entry.js
window._ = require('lodash');
MyComponent.vue
export default {
created() {
console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Uh oh..');
}
}
这种方式不适合于服务端渲染, 因为服务端没有 window 对象, 是 undefined, 当试图去访问属性时会报错.
在每个文件中引入
另一个简单的方式是在每一个需要该库的文件中导入:
MyComponent.vue
import _ from 'lodash';
export default {
created() {
console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..');
}
}
这种方式是允许的, 但是比较繁琐, 并且带来的问题是:
vue.js你必须记住在哪些文件引用
vue.js了该库, 如果项目不再依赖这个库时, 得去找到每一个引用该库的文件并删除该库的引用. 如果构建工具没设置正确, 可能导致该库的多份拷贝被引用.
优雅的方式
在 Vuejs 项目中使用 JavaScript 库的一个优雅方式是讲其代理到 Vue 的原型对象上去. 按照这种方式, 我们引入 Moment 库:
entry.js
import moment from 'moment';
Object.defineProperty(Vue.prototype, '$moment', { value: moment });
由于所有的组件都会从 Vue 的原型对象上继承它们的方法, 因此在所有组件/实例中都可以通过 this.$moment: 的方式访问 Moment 而不需要定义全局变量或者手动的引入.
MyNewComponent.vue
export default {
created() {
console.log('The time is ' . this.$moment().format("HH:mm"));
}
}
接下来就了解下这种方式的工作原理.
Object.defineProperty
一般而言, 可以按照下面的方式来给对象设置属性:
Vue.prototype.$moment = moment;
可以这样做, 但是 Object.defineProperty 允许我们通过一个 descriptor 来定义属性. Descriptor 运行我们去设置对象属性的一些底层(low-level)细节, 如是否允许属性可写? 是否允许属性在 for 循环中被遍历.
通常, 我们不会为此感到困扰, 因为大部分时候, 对于属性赋值, 我们不需要考虑这样的细节. 但这有一个明显的优点: 通过 descriptor 创建的属性默认是只读的.
这就意味着, 一些处于迷糊状态的(coffee-deprived)开发者不能在组件内去做一些很愚蠢的事情, 就像这样:
this.$http = 'Assign some random thing to the instance method';
this.$http.get('/'); // TypeError: this.$http.get is not a function
此外, 试图给只读实例的方法重新赋值会得到 TypeError: Cannot assign to read only property 的错误.
$
你可能会注意到, 代理第三库的属性会有一个 $ 前缀, 也可能看到其它类似 $refs, $on, $mount 的属性和方式, 它们也有这个前缀.
这个不是强制要求, 给属性添加 $ 前缀是提供那些处于迷糊状态(coffee-deprived)的开发者这是一个公开的 API, 和 Vuejs 的一些内部属性和方法区分开来.
this
你还可能注意到, 在组件内是通过 this.libraryName 的方式来使用第三方库的, 当你知道它是一个实例方法时就不会感到意外了. 但与全局变量不同, 通过 this 来使用第三方库时, 必须确保 this 处于正确的作用域. 在回调方法中 this 的作用域会有不同, 但箭头式回调风格能保证 this 的作用域是正确的:
this.$http.get('/').then(res = {
if (res.status !== 200) {
this.$http.get('/') // etc
// Only works in a fat arrow callback.
}
});
插件
如果你想在多个项目中使用同一个库, 或者想将其分享给其
vue.js他人, 可以将其写成一个插件:
import MyLibraryPlugin from 'my-library-plugin';
Vue.use(MyLibraryPlugin);
在应用的入口引入插件之后, 就可以在任何一个组件内像使用 Vue Router, Vuex 一样使用你定义的库了.
写一个插件
首先, 创建一个文件用于编写自己的插件. 在示例中, 我会将 Axios 作为插件添加到项目中, 因而我给文件起名为 axios.js. 其次, 插件要对外暴露一个 install 方法, 该方法的第一个参数是 Vue 的构造函数:
axios.js
import axios from 'axios';
export default {
install: function(Vue,) {
Object.defineProperty(Vue.prototype, '$http', { value: axios });
}
}
最后, 利用 Vue 的实例方法 use 将插件添加到项目中:
entry.js
import AxiosPlugin from './axios.js';
Vue.use(AxiosPlugin);
new Vue({
created() {
console.log(this.$http ? 'Axios works!' : 'Uh oh..');
}
})
关于vue.js和vue.js设计与实现 pdf的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
vue.js的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vue.js设计与实现 pdf、vue.js的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~