在很多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. Windows DiskPart工具使用

    启动工具 diskpart 列出磁盘列表 list disk 选择磁盘 select disk 1 转换为GPT分区 convert gpt 列出分区 list partition 清除所有分区 cl ...

  2. 【转载】Java 的开发效率究竟比 C++ 高在哪里?

    哈哈哈,太好笑了 https://www.zhihu.com/people/ze.ran ze ran编程话题优秀回答者 less is more 人赞同 C++是面向内存编程,Java是面向数据结构 ...

  3. DX12

    CD3DX12_DESCRIPTOR_RANGE1 的baseShaderRegister 用来指定 t0 t1 b0 b1...的index t0 srv b0 constant buffer u0 ...

  4. 利用github和git命令,将本地项目共享到服务器上——第二章

    附上关于git命令的第一章:https://www.cnblogs.com/mlw1814011067/p/9908856.html 六.删除服务器中的文件 1. 直接物理删除(右键,删除,或者是用b ...

  5. 最简单的方式用上https

    1.在这个网站申请ssl证书 https://www.sslforfree.com 2.下载的证书使用这个脚本处理一下 #!/bin/bash HOST_NAME=$1 cp certificate. ...

  6. [Android Pro] Android的5个进程等级

    1.foreground process     正处于activity resume状态     正处于bound服务交互的状态     正处于服务在前台运行的状态(StartForeGround( ...

  7. Win7如何关闭 打开文件-安全警告

    如图所示,运行一个EXE程序就会弹出提示,很麻烦.   在运行对话框中输入gpedit.msc打开组策略编辑器.定位到用户配置--管理模板--windows组件--附件管理器 点中等危险文件类型抱含列 ...

  8. Apatche httpd + Django + Mysql web server 搭建

    Required: httpd: 2.4.18 django : 1.8.7 mysql: 5.7.10 MySQL-python: 1.2.3 mod_wsgi: 4.4.21 Offical Do ...

  9. Hibernate关系映射(二) 基于外键的双向一对一

    基于外键的双向一对一关联映射 需要在一端添加<one-to-one>标签,用property-ref来指定反向属性引用. 还是通过刚才用户和地址来演示双向一对一关联. 代码演示 一.实体类 ...

  10. 使用Apache MINA框架搭建服务端

    使用MINA框架搭建服务端步骤: 1.定义一个启动服务的类MinaServer,并实现接口ServletContextListener 2.定义一个处理业务逻辑的类MinaServerHandler, ...