摘要:如果我们作为一个后端开发者想掌握一个前端框架,是一个好选择,因为它足够的易学。是语言的下一代标准。数据方法生命周期钩子函数其他有些内容比较重要,留到后面讲定义数据定义数据定义了数据,那么就可以在管理的区域中使用的获取数据的语法来获取数据。
目录
首发日期:2019-01-19
有时候,一个后端开发者“不得不”自己去搭建前端界面。如果有的选,当然选一个比较好学的前端“框架”咯(框架很多时候封装了普通的html元素,使得能更加方便地使用)。
如果你做的项目的界面是一个偏后台管理的而且要求并不高的界面的时候,你可以考虑easy UI这个较为知名的前端框架。
如果你想要界面变得好看一些(easy UI的界面太简单了,缺乏较强的定制性),那么你可以考虑vue这个框架。vue这个框架本身并没有多少好看的样式,但学习了这个框架就可以学会怎么使用它的第三方组件库了(这些第三库看起来都还行)。
【Vue自己有官方教程,为什么写这个呢?主要是感觉自己的前端知识不太稳固,看教程的时候有点迷糊。推己及人,所以有了这个博文】
例如下面的代码可以快速构建一个表格:
Vue不支持IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。【所以如果项目兼容性要求较高,那么不适合使用Vue】
【如果你了解ORM模型,你应该很能体会到MVVM模型的好处,有了VM层帮我们管理了数据,我们就只需要处理好Model层了,这就好像ORM中定义了数据映射关系,然后我们只需要操作实体类。】
【要想使用Vue,必须先导入/安装,就像使用jquery必须导入jquery.js一样;而vue可以使用webpack来构建,所以也可以使用webpack安装Vue,但如果你是初学者,先掌握静态导入的方法吧】
Vue的本质也是javascript,所以它也可以通过导入js文件来使用功能(js可以用cdn的,也可以手动导入本地的vue.js)。
这种也是最简单的使用vue的方式,所以我们可以这种方式来作为入门学习,但正式使用时都会使用webpack来构建vue项目。
在html文件中使用如下代码:【这里先讲导入,后面讲使用】
npm install vue
npm install --global vue-cli
vue init webpack 项目名
在入门部分将使用js导入方式的例子,在涉及构建多个组件的时候(页面需要多个组件时,如果把多个组件定义在一个文件中会显得赘余。这好比把多个类放到同一个文件中定义。)将使用npm安装方式演示。
{{ message }}
el: #app
代表把id为app的区域交给vue管理)。那么对应元素区域里面就可以使用vue的语法了。导入了js之后,vue把管理的区域里面的vue语法都解析了,所以 {{ message }}就取出了vue实例中名叫message的数据。
现在我们了解了一些vue的渲染页面的知识,下面我们来了解更多的渲染技巧。
每个 Vue 应用都是通过使用 Vue 函数创建一个新的 Vue 实例开始的。
实例中的定义的内容就是我们可以使用在Vue应用中的内容。
下面讲实例中可以定义哪些内容。
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
//
// {{ message }}
//
【要结合图来看(懂英文是多么地好)】
【如果你对生命周期钩子感兴趣,可以自查,这里不多讲,后面之后根据开发需求来讲一些】
测试代码:
{{ msg }}
在上面已经演示了使用Mustache表达式(可以俗称插值表达式){{ }}
来获取实例中的数据了,其实还可以使用其他方式来输出数据
v-text可以向元素中输出文本内容
v-html可以向元素中输出html内容:
Mustache 语法不能作用在 HTML 特性上,也就是说在html元素中没有 id="{{ id }}" 这样的操作 ,这种时候需要使用vue语法:v-bind:id="id"
{{ }}里面可以使用javascript表达式,例如:{{ message.split().reverse().join() }}
v-bind用于给元素的属性绑定值
悬浮几秒,查看标题
...
...
v-bind的参数可以是一个对象,是一个对象时,会把对象的所有属性都绑定到元素上。具体如下图。
现在你看到我了
男
女
unknown
使用v-else 的元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
Hello!
-
{{ todo.text }}
代码效果:
在 v-for 块中,我们拥有对父作用域属性的完全访问权限。[这是来自官网的话,我觉得有点多余,感觉子元素获取父元素的数据是很正常的操作。]
v-for 还支持一个可选的第二个参数为当前项的索引,它会从0开始。用来标识当前迭代的是第几个元素。
可以用 of 替代 in 作为分隔符,因为它是最接近 JavaScript 迭代器的语法:
也可以用 v-for 迭代一个对象的所有属性,第一个参数是value,第二个可选参数是key,第三个可选参数为索引
第二个参数为key
{{ key }}: {{ value }}
第三个参数为索引:
{{ index }}. {{ key }}: {{ value }}
使用三个参数时的代码效果:
在遍历对象时,是按 Object.keys() 的结果遍历,但是不能保证它的结果在不同的 JavaScript 引擎下是一致的。
v-for 也可以取一个整数作为源数据(v-for="i in 10"
)。在这种情况下,它将重复多次模板。
当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。【这个问题官网提了一下,这里我也提一下,注意使用】
原消息: "{{ message }}"
逆反后: "{{ reversedMessage }}"
下面的代码也可以达到上面的效果
(也是即时的,有人不懂为什么这个函数会重复调用,而非页面初始化时调用一次;因为当页面中数据更新的时候,涉及页面数据的函数也会重新执行。)
原消息: "{{ message }}"
逆反后: "{{ reversedMessage() }}"
{{ Date.now() }}"
函数也可以达到同样的效果,但是函数没有缓存效果,而计算属性有缓存。没有缓存时,函数每一次都要重新计算来得到结果,如果这是一个比较消耗资源的计算的话,那么会减慢页面的速度;而计算属性有缓存,只要内部的计算元素没有发生变化,那么会使用缓存来作为计算结果。
上面的计算属性达到效果需要留意计算元素的变化,你可能会想到一些类似的监听数据变化的方法,而vue中也是有这样的东西的。
下面的代码监听了firstName和lastName,当这两个数据变化的时候会重新给fullName赋值。
{{ fullName }}
使用计算属性达到上面效果(显然省了不少代码):
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
{{ fullName }}
虽然计算属性已经提供了很多的好处,但有些时候计算属性也不能满足我们的要求。比如我们希望监听某个属性的变化来得到另一个属性的结果,但是不希望它马上得到结果,那么这时候计算属性就达不到需求了。而监听器里面可以写一些其他代码(比如一些延迟去得到结果的代码)。
当需要在数据变化时执行异步或开销较大的操作时,watch是最有用的。
为什么有时候不希望计算新结果那么快呢?这就好比有人在百度搜索中输入一个个字,如果每个字都要进行检索的话,那么就对百度来说开销就很大了,如果稍微等等,确认用户输入完毕再去计算,那么就节省了很多资源了,下面的来自官网的例子正是一种这样的考虑了资源开销的例子。
Ask a yes/no question:
{{ answer }}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/1287.html
摘要:比如把示例中的数据在页面中用显示出来与输入框的数据绑定表单输入框有这个值,在表单输入框里使用会把表单输入框与实例的数据进行智能绑定为什么说智能,因为有些输入框的数据是属性,有些不是。目录上篇内容回顾:数据绑定表单输入框绑定单行文本输入框多行文本输入框复选框checkbox单选框radio选择框select数据绑定的修饰符.lazy.number.trim样式绑定class绑定对象语法:数组语...
摘要:文件是当前项目的首页文件。以后可能还会有全局注册组件等操作。在上面使用了这是一个预定义的路径,代表目录。而为了使用好这个实例,不要修改的,不然装载完内容后,对应的管理区域会指向不明,而导致渲染失败。目录 上节内容回顾: npm 介绍 安装 常用命令: 补充: ...
摘要:使用组件全局定义组件,第一个参数是组件名,的值是组件的内容这是个待办项实例化是必须的,要把使用组件的区域交给管理局部注册组件局部注册组件全局注册往往是不够理想的。目录 上节内容回顾 组件 什么是组件 组件注册 全局注册组件 局部注册组件 ...
阅读 713·2023-04-25 19:43
阅读 3907·2021-11-30 14:52
阅读 3784·2021-11-30 14:52
阅读 3852·2021-11-29 11:00
阅读 3783·2021-11-29 11:00
阅读 3869·2021-11-29 11:00
阅读 3557·2021-11-29 11:00
阅读 6104·2021-11-29 11:00