騰訊DeepOcean原創文章:dopro.io/explore-vue…css
就在前幾個月,Vue star 數突破了 100k,正式超越 React。
在過去的好多些年,jQuery 在前端領域都處於統治地位,在衆多框架中脫穎而出,不少寫慣了 jQuery 語法的開發者們,都發現再也回不去寫原生 JS 了。隨着時間的發展,也出現了各式各樣的優秀框架,不免不一樣框架的粉絲也會把不一樣框架拿來對比,甚至互掐。說說今日的主角,Vue,在近幾年也是很是火的一個框架。對於初學者來講,Vue 上手的成本真的很低了,易用度很是高,而且由於是國內開發者開發的,文檔都是中文,國內大批量的公司都在使用,也致使了 Vue 的增速特別快。html
不過也正是有不一樣框架的更新迭代,相互競爭,才創造一個愈來愈好的前端世界。正如 Vue 開發者在 twitter 發佈的一條信息:前端
Vue 是一套用於構建用戶界面的漸進式框架。它有着以下特色:vue
Vue 的組件化將 UI 頁面分割爲若干組件進行組合和嵌套node
2. 快速上手 Vue工欲善其身,必先利其器。webpack
不管咱們學習哪一種框架,搭建環境是必經之路。Vue 提供了一個官方的 CLI,爲單頁面應用快速搭建繁雜的腳手架。固然,任何的前提都是首先你瞭解了 Vue 相關的概念,否則新手一上來搭建 Vue-cli,看到裏面牽扯到的 webpack、npm、nodejs等等概念,也是會一臉懵逼,很容易有從入門到放棄的想法的。web
在搭建 Vue-cli 這點上,咱們不妨直接站在巨人的肩膀上,這裏有一篇帶你們快速開啓第一個 Vue 頁面的教程,很是推薦:juejin.im/entry/58f48… 。npm
組件化的好處不用一一細說你們都知道了,組件是 Vue.js 最強大的功能之一,讓咱們用獨立可複用的小組件來構建大型應用,開發效率更快更敏捷。爲了更好地複用,這裏以創建彈窗組件爲實例,談談如何創建一個項目的組件庫。瀏覽器
1. 組件庫結構前端框架
qqcartoon-ui // 組件庫名字複製代碼├── index.js // 組件文件複製代碼├── aa1 // 各個組件包複製代碼├── bb1複製代碼├── dialog 複製代碼 ├── index.js // 組件註冊複製代碼 ├── src複製代碼 ├── index.scss // 組件樣式複製代碼 ├── index.vue // 組件結構 複製代碼├──複製代碼└── ... 複製代碼
通常在 Vue 裏,咱們會把組件寫在 components 裏,可是爲了創建一個能夠多個項目共用的組件庫,這裏從新命名,如 qqcartoon-ui 。
import UIDialog from './dialog/index'複製代碼import UIA from './aa1/index'複製代碼import UIB from './bb1/index'複製代碼複製代碼export {複製代碼 UIDialog,複製代碼 UIA,複製代碼 UIB複製代碼}複製代碼
import UIDialog from './src/index';複製代碼複製代碼UIDialog.install = function(Vue){複製代碼 Vue.component(UIDialog.name,UIDialog);複製代碼};複製代碼複製代碼export default UIDialog;複製代碼
.ui-dialog {複製代碼 position: fixed;複製代碼 top: 0px;複製代碼 left: 0px;複製代碼 width: 100%;複製代碼 height: 100%;複製代碼 z-index: 9999;複製代碼 -webkit-box-orient: horizontal;複製代碼 -webkit-box-pack: center;複製代碼 -webkit-box-align: center;複製代碼 background: rgba(0,0,0,0.4);複製代碼}複製代碼...... 省略其他樣式代碼複製代碼
<template>複製代碼 <div class="ui-dialog" :style="{diaplay:show?'-webkit-box':'none'}">複製代碼 <div class="ui-dialog-cnt">複製代碼 <div class="ui-dialog-bd">複製代碼 <h4>{{title}}</h4>複製代碼 </div>複製代碼 </div>複製代碼 </div>複製代碼</template>複製代碼<style lang="scss" src="./index.scss"></style>複製代碼<script>複製代碼 export default {複製代碼 name:'UIDialog',複製代碼 props:{複製代碼 show:{複製代碼 type:Boolean,複製代碼 default:false複製代碼 },複製代碼 title:{複製代碼 type:String,複製代碼 default:"這是標題"複製代碼 }複製代碼 }複製代碼 }複製代碼</script>複製代碼
2. 組件的引用
在項目的根目錄下,你能夠找到一個 js 文件,可能它的命名是 main.js。在裏面引入你須要的組件名。
import {UIDialog} from '@/qqcartoon-ui/packages/index'複製代碼Vue.use(UIDialog)複製代碼
這個時候,彈窗組件就已經引用到項目中了,這時候只須要最後一步,在項目 vue 文件裏使用:
<UIDialog :show="true"></UIDialog>複製代碼
這個時候編譯代碼,就能夠在瀏覽器看到最終的彈窗效果啦!
<ul id="app">複製代碼 <li v-on:click = "clickMe">單擊事件</li>複製代碼</ul>
複製代碼
複製代碼<script>
複製代碼 var app = new Vue({複製代碼 el : '#app',複製代碼 data : {複製代碼 },複製代碼 methods : {複製代碼 clickMe : function(){複製代碼 console.log('單擊事件發生');複製代碼 }複製代碼 }複製代碼})
複製代碼</script>
複製代碼
<div>複製代碼 <h2>我是子組件的標題</h2>複製代碼 <slot>複製代碼 只有在沒有要分發的內容時纔會顯示。複製代碼 </slot>複製代碼</div>複製代碼
父組件模版:
<div>複製代碼 <h1>我是父組件的標題</h1>複製代碼 <my-component>複製代碼 <p>這是一些初始內容</p>複製代碼 </my-component>複製代碼</div>複製代碼
渲染結果:
<div>複製代碼 <h1>我是父組件的標題</h1>複製代碼 <div>複製代碼 <h2>我是子組件的標題</h2>複製代碼 <p>這是一些初始內容</p>複製代碼 </div>複製代碼</div>複製代碼