vue.js的总体评价“简单却不失优雅,小巧而不乏大匠”

Vue.js简介
Vue.js的作者为Evan You(尤雨溪),任职于Google Creative Lab,虽然Vue是一个个人项目,但在发展前景上个人认为绝不输于Google的AngularJs,下面我会将Vue与Angular(Angular 1.0+版本)做一些简单的比较。
Vue的主要特点就和它官网(http://cn.vuejs.org/)所介绍的那样:
(1) 简洁 (2) 轻量 (3)快速 (4) 数据驱动 (5) 模块友好 (6) 组件化
下面看一段Angular的实现双向绑定的代码
// html
<body ng-app="myApp">
<div ng-controller="myCtrl">
<p>{{ note }}</p>
<input type="text" ng-model="note">
</div>
</body>
// js
var myModule = angular.module('myApp', []);
myModule.controller('myCtrl', ['$scopp', function($scope) {
$scope.note = '';
]);
然后再看一下Vue的代码
// html
<body>
<div id="app">
<p>{{ note }}</p>
<input type="text" v-model="note">
</div>
</body>
// js
var vm = new Vue({
el: '#app',
data: {
note: ''
}
})
相比较而言我个人认为Vue的代码编写风格更加简洁,并且通俗易懂。
不失优雅
Vue虽然是一个比较轻量级的框架,简单轻量的同时还非常的人性化,其提供的API也是非常的容易理解,同时也提供了一些很便捷的指令和属性。
例如:
(1) 绑定click事件
<a v-on:click="doSomething"></a>
可以简写为:
<a @click="doSomething"></a>
(2) 绑定动态属性
<a v-bind:href="url" rel="external nofollow" rel="external nofollow" ></a>
可以简写为:
<a :href="url" rel="external nofollow" rel="external nofollow" ></a>
(3) 便捷的修饰符
<!-- 阻止单击事件冒泡 --> <a @click.stop="doSomething"></a> <!-- 只在按下回车键的时候触发事件 --> <input @keyup.enter="submit">
(4) 实用的参数特性
<!-- debounce 设置一个最小的延时 --> <input v-model="note" debounce="500"> <!-- 在 "change" 而不是 "input" 事件中更新数据 --> <input v-model="msg" lazy>
怎么样,是不是感觉优雅极了。
小巧
说起小巧,那应该首先要关注下Vue的源码大小,Vue的生产版本(即min版)源码仅为72.9kb,官网称gzip压缩后只有25.11kb,相比Angular的144kb缩小了一半。
小巧的一种好处就是可以让用户更自由的选择相应的解决方案,在配合其他库方面它给了用户更大的空间。
如Vue的核心默认是不包含路由和 Ajax 功能,但是如果项目中需要路由和AJAX,可以直接使用Vue提供的官方库Vue-router及第三方插件vue-resource,同时你也可以使用其他你想要使用的库或插件,如jQuery的AJAX等。
是不是感觉非常的灵活。
不乏大匠
Vue虽然小巧,但是“麻雀虽小五脏俱全”,在构建大型应用的时候也是得心应手。
(1) 模块化
结合一些第三方模块构建工具,如CommonJS、RequireJS或者SeaJs,可以轻松实现代码的模块化。
但是在这里小编不推荐使用上述构建工具,直接使用ES6的模块化功能,再结合Webpack进行相应打包是目前最热门的方案。
在今后的文章中,我也会对其进行介绍,包括Webpack的配置。
(2) 组件化
Vue的组件化功能可谓是它的一大亮点,通过将页面上某一组件的html、CSS、js代码放入一个.vue的文件中进行管理可以大大提高代码的维护性。
例如:
// App.vue
<template>
<div class="box" v-text="note"></div>
</template>
<script>
export default {
data () {
return {
note: '这是一个组件的html模板!'
}
}
}
</script>
<style scoped>
.box {
color: #000;
}
</style>
我们还可以在组件里写一些预处理语言:
// App.vue
<template lang='jade'>
div(class="box" v-text="text")
</template>
<script>
export default {
data () {
return {
note: '这是一个组件的html模板!'
}
}
}
</script>
<style lang="stylus">
.box color: #000
</style>
当然这样写我们是需要通过webpack来进行打包的,推荐使用Webpack + vue-loader的方式,同时使用ES6语法,需要安装babel来进行转换。因为文章为浅谈Vue.js,所以这里不做深入介绍。
(3) 路由
和Angular一样,Vue也具有它的路由功能。通过路由功能,我们可以实现各个组件的按需加载,轻松构建单页应用。下面是一个简单的路由配置文件:
// router.js
'use strict'
export default function(router) {
router.map({
'/': {
component: function (resolve) {
require(['./components/Foo.vue'], resolve)
}
},
'/foo': {
component: function (resolve) {
require(['./components/Foo.vue'], resolve)
}
},
'/bar': {
component: function (resolve) {
require(['./components/Bar.vue'], resolve)
}
}
})
}
如需查看具体的路由配置及使用,移步官方提供的文档:http://vuejs.github.io/vue-router/zh-cn/index.html
总结
个人认为前端的一些技术都是融会贯通的,学习一门语言或者框架本身并不是为了学习它的技术,最重要的是学习它的思维,只有思维层面得到了延伸,学习其他技术的时候会发现得心应手。Vue带给我们的是前端一种解决问题的新的思维。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# vue.js
# Vue.js实现简单动态数据处理
# vue.js实现请求数据的方法示例
# Vue.js学习之过滤器详解
# Vue.js学习之计算属性
# 使用node+vue.js实现SPA应用
# Vue.js每天必学之组件与组件间的通信
# Vue.js每天必学之Class与样式绑定
# Vue.js开发环境搭建
# 强大Vue.js组件浅析
# Vue.js每天必学之过滤器与自定义过滤器
# 是一个
# 绑定
# 推荐使用
# 这是一个
# 得心应手
# 不失
# 官网
# 的是
# 都是
# 在这里
# 路由功能
# 还可以
# 你也
# 更大
# 但在
# 回车键
# 融会贯通
# 一大
# 对其
# 给了
相关文章:
建站主机类型有哪些?如何正确选型
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何解决VPS建站LNMP环境配置常见问题?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
高防服务器租用指南:配置选择与快速部署攻略
网站制作软件免费下载安装,有哪些免费下载的软件网站?
安徽网站建设与外贸建站服务专业定制方案
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何访问已购建站主机并解决登录问题?
浅谈Javascript中的Label语句
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
深圳网站制作平台,深圳市做网站好的公司有哪些?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
建站之星后台密码遗忘?如何快速找回?
如何高效搭建专业期货交易平台网站?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
建站之星后台管理如何实现高效配置?
广州商城建站系统开发成本与周期如何控制?
电商网站制作价格怎么算,网上拍卖流程以及规则?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
免费网站制作appp,免费制作app哪个平台好?
音响网站制作视频教程,隆霸音响官方网站?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
如何在云服务器上快速搭建个人网站?
如何快速登录WAP自助建站平台?
如何用美橙互联一键搭建多站合一网站?
大型企业网站制作流程,做网站需要注册公司吗?
如何用低价快速搭建高质量网站?
实例解析angularjs的filter过滤器
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
如何通过远程VPS快速搭建个人网站?
高端建站如何打造兼具美学与转化的品牌官网?
如何选择域名并搭建高效网站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在IIS7中新建站点?详细步骤解析
如何自定义建站之星模板颜色并下载新样式?
,有什么在线背英语单词效率比较高的网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
黑客入侵网站服务器的常见手法有哪些?
开源网站制作软件,开源网站什么意思?
*请认真填写需求信息,我们会在24小时内与您取得联系。