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中使用&quot;with&quot;语句中跨frame的变量引用问题
Mar 08 Javascript
最佳的addEvent事件绑定是怎样诞生的
Oct 24 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
Aug 05 Javascript
微信小程序 判断手机号的实现代码
Apr 19 Javascript
js实现京东轮播图效果
Jun 30 Javascript
Vue渲染函数详解
Sep 15 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
JS实现简单的抽奖转盘效果示例
Feb 16 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 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实现Socket服务器的代码
2008/04/03 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
python不同系统中打开方法
2020/06/23 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
上班迟到检讨书
2014/09/15 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python