基于Vue单文件组件详解


Posted in Javascript onSeptember 15, 2017

本文将详细介绍Vue单文件组件

概述

在很多 Vue 项目中,使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素。

这种方式在很多中小规模的项目中运作的很好,在这些项目里 JavaScript 只被用来加强特定的视图。但当在更复杂的项目中,或者前端完全由 JavaScript 驱动的时候,下面这些缺点将变得非常明显:

1、全局定义 (Global definitions) 强制要求每个 component 中的命名不得重复

2、字符串模板 (String templates) 缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \

3、不支持 CSS (No CSS support) 意味着当 HTML 和 JavaScript 组件化时,CSS 明显被遗漏

4、没有构建步骤 (No build step) 限制只能使用 HTML 和 ES5 JavaScript, 而不能使用预处理器,如 Pug (formerly Jade) 和 Babel

文件扩展名为 .vue 的 single-file components(单文件组件) 为以上所有问题提供了解决方法,并且还可以使用 Webpack 或 Browserify 等构建工具

下面是一个文件名为 Hello.vue 的简单实例:

基于Vue单文件组件详解

 通过单文件组合,现在我们获得:

1、完整语法高亮
2、CommonJS 模块
3、组件化的 CSS

还可以使用预处理器来构建简洁和功能更丰富的组件,比如 Pug,Babel (with ES2015 modules),和 Stylus。

基于Vue单文件组件详解

这些特定的语言只是例子,可以只是简单地使用 Babel,TypeScript,SCSS,PostCSS - 或者其他任何能够帮助提高生产力的预处理器。如果搭配vue-loader使用Webpack,它也是把CSS Modules当作第一公民对待

【关注点分离】

一个重要的事情值得注意,关注点分离不等于文件类型分离。在现代 UI 开发中,已经发现相比于把代码库分离成三个大的层次并将其相互交织起来,把它们划分为松散耦合的组件再将其组合起来更合理一些。在一个组件里,其模板、逻辑和样式是内部耦合的,并且把它们搭配在一起实际上使得组件更加内聚且更可维护。

即便不喜欢单文件组件,仍然可以把 JavaScript、CSS 分离成独立的文件然后做到热重载和预编译

<!-- my-component.vue -->
<template>
 <div>This will be pre-compiled</div>
</template>
<script src="./my-component.js"></script>
<style src="./my-component.css"></style>

起步

有了 .vue 组件,就进入了高级 JavaScript 应用领域

最好参考 webpack-simple。只要遵循指示,就能很快地运行一个用到 .vue 组件,ES2015 和 热重载 (hot-reloading) 的 Vue 项目。这个模板使用 Webpack,一个能将多个模块打包成最终应用的模块打包工具

在 Webpack 中,每个模块被打包到 bundle 之前都由一个相应的 “loader” 来转换,Vue 也提供 vue-loader 插件来执行 .vue 单文件组件 的转换。这个 webpack-simple 模板已经为你准备好了所有的东西

无论更钟情Webpack或是Browserify,简单的或更复杂的项目都可参考一些文档模板。浏览github.com/vuejs-templates,找到需要的部分,然后参考 README 中的说明,使用 vue-cli 工具生成新的项目

模板中使用 Webpack,一个模块加载器加载多个模块然后构建成最终应用

以上这篇基于Vue单文件组件详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 #Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 #Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 #Javascript
VsCode插件整理(小结)
Sep 14 #Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
Sep 14 #Javascript
vue 计时器组件的实现代码
Sep 14 #Javascript
详解tween.js的使用教程
Sep 14 #Javascript
You might like
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
javascript multibox 全选
2009/03/22 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python实现的RSS阅读器实例
2015/07/25 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
python实现字符串和字典的转换
2018/09/29 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
大学新生军训自我鉴定
2014/09/18 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
Java 多态分析
2022/04/26 Java/Android