Vue单文件组件的如何使用方式介绍


Posted in Javascript onJuly 28, 2017

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

这种方式在很多中小规模的项目中运作的很好,在这些项目里 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 的 sigle-file components(单文件组件)为以上所有问题提供了解决方法,并且还可以使用 webpack 或 browserify 等构建工具

这是一个文件名为 hello.vue的简单实例

<template>

  <p> {{ gretting}} world! </p>
</template>


<script>
  module.exports = {
    data: function(){
      return {
        greeting: 'hello'
      }
    }
  }
</script>

<style scoped>
p {
  font-size: 2em;
  text-algin: center
}

</style>

现在我们获得:

  • 完整语法高亮
  • commonJs 模板
  • 组件化的 css

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

<template lang="jade">
  div
    p {{greeting}} world!
    other-component 
</template>

<script>
  import 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,它也是把 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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript string字符串优化问题
Jul 31 Javascript
js弹出模式对话框,并接收回传值的方法
Mar 12 Javascript
关于js注册事件的常用方法
Apr 03 Javascript
Javascript基础 函数“重载” 详细介绍
Oct 25 Javascript
javascript常见数字进制转换实例分析
Apr 21 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 Javascript
Node.js + Redis Sorted Set实现任务队列
Sep 19 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 #Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 #jQuery
完美实现js拖拽效果 return false用法详解
Jul 28 #Javascript
webpack 2的react开发配置实例代码
Jul 28 #Javascript
基于AngularJS实现表单验证功能
Jul 28 #Javascript
AngularJS service之select下拉菜单效果
Jul 28 #Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 #Javascript
You might like
php简单浏览目录内容的实现代码
2013/06/07 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
python实现电子词典
2020/04/23 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python和shell获取文本内容的方法
2018/06/05 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
使用python画社交网络图实例代码
2019/07/10 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
基于Pytorch SSD模型分析
2020/02/18 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
一个SQL面试题
2014/08/21 面试题
海量信息软件测试笔试题
2015/08/08 面试题
会计学应届毕业生推荐信
2013/11/04 职场文书
网络管理专业求职信
2014/03/15 职场文书
行政人事岗位职责
2014/03/17 职场文书
有关环保的标语
2014/06/13 职场文书
建筑工地宣传标语
2014/06/18 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
自查自纠工作总结
2014/10/15 职场文书
整改落实自查报告
2014/11/05 职场文书
公务员个人年终总结
2015/02/12 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS