[TOC]css
1.環境搭建——》2.建立項目並啓動項目——》
# 1. 安裝node 去官網下載安裝包,直接安裝(官網:https://nodejs.org/zh-cn/) # 2. 安裝cnpm 到command終端中,輸入下面命令便可 npm install -g cnpm --registry=https://registry.npm.taobao.org # 3. 安裝腳手架 到command終端中,輸入下面命令便可 cnpm install -g @vue/cli # 清空緩存 (當前面的安裝過程出錯時,要先清空緩存,再從新安裝) 到command終端中,輸入下面命令便可 npm cache clean --force
# 1. 在command終端中,先切換到項目要建立的路徑下 # 2. 建立項目 vue create 項目名 # 在上面的第2步中,輸入建立命令後還有一些配置,按照下面的圖片操做便可(其中鍵盤上的上下方向鍵來選擇選項,空格來肯定選擇) # 3. 啓動項目 啓動項目以前,***必定要切換到項目根目錄下***,使用終端啓動時,輸入下面的命令 npm run serve # ********必定要注意是serve ,最後沒有r
使用pycharm開發vue項目,這裏咱們要配置項目啓動的功能,以下圖。html
圖一:前端
node_modules : 項目的依賴(不一樣電腦依賴須要從新構建),咱們不用管vue
public : 存放項目的頁面(由於vue框架是單頁面開發,因此只含有一個index默認的頁面),咱們也不用動node
src : 存放與項目自己相關的文件 。咱們主要是在這個文件夾中開發。python
assets:存放項目的靜態文件(如導入的css,js等模塊插件)jquery
components:存放項目的小組件(與views文件夾中的組件是子父組件的關係,傳參經過子傳父或父傳子的方式傳參。)webpack
router:存放項目的路由配置(路由與頁面組件對應關係)ios
views:存放項目的頁面組件(其中的組件與組件之間的傳參經過路由傳參的方法傳參)web
App.vue文件:項目的根組件,內部固定5行代碼。(咱們在views中自定義的頁面組件最後都是將根組件的<router-view />
替換掉,進行渲染)
<!--App.vue的5行代碼--> <template> <div id="app"> <router-view/> <!--完成頁面組件的佔位--> </div> </template>
main.js :項目總腳本文件(配置全部環境,加載根組件)(全局類型的環境都在改文件中配置)
*****對於導入文件,使用import和require均可,通常媒體文件用require來導入,而import和from聯用,能夠起別名。***** *****Vue.prototype.屬性和Vue.use()功能相同,都是配置全局環境是使用的,Vue.prototype通常用來定義屬性,在全局組件中用this能夠訪問到,Vue.use()通常用來配置是方法,直接在全局使用use括號內的方法名字便可。 // 1. 在main.js文件中配置全局js import settings from '@/assets/js/settings' // settings文件是assets文件夾下的 Vue.prototype.$settings = settings; // 2. 在main.js文件中配置全局css require('@/assets/css/global.css'); // global.css文件是assets文件夾下 // 在main.js文件中配置全局element-ui環境 import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI);
# 1. 在views文件夾中,建立頁面組件 # 2. 在router的index.js中配置頁面組件的路由 # 3. 繼續書寫建立的頁面組件,若是包含小組件,則須要在頁面組件下方導入並掛載,數據經過vue組件的生命週期鉤子來獲取後端響應的數據
<router-view />
佔位符——》標籤: <!-- 該標籤完成頁面組件的佔位 --> <router-view></router-view> <!--該標籤能夠寫成單標籤。組件標籤也能夠寫成單標籤--> <!-- 該標籤完成路由跳轉 --> <router-link></router-link> 方法: <!-- 該方法完成邏輯中的路由跳轉 --> $router.push('頁面組件路由') <!-- 該方法完成路由前進後退的步數,能夠爲負數 --> $router.go(整數)
在頁面組件建立完成後,就要取router文件夾的index.js文件中配置頁面組件的路由
vue項目的路由配置容許咱們能夠對一個頁面組件配置多個url(經過重定向的方法)
// 加入如今有一個新建立的頁面組件 Home.vue // 在router文件夾的index.js中 1. 先導入頁面組件 import 組件別名 from '..views/Home.vue' 2. 書寫頁面路由(在const routes中添加新路由) // 下面的兩種配置均可以訪問Home.vue頁面組件 // 1. 正常配置 { path: '/home', name: 'home', component: Home }, // 2. 重定向配置 { path: '/index', redirect:'/home' },
// 方式一:拼接式參數 1.標籤跳轉攜帶參數: to="/user?pk=1" ,pk是鍵值對的key 2.對應邏輯跳轉攜帶參數: this.$router.push('/user?pk=1') 3.對應的頁面路由書寫方式: path: '/user' // 方式一對應的取值方式: this.$route.query.pk
// 方式二:有名分組式參數 1.標籤跳轉攜帶參數: to="/user/1" 2.對應邏輯跳轉攜帶參數: this.$router.push('/user/1') 3.對應頁面路由書寫方式:*****這裏與無路由傳參的路由書寫方式有區別******** path: '/user/:pk' // 方式二對應的取值方式: this.$route.params.pk
<router-link to="頁面路由">用戶頁</router-link> <!-- 使用router-link標籤,完成標籤跳轉--> <!-- router-link 標籤渲染到瀏覽器中就是一個a標籤-->
this.$router.push('頁面路由') // 完成邏輯跳轉,主要是在事件中完成跳轉
// 組件中,內部書寫的style標籤中,要有scoped屬性,表示讓當前組件中的樣式使用本組件style中定義的樣式,這樣的話,以後即便與全局樣式重名,也不要緊。 <style scoped> 樣式代碼 </style>
對於vue項目向django後端請求url時,必須書寫徹底的django視圖函數的絕對路徑。
// 利用JS原型,在vue項目中,咱們能夠產生一個能夠在全局的vue實例都生效的屬性。 // 定義方式: // 在vue項目的main.js文件中: Vue.prototype.屬性名 = 屬性值(或變量); // 這樣就能夠在vue項目的任意vue實例的中均可以訪問到
組件的生命週期鉤子就是:組件從建立到銷燬的整個生命週期中特殊時間節點對應的回調方法
經常使用的生命週期鉤子
beforeCreate(){} // 組件要建立以前 created(){} // 組件建立成功 向後臺發送數據請求,通常是加載快、比較小的數據 beforeMount(){} // 組件要加載以前 mounted(){} // 組件加載完成 ***特別耗時的數據請求,能夠延後到組件初步加載成功後,再慢慢請求*** beforeUpdate(){} // 項目中任意變量要變化以前 updated(){} // 項目中任意變量剛變化以後 beforeDestroyed(){} // 組件要銷燬以前 destoryed(){} // 組件銷燬完成
// 配置步驟: 1. 安裝插件:在項目根目錄下(必定要在項目目錄下),輸入命令安裝插件 cnpm install axios 2. 在項目的main.js中配置 import axios from 'axios' Vue.prototype.$axios = axios; // 利用JS原型,在所有的組件中均可以訪問到axios插件 3. 在一個組件的邏輯中發送ajax請求實例 this.$axios({ url: 'http://127.0.0.1:8000/cars/', // 後端url method: 'get', // 請求方式 }).then(response => { // 回調函數,必定要用箭頭函數 console.log(response); // this.cars = response.data; }).catch(error => { // 捕捉錯誤,網絡狀態碼爲4xx、5xx console.log(error); });
CORS :跨域資源共享,是一種機制
django是默認是同源策略
同源:http協議相同、ip服務器地址相同、app應用端口相同
跨域:協議、ip地址、應用端口只要有一不一樣就是跨域
跨域問題主要出如今先後端分離的項目中。由於瀏覽器和django都是同源策略,因此存在跨域問題。即瀏覽器和django後端都各自只會對同一個域的資源進行請求和響應。
在vue項目中,
# 步驟: # djan項目中: # 1. django 安裝cors模塊: pip install django-cors-headers # 2. 在settings配置(註冊app,註冊中間件) INSTALLED_APPS = [ 'corsheaders' ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware' ] # 3. 在settings開啓容許全部的跨域 CORS_ORIGIN_ALLOW_ALL = True
1. 安裝插件(必定要在vue項目目錄下),代替Bootstrap的下載到本地操做 cnpm install element-ui 2. 在main.js中配置 import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); 3. 使用 直接複製粘貼到組件的模板中便可
1. 安裝jQuery cnpm install jQuery 2. vue項目在配置jQuery環境時,須要在vue.config.js文件中配置,若是vue項目沒有該文件,則在vue項目根目錄下手動建立 3. vue.config.js文件中書寫 const webpack = require("webpack"); module.exports = { configureWebpack: { plugins: [ new webpack.ProvidePlugin({ $: "jquery", // $ 表示的就是jQuery中的$ jQuery: "jquery", "window.jQuery": "jquery", Popper: ["popper.js", "default"] }) ] } };
1. 安裝Bootstrap cnpm install bootstrap@3 // @3表示版本號,在終端中給python解釋器安裝則是 pip install bootstrap==3 ,3默認是3點幾版本中最穩定的那個版本 2. main.js文件中配置 import "bootstrap" import "bootstrap/dist/css/bootstrap.css"