Vue.js安裝使用教程


一、說明

上大學前,請的都是前端JavaScript、后端ASP/PHP/JSP、前后端代碼混雜;上大學時,請的都是前端Jquery、后端SSH、前后端代碼分離通過模板關聯;大學出來后,請的都是前端三大框架、后端Spring Boot、前后端分離。

雖說本質的東西沒怎么變,但形式上的東西總是得去記,三天兩頭搞套新輪子反正我個人是挺煩的。

 

二、安裝

2.1 下載到本地並通過<script>標簽引入

開發版本下載地址:https://vuejs.org/js/vue.js

生產版本下載地址:https://vuejs.org/js/vue.min.js

所謂開發版本就是沒經過壓縮的版本、體積比較大,所謂生產版本就是經過壓縮的版本;所謂壓縮就能寫在一行的盡量寫在一行。

使用像普通js文件一樣使用<script>標簽引入即可:

<!-- 使用開發版本 -->
<script src="vue.js"></script>
<!-- 使用生產版本 -->
<script src="vue.min.js"></script>

 

2.2 使用CDN

使用CDN的好處是js文件不用下載到本地(但個人總感覺沒有下載到本地踏實)。以下是官網推薦的CDN國內的我也不清楚哪個好點。

<!-- 學習使用,返回的是最新版本 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<!-- 生產使用,可指定版本避免最新版本存在bug影響應用-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>

 

2.3 使用npm安裝

npm用於js庫的下載,類似於python中的pip。不需要自己去找下載頁面然后手動下載還是比較方便的,我們這里使用這種形式。

nodejs帶有npm安裝npm直接安裝nodejs即可:http://nodejs.cn/download/

npm默認倉庫比較慢,可使用以下三種方法進行處理:

# 方法一、配置代理。但該方法經常會報npm ERR! 503 Too many open connections錯誤
npm config set proxy http://[username:password]@127.0.0.1:1080
npm config set https-proxy http://[username:password]@127.0.0.1:1080
# 刪除代理
# npm config delete proxy
# npm config delete https-proxy

# 方法二、修改默認倉庫。使用淘寶的https://registry.npm.taobao.org
# 所以我們直接把npm倉庫改成https://registry.npm.taobao.org,那也和安裝cnpm等效
npm config set registry https://registry.npm.taobao.org
# 查看當前所有配置:npm config list
# 只查看當前倉庫:npm config get registry

# 方法三、使用cnpm。可能某些時候我們不想修改倉庫,那我們可以安裝cnpm
# cnpm是淘寶發布的npm定制版,定制之處就是在於默認他庫設置成淘寶的https://registry.npm.taobao.org
# 注意下面這條命令是指定從https://registry.npm.taobao.org安裝cnpm,而不是修改npm的默認倉庫
npm install -g cnpm --registry=https://registry.npm.taobao.org

npm帶-g參數則把文件下載到npm安裝目錄的node_modules文件夾下,不帶-g參數則把文件下載到當前目錄的node_modules文件夾下。

# 我們只需要下載到當前文件夾下,不帶-g
npm install vue
# get和post需要axios
npm install axios

 

三、vue程序編寫

3.1 基本程序

在當前目錄下創建test1.html寫入以下內容:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一個vue.js程序</title>
        <script src="vue.min.js"></script>
    </head>
    <body>
        <div id="app">
            <!-- {{}}是模板語法,其內是vue.js的內容 -->
            <p> {{ vue_message }} </p>
            <p> <button v-on:click="changeText">點擊改變</button> </p>
        </div>

        <script type = "text/javascript">
            var js_message = "Hello Vue!"
            // 注意new Vue()本質是在實例化對象,其內固定為el/data/methods三個參數不要寫其他東西
            // 用一個app參數去承接的意義是,如果需要那么可以在js中使用實例中的變量或方法,如app.changeTest()
            var app = new Vue({
                // el元素限定此方法內的元素作用的范圍
                // 這里#app表示只作用於id為app的節點及其子孫節點
                el: '#app',
                // data 區域存放變量,所有前面{{}}內要用到的變量都要在這里定義
                // 此處將message變量賦值為js_message,而js_message被我們賦值為“Hello Vue!”,所以預期初始打開文件時顯示的是“Hello Vue!”
                data: {
                    vue_message: js_message
                },
                // methos區域存放函數,所有前面{{}}內或者vue語句用到的方法都要在這里定義
                methods: {
                    changeText: function (event) {
                      this.vue_message = "Hello Vue Click!"
                    }
                  }
                
            })
        </script>
    </body>
</html>

初始訪問頁面如下:

點擊按鈕后如下,說明定義的vue變量和方法都已生效:

 

3.2 get和post請求

上面的程序交互邏輯只是在前端頁面內進行處理,下面在此基礎上我們這里實現一個從restful服務端獲取結果並展示的vue頁面。

