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 相关文章推荐
使用js完成节点的增删改复制等的操作
Jan 02 Javascript
javascript类型转换使用方法
Feb 08 Javascript
html文本框提示效果的示例代码
Jun 28 Javascript
DOM 高级编程
May 06 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
Aug 14 Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 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
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
对python产生随机的二维数组实例详解
2018/12/13 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
weblogic面试题
2016/03/07 面试题
高二历史教学反思
2014/01/25 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
新生入学欢迎词
2015/01/26 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL