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 带有滚动条的表格,标题固定,带排序功能.
Nov 13 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
JS操作图片(增,删,改) 例子
Apr 17 Javascript
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
js点击文本框后才加载验证码实例代码
Oct 20 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
Nov 08 jQuery
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
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中调用JAVA
2006/10/09 PHP
JAVA/JSP学习系列之四
2006/10/09 PHP
一个取得文件扩展名的函数
2006/10/09 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
微信小程序日历效果
2018/12/29 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
Python文件处理
2016/02/29 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
python requests.post带head和body的实例
2019/01/02 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python多进程间通信代码实例
2019/09/30 Python
python如何操作mysql
2020/08/17 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
建筑设计师岗位职责
2013/11/18 职场文书
人事经理岗位职责
2014/04/28 职场文书
学校督导评估方案
2014/06/10 职场文书
车辆年审委托书范本
2014/09/18 职场文书
2014年收银工作总结
2014/11/13 职场文书
污染环境建议书
2015/09/14 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python
Python采集壁纸并实现炫轮播
2022/04/30 Python