服務端python實現可參考鏈接:https://www.cnblogs.com/lsdb/p/9774307.html

服務端java實現可參考鏈接:https://www.cnblogs.com/lsdb/p/9783435.html

另外如果和我這里一樣html和api不同域,那么要處理跨域請求問題,不然瀏覽器會拒絕解析服務器返響應(Django可參考鏈接):

已攔截跨源請求:同源策略禁止讀取位於 http://127.0.0.1:8000/test/ 的遠程資源。(原因:CORS 頭缺少 'Access-Control-Allow-Origin')。

(本質就是給服務器響應加上Access-Control-Allow-Origin頭。又不是禁止訪問服務器也不是別人服務器不回你,一定要服務器加個頭你才處理響應沒想清楚這是什么孤兒道理)

api接口get和post請求返回結果如下:

修改后頁面代碼如下,說明見注釋:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一個vue.js程序</title>
        <script src="node_modules\vue\dist\vue.min.js"></script>
        <!-- get/post新加處一。get/post需要使用axios,在某些教程可以看到使用vue-resource,但vue-resource已經不更新了-->
        <script src="node_modules\axios\dist\axios.min.js"></script>
    </head>
    <body>
        <div id="app">
            <div id="sectionMsg" style="margin-top:20px">
                <!-- {{}}是模板語法,其內是vue.js的內容 -->
                <p> 當前值:{{ vue_count }} </p>
                <button v-on:click="addOne">加一</button>
            </div>
            
            <!-- get/post新加處二。get請求頁面,v-for是vue的for循環語句 -->
            <div id="sectionGet" style="margin-top:20px">
                    <li v-for="record in getResultRecords">
                      {{record.id}}-{{ record.username }}-{{record.password}}
                    </li>
                <input type="button" name="getButton" @click="getQueryRecords()" value="GET查詢">
            </div>
            
            <!-- get/post新加處三。post請求頁面,v-if是vue的條件判斷語句 -->
            <div id="sectionPost" style="margin-top:20px">
                <input type="text" ref="userID" placeholder="輸入用戶id進行查詢"/>
                <div v-if="postResultRecord != ''">{{postResultRecord.username}}-{{postResultRecord.password}}</div>
                <div v-else></div>
                <input type="button" @click="postQueryRecords()" name="postButton" value="POST查詢" />
            </div>
        </div>

        <script type = "text/javascript">
            var js_count = 0
            // 注意new Vue()本質是在實例化對象,其內固定為el/data/methods三個參數不要寫其他東西
            // 用一個app參數去承接的意義是,如果需要那么可以在js中使用實例中的變量或方法,如app.changeTest()
            var app = new Vue({
                // el元素限定此方法內的元素作用的范圍
                // 這里#app表示只作用於id為app的節點及其子孫節點
                el: '#app',
                // data 區域存放變量,所有前面{{}}內要用到的變量都要在這里定義
                // 此處將message變量賦值為js_message,而js_message被我們賦值為“Hello Vue!”,所以預期初始打開文件時顯示的是“Hello Vue!”
                data: {
                    vue_count: js_count,
                    // get/post新加處四。新加getResultRecords和postResultRecord變量,用於接收get和post返回結果,初始值賦空
                    getResultRecords: '',
                    postResultRecord: '',
                },
                // methods區域存放函數,所有前面{{}}內或者vue語句用到的方法都要在這里定義
                methods: {
                    addOne: function (event) {
                      this.vue_count += 1;
                    },
                    // get/post新加處五。新加一個get請求,get填請求的地址、then是響應后處理、catch是異常捕獲
                    getQueryRecords: function(event){
                        axios
                        .get('http://127.0.0.1:8000/test/')
                        .then(response => (this.getResultRecords = response.data))
                        .catch(error => (this.vue_count = error));
                    },
                    // get/post新加處六。新加一個post請求,post填請求的地址+參數、then是響應后處理、catch是異常捕獲
                    postQueryRecords: function(event){
                        axios
                        // 通過ref方式獲取輸入控件的值。當然也可以用原生javascript的document.getElementById("userID").value之類的方式獲取
                        .post('http://127.0.0.1:8000/test/',{userid:this.$refs.userID.value})
                        .then(response => (this.postResultRecord = response.data[0]))
                        .catch(error => (this.vue_count = error));
                    },
                  }
            })
        </script>
    </body>
</html>
View Code

初始訪問頁面如下:

各按鈕分別點擊后頁面如下,可見get和post請求都已成功:

 

參考:

https://www.jianshu.com/p/24945ee1ec05

https://blog.csdn.net/caideb/article/details/81449156

http://www.runoob.com/vue2/vue-tutorial.html

https://cn.vuejs.org/v2/guide/installation.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM