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 相关文章推荐
你可能不再需要JQUERY
Mar 09 Javascript
JQuery 图片延迟加载并等比缩放插件
Nov 09 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
Aug 14 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
May 17 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
深入理解js中的加载事件
Feb 08 Javascript
Vue 仿百度搜索功能实现代码
Feb 16 Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 Javascript
JavaScript数据结构之数组的表示方法示例
Apr 12 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
Jul 11 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 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读取文件内容到数组的方法
2015/03/16 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
详解Python中的文本处理
2015/04/11 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
python MySQLdb使用教程详解
2018/03/20 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
使用python远程操作linux过程解析
2019/12/04 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
医学毕业生自荐信
2013/10/11 职场文书
青年文明号创建承诺
2014/03/31 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技