浅谈Vue.js
发布时间 - 2026-01-10 23:22:47 点击率:次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每天必学之过滤器与自定义过滤器
# 是一个
# 绑定
# 推荐使用
# 这是一个
# 得心应手
# 不失
# 官网
# 的是
# 都是
# 在这里
# 路由功能
# 还可以
# 你也
# 更大
# 但在
# 回车键
# 融会贯通
# 一大
# 对其
# 给了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现用户注册和登录?(Auth脚手架指南)
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Python并发异常传播_错误处理解析【教程】
如何快速启动建站代理加盟业务?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
如何在香港免费服务器上快速搭建网站?
Swift中switch语句区间和元组模式匹配
Laravel怎么使用Intervention Image库处理图片上传和缩放
C语言设计一个闪闪的圣诞树
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
html如何与html链接_实现多个HTML页面互相链接【互相】
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何在阿里云高效完成企业建站全流程?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何快速查询网站的真实建站时间?
三星、SK海力士获美批准:可向中国出口芯片制造设备
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
如何在不使用负向后查找的情况下匹配特定条件前的换行符
如何快速查询域名建站关键信息?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel Session怎么存储_Laravel Session驱动配置详解
java ZXing生成二维码及条码实例分享
制作企业网站建设方案,怎样建设一个公司网站?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Laravel如何保护应用免受CSRF攻击?(原理和示例)
图册素材网站设计制作软件,图册的导出方式有几种?
在centOS 7安装mysql 5.7的详细教程
如何在腾讯云服务器快速搭建个人网站?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
如何在阿里云ECS服务器部署织梦CMS网站?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Laravel如何使用Vite进行前端资源打包?(配置示例)
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何记录自定义日志?(Log频道配置)
Laravel如何生成URL和重定向?(路由助手函数)
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
如何获取PHP WAP自助建站系统源码?
如何用VPS主机快速搭建个人网站?
如何用搬瓦工VPS快速搭建个人网站?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
微信小程序 input输入框控件详解及实例(多种示例)
如何在Windows 2008云服务器安全搭建网站?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结

