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入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
JQuery for与each性能比较分析
May 14 Javascript
JavaScript基本的输出和嵌入式写法教程
Oct 20 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
底部悬浮通栏可以关闭广告位的实现方法
Jun 01 Javascript
JavaScript检测原始值、引用值、属性
Jun 20 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
vue-router之实现导航切换过渡动画效果
Oct 31 Javascript
微信小程序wxml列表渲染原理解析
Nov 27 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扩展图文教程
2008/12/12 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
php中上传文件的的解决方案
2018/09/25 PHP
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
python安装sklearn模块的方法详解
2020/11/28 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
运动会入场解说词
2014/02/07 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
小学生教师节广播稿
2015/08/19 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android