日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

2017 Vue.js 2快速入门指南

發(fā)布時(shí)間:2025/3/21 vue 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017 Vue.js 2快速入门指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注意,據(jù)部分讀者反映本文水多,怕濕身者勿進(jìn)。后續(xù)推薦詳解 Vue & Vuex 實(shí)踐

?

2017 Vue.js 2快速入門指南翻譯自Vue.js 2 Quickstart Tutorial 2017從屬于Web 前端入門與工程實(shí)踐。Vue與React都是非常優(yōu)秀的前端界面輔助庫(kù),筆者在工作中使用React會(huì)多一點(diǎn),不過(guò)在學(xué)習(xí)Vue的過(guò)程中也得到了很多啟發(fā)。Vue和React在功能的完備、社區(qū)的活躍與性能的比較上筆者覺(jué)得毋庸多言,不過(guò)從筆者個(gè)人來(lái)看覺(jué)得二者的某些優(yōu)勢(shì)也是其劣勢(shì)。Vue是漸進(jìn)式的JavaScript庫(kù),可以在項(xiàng)目擴(kuò)展的過(guò)程中逐步添加所需要的模塊,但是相對(duì)約束就較弱,并且強(qiáng)耦合于基于DOM的Web平臺(tái)。React則是更多的關(guān)注于跨平臺(tái)與大型Web應(yīng)用的工程實(shí)踐,但是學(xué)習(xí)曲線比較曲折,入門門檻相對(duì)較高,對(duì)于活動(dòng)頁(yè)、移動(dòng)Mobile也有點(diǎn)過(guò)重。詳細(xì)討論參考筆者的2016-我的前端之路:工具化與工程化。

Vue.js 概述

Vue是專注于構(gòu)建用戶界面層的漸進(jìn)式JavaScript框架,它可以很方便地與各種中間件或者后端應(yīng)用程序集成使用。Vue為我們構(gòu)建界面層提供了大量有用的工具,助我們構(gòu)建復(fù)雜的單頁(yè)應(yīng)用。Vue的特性包括但不限于:

  • 響應(yīng)式界面

  • 聲明式路由

  • 數(shù)據(jù)綁定

  • 指令

  • 模板邏輯

  • 組件

  • 事件處理

  • 屬性推斷

  • CSS 變換與動(dòng)畫(huà)

  • 過(guò)濾

Vue.js 2核心庫(kù)大概只有17KB,非常小,這就保證了引入Vue.js并不會(huì)對(duì)你的編譯后的版本添加過(guò)多的代碼,加速網(wǎng)站的加載。Vue.js的官方代碼位于:vue.js。

?

如何引入Vue.js

Vue.js為我們提供了多種引入方式,可以根據(jù)我們項(xiàng)目的實(shí)際需求自由選擇:

  • 在HTML中添加script標(biāo)簽從CDN引入

  • 使用NPM安裝

  • 使用Bower安裝

  • 使用Vue-cli初始化項(xiàng)目

本文是選擇了最后一種初始化的方式來(lái)創(chuàng)建新的項(xiàng)目。

使用 Vue-cli

首先,我們可以使用NPM安裝Vue-cli。你必須要檢查下系統(tǒng)中是否已經(jīng)安裝好了NodeJS并且npm命令行工具可以正常使用,然后使用如下命令在本地系統(tǒng)進(jìn)行全局安裝:

$ npm install -g vue-cli

安裝完畢之后,我們可以使用如下方式來(lái)初始化新的項(xiàng)目:

$ vue init webpack vueapp01

這里我們讓Vue-cli以Webpack模板創(chuàng)建新的項(xiàng)目,并且個(gè)新項(xiàng)目取名為vueapp01,運(yùn)行該命令之后它會(huì)向你咨詢基本的項(xiàng)目信息,截圖如下:

?

到這里項(xiàng)目的模板文件被添加到了vueapp01目錄下,進(jìn)入該目錄即可以啟動(dòng)開(kāi)發(fā)服務(wù)器:

$ npm run dev

該命令會(huì)啟動(dòng)一個(gè)監(jiān)聽(tīng)8080端口的開(kāi)發(fā)服務(wù)器,在瀏覽器中打開(kāi)該端口可以看到如下界面:

?

如果你希望將項(xiàng)目打包出開(kāi)發(fā)版本,可以使用build命令,它會(huì)將項(xiàng)目打包編譯之后的文件放置在dist目錄下:

$ npm run build

項(xiàng)目結(jié)構(gòu)

該部分的代碼參考vue-boilerplate。首先我們來(lái)看下Vue-cli構(gòu)建的項(xiàng)目目錄結(jié)構(gòu):

?

進(jìn)入項(xiàng)目根目錄之后我們使用npm intsall命令安裝所有依賴,所有的依賴被聲明在package.json文件中。文件index.html中包含了如下HTML代碼:

<!DOCTYPE html> <html><head><meta charset="utf-8"><title>vueapp01</title></head><body><div id="app"></div><!-- built files will be auto injected --></body> </html>

該文件是整個(gè)應(yīng)用的入口點(diǎn),注意,無(wú)論你把<div>元素放在哪,只要保證其id屬性為app即可,該元素是整個(gè)由Vue.js生成文件的插入點(diǎn)。然后我們看下src文件夾中的main.js文件,該文件是Vue應(yīng)用初始化的地方:

