基于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 相关文章推荐
JS 显示当前日期与时间的代码
Mar 24 Javascript
JavaScript 学习笔记二 字符串拼接
Mar 28 Javascript
如何判断鼠标是否在DIV的区域内
Nov 13 Javascript
jQuery基于图层模仿五星星评价功能的方法
May 07 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
Node.js中使用jQuery的做法
Aug 17 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
Jan 23 Javascript
jQuery快速实现商品数量加减的方法
Feb 06 Javascript
node.js中express-session配置项详解
May 31 Javascript
js 图片转base64的方式(两种)
Apr 24 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 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输出金字塔的2种实现方法
2014/12/16 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
twig模板常用语句实例小结
2016/02/04 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
用Python编写web API的教程
2015/04/30 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
Python中dict和set的用法讲解
2019/03/28 Python
Python中请不要再用re.compile了
2019/06/30 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
python实现与redis交互操作详解
2020/04/21 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python函数调用追踪实现代码
2020/11/27 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
领导的自我鉴定
2013/12/28 职场文书
学校消防演习方案
2014/02/19 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
银行求职信怎么写
2014/05/26 职场文书
离职告别感言
2015/08/04 职场文书
深入理解go slice结构
2021/09/15 Golang
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js