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 相关文章推荐
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
javascript 学习笔记(onchange等)
Nov 14 Javascript
jquery.ui.draggable中文文档(原文翻译)
Nov 15 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
Jul 21 Javascript
解析Node.js异常处理中domain模块的使用方法
Feb 16 Javascript
AngularJS实现DOM元素的显示与隐藏功能
Nov 22 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
在vue2.0中引用element-ui组件库的方法
Jun 21 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
Vue路由前后端设计总结
Aug 06 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 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标签云的实现代码
2012/10/10 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
Python MD5加密实例详解
2017/08/02 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
总裁岗位职责
2013/12/04 职场文书
文明寄语大全
2014/04/11 职场文书
经典演讲稿汇总
2014/05/19 职场文书
医药销售自我评价200字
2014/09/11 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
化工见习报告范文
2014/10/31 职场文书
大学军训决心书
2015/02/05 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
田径运动会通讯稿
2015/07/18 职场文书
话题作文之学会尊重
2019/12/16 职场文书
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android