import Vue from 'vue' import App from './App' new Vue({el: '#app',template: '<App/>',components: { App } })

文件首部我們發(fā)現(xiàn)兩個(gè)引入語(yǔ)句:

  • import Vue from 'vue':Vue是整個(gè)框架的主類

  • import App from './App':App是整個(gè)應(yīng)用的根元素

使用new關(guān)鍵字能夠創(chuàng)建Vue的實(shí)例,構(gòu)造函數(shù)會(huì)接收包含三個(gè)屬性的配置對(duì)象:

  • el:設(shè)定Vue應(yīng)用的DOM掛載點(diǎn)

  • template:包含HTML代碼的模板

  • components:用于模板中的Vue.js組件

該模板僅包含一個(gè)元素:<App />,當(dāng)然這并不是HTML標(biāo)準(zhǔn)元素,整個(gè)App組件的的定義在App.vue文件中:

<template><div id="app"><img src="./assets/logo.png"><hello></hello></div> </template> <script> import Hello from './components/Hello' export default {name: 'app',components: {Hello} } </script> <style> #app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px; } </style>

對(duì)于每個(gè)Vue.js 2單文件組件,其會(huì)包含三部分:

  • <template></template>: Component's template code

  • <script></script>: Component's script code

  • <style></style>: Component' CSS code

我們先看看template與script這兩塊。script塊導(dǎo)出了某個(gè)聲明為app的組件,該組件中的屬性聲明了對(duì)于Hello組件的引用。Hello組件則是被定義在hello.vue文件中,為了使用其他組件我們同樣需要在script首部引入該組件。整個(gè)Hello組件的定義如下:

<template><div class="hello"><h1>{{ msg }}</h1><h2>Essential Links</h2><ul><li><a href="https://vuejs.org" target="_blank">Core Docs</a></li><li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li><li><a href="https://gitter.im/vuejs/vue" target="_blank">Gitter Chat</a></li><li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li><br><li><a href="http://vuejs-templates.github.io/webpack/" target="_blank">Docs for This Template</a></li></ul><h2>Ecosystem</h2><ul><li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li><li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li><li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li><li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li></ul></div> </template> <script> export default {name: 'hello',data () {return {msg: 'Welcome to Your Vue.js App'}} } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h1, h2 {font-weight: normal; } ul {list-style-type: none;padding: 0; } li {display: inline-block;margin: 0 10px; } a {color: #42b983; } </style>

使用標(biāo)準(zhǔn)指令

我們可以使用基本的Vue.js指令來(lái)為Hello組件添加更多的功能與數(shù)據(jù)邏輯。

v-for

v-fot指令允許我們遍歷某個(gè)數(shù)組并且將每一個(gè)元素渲染到模板中,我們可以先創(chuàng)建如下的數(shù)組:

users: [{firstname: 'Sebastian', lastname: 'Eschweiler'},{firstname: 'Bill', lastname: 'Smith'},{firstname: 'John', lastname: 'Porter'}],

然后使用v-for指令遍歷該列表并且提取出每個(gè)元素的firstname與lastname值:

<div><ul><li v-for="user in users">{{user.firstname}} {{user.lastname}}</li></ul> </div>

v-model

v-model指令會(huì)在輸入元素與組件之間創(chuàng)建雙向數(shù)據(jù)綁定,我們首選需要定義一個(gè)存放數(shù)據(jù)的變量:

input_val: ''

然后使用v-model將變量綁定到元素上:

<div><input type="text" v-model="input_val"> </div>

這種雙向綁定會(huì)有兩個(gè)效果:

  • 每次用戶輸入值時(shí)都會(huì)同步更新到input_val變量

  • 如果我們?cè)诔绦蛑惺謩?dòng)修改input_val變量的值,元素中的展示值也會(huì)被相應(yīng)更新

v-text

v-text指令被用于設(shè)置文本內(nèi)容,其作用等效于{{...}},我們可以用其來(lái)展示部分文本:

Input Value: <span v-text="input_val"></span>

總結(jié)

完整的Hello組件的實(shí)現(xiàn)如下:

<template><div class="hello"><h1>{{ msg }}</h1><hr /><div><ul><li v-for="user in users">{{user.firstname}} {{user.lastname}}</li></ul></div><hr /><div><input type="text" v-model="input_val"></div><div>Input Value: <span v-text="input_val"></span></div><hr /><div><button class="btn btn-primary" v-on:click="counter++">You've clicked this button {{counter}} times!</button></div></div> </template> <script> export default {name: 'hello',data () {return {msg: 'Welcome to Your Vue.js App',users: [{firstname: 'Sebastian', lastname: 'Eschweiler'},{firstname: 'Bill', lastname: 'Smith'},{firstname: 'John', lastname: 'Porter'}],input_val: '',counter: 0}} } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h1, h2 {font-weight: normal; } ul {list-style-position: inside; } a {color: #42b983; } </style>

最后的結(jié)果如下所示:

from:https://zhuanlan.zhihu.com/p/24837102?

總結(jié)

以上是生活随笔為你收集整理的2017 Vue.js 2快速入门指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。