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实现单继承和多继承的简单方法
Mar 29 Javascript
js null,undefined,字符串小结
Aug 21 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
深入浅析JavaScript面向对象和原型函数
Feb 06 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
BootStrap tab选项卡使用小结
Aug 09 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
简单实现js放大镜效果
Jul 24 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
Aug 18 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
design vue 表格开启列排序的操作
Oct 28 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
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python下线程之间的共享和释放示例
2015/05/04 Python
解析Python中while true的使用
2015/10/13 Python
python实现上传下载文件功能
2020/11/19 Python
Python金融数据可视化汇总
2017/11/17 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
解析Python3中的Import
2019/10/13 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
python 线程的五个状态
2020/09/22 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
西式结婚主持词
2014/03/14 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
参赛口号
2014/06/16 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