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

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

  • 全局定义强制要求每个component组件中的命名不能重复
  • 字符串模板缺乏语法高亮,在html有多行的时候,需要用到丑陋的/
  • 不支持css意味着当html和javascript组件化时,css明显被遗漏
  • 没有构建步骤限制只能使用HTML和es5javascript,而不是用预处理器,如pug(formerly jade)和babel

文件扩展名为.vue的single-file components(单文件组件)为以上所有问题提供了解决办法,并且还可以使用webpack和browserify。

下面是一个名为hello.vue的简单实例:

<template>

<p>{{greetimg}} world!</p>

</template>

<script>

module.export = {

data:function(){

return {

greeting:'hello'

}

}

}

</script>

<style scoped>

p{

font-size:2em;

text-align:center;

}

</style>

现在我们获得

  • 完整语法高亮
  • CommonJs模块
  • 组件化的CSS

正如我们说过的,我们可以使用预处理器来构建简洁和功能更丰富的组件,比如pug,babel,和stylus.

<template lang = 'jade'>

div

p{{greeting}} world!

other-component

</template>

<script>

import OtherComponent from './OtherComponent.vue'

export default {

data(){

return {

greeting:'hello'

}

},

components:{

OtherComponent

}

}

</script>

<style lang = 'stylus' scoped>

p

font-size:2em

text-align:center

</style>

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

怎么看待关注点分离

一个重要的事情值得关注,关注点分离不等于文件类型分离。在现代ui开发中,我们已经发现相比于把代码库分离成三个大的层次并将其相互交织起来。

把他们划分为松散耦合的组件再将其组合起来更合理一点。在一个组件中,其模板,逻辑,样式是内部耦合的,并且把他们搭配在一起实际上使得组件内部更加内聚并且更可维护。

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

<!--my-component.vue-->

<template>

<div>This will be pre-compiled</div>

</template>

<script src="./component.js"></script>

<style scr="./component.css"></style>

起步

针对刚接触javascript模块开发系统的用户

有了.vue组件,我们就进入了高级javascript应用领域。如果你没有准备好的话,意味着还需要学会使用一些附加的工具:

  • node package manager
  • modern javascript with es2015/16

在你花一些时日了解这些资源之后,我们建议你参考webpack-simple。只要遵循指示,你就能很快地运行一个到.vue组件,es2015和热重载的vue项目

这个模块使用webpack,一个能将多个模块打包成最终应用的模块打包工具。

在webpack中,每个模块被打包到bundle之前都由一个响应的loader来转换。vue也提供vue-router插件来执行.vue单文件组件的转换。

vue 单文件组件的更多相关文章

  1. webpack入坑之旅(五)加载vue单文件组件

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  2. Vue单文件组件

    前面的话 本文将详细介绍Vue单文件组件 概述 在很多 Vue 项目中,使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页 ...

  3. webpack打包vue单文件组件

    一.vue单文件组件 ①文件扩展名为 .vue 的 就是single-file components(单文件组件) ②参考文档:单文件组件 二.webpack加载第三方包 ①项目中,如果需要用到一些第 ...

  4. ts-loader如何与vue单文件组件衔接

    .ts-loader是如何与vue单文件组件衔接作用的 https://github.com/microsoft/TypeScript-Vue-Starter https://www.npmjs.co ...

  5. 基于VSCode的vue单文件组件模板设置---一次设置,可爽终生

    第一步: 第二步: 第三步: 打开vue.json文件后,如果是初次设置,应该如下图所示,绿色注释部分不用管,注意那两个白色大括号 第四步:在大括号内全部粘贴如下代码,保存即可完成vue模板的设置 & ...

  6. vue 单文件组件最佳实践

    vue 单文件组件最佳实践 生命周期 template <template> <section> <h1>vue single file components te ...

  7. vue单文件组件的构建

    在很多Vue项目中,我们使用 Vue.component 来定义全局组件,这种方式在很多中小规模的项目中运作的很好. 但当在更复杂的项目中,就有了很大的弊端. 我们就可以用文件扩展名 .vue的单文件 ...

  8. Vue单文件组件基础模板

    背景 相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多: 1.代码集中,便于开发.管理和维护 2.可复用性高,直接将vue文件拷贝到新项目中 我暂时就想到这两点, ...

  9. 【原】vue单文件组件互相通讯

    在vue中,我们可以把一个页面各个部分单独封装起来,做成各种小组件,然后加载,这样的好处是代码维护起来比较容易,重复的代码多处调用! 在一个vue项目中,单文件组件以.vue形式文件命名 每个组件之间 ...

随机推荐

  1. [Java]在窗口界面上画出硬盘中图片文件

    利用类javax.swing.JPanel来在窗口界面上画图.图片文件通过javax.imageio.ImageIO类来获取. import java.awt.Graphics; import jav ...

  2. iOS:极光推送控制器跳转

    在前面已经做完了极光消息的推送,那么有消息了,如何跳转到需要的控制器呢?其实,主要还是在userInfo这个消息里面做判断来处理,具体如下: 下面这两个是远程推送时接收消息的方法,这是应用程序提供的方 ...

  3. iOS:时间格式化(标准时间转为时间戳、时间戳转为标准时间、时间戳转为日期)

    新建一个NSString(Time)分类,创建类方法实现时间的转换 .h文件 #import <Foundation/Foundation.h> @interface NSString ( ...

  4. stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法

    建立好项目后我们来安装stylus npm install stylus stylus-loader --save-dev 这样就安装上了stylus. 接下来就可以使用了,使用方式分两种.一种是在. ...

  5. [Python爬虫] 之九:Selenium +phantomjs抓取活动行中会议活动(单线程抓取)

    思路是这样的,给一系列关键字:互联网电视:智能电视:数字:影音:家庭娱乐:节目:视听:版权:数据等.在活动行网站搜索页(http://www.huodongxing.com/search?city=% ...

  6. Java笔记14:泛型初探

    一.泛型简介 泛型是从Java SE 1.5开始出现的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛 ...

  7. 标准C++ I/O库 迭代器让数据自由流动 V8

    IO库的组成 三种流 C++的IO库以流对象为实体.主要有三种流: (1)标准输入输出流 (2)文件输入输出流 (3)字符串输入输出流 流迭代器 输入输出流迭代器 instream_iterator& ...

  8. Java中常用的6种排序算法详细分解

    排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料. 废话不多说,下面逐一看看经典的排序算法: 1. 选择排序 选择排序的基本思想是遍历数组的过 ...

  9. Windows Vista如何让梦幻桌面支持更多格式

    Windows Vista 梦幻桌面(DreamScene)到底能不能支持除了Mpeg/mpg以外的格式? 很多人说梦幻桌面的视频格式有限,像AVI.RM.RMVB就不能做成梦幻桌面!也有很多朋友着急 ...

  10. MongoDB数据库设计中6条重要的经验法则

    Part 1 原文:6 Rules of Thumb for MongoDB Schema Design: Part 1 By William Zola, Lead Technical Support ...