Vue.JS基礎- 外掛、模組化
vue補充
獲取DOM元素
-
救命稻草, document.querySelector
-
1: 在template中標識元素 ref="xxxx"
-
2: 在要獲取的時候, this.$refs.xxxx 獲取元素
-
建立元件,裝載DOM,使用者點選按鈕
-
-
ref在DOM上獲取的是原生DOM物件
-
ref在元件上獲取的是元件物件
-
$el 是拿其DOM
-
這個物件就相當於我們平時玩的this,也可以直接呼叫函式
-
路由
路由原理
-
傳統開發方式 url改變後 立刻發起請求,響應整個頁面,渲染整個頁面
-
SPA 錨點值改變後 不會發起請求,發起ajax請求,區域性改變頁面資料
-
頁面不跳轉 使用者體驗更好
-
SPA
-
single page application(單頁應用程式)
-
前端路由
-
錨點值監視
-
ajax獲取動態資料
-
核心點是錨點值
-
-
前端框架 Vue/angular/react都很適合開發單頁應用
基本使用
-
vue-router
-
其是vue的核心外掛
-
1:下載
npm i vue-router -S
-
1.2(重要):安裝外掛
Vue.use(VueRouter);
-
2:在main.js中引入vue-router物件
import VueRouter form './x.js';
-
3:建立路由物件
var router = new VueRouter();
-
4:配置路由規則
router.addRoutes([路由物件]);
-
路由物件
{path:'錨點值',component:要(填坑)顯示的元件}
-
-
5:將配置好的路由物件交給Vue
-
在options中傳遞-> key叫做 router
-
-
6:留坑(使用元件)
<router-view></router-view>
router-link
-
to
-
幫助我們生成a標籤的href
-
錨點值程式碼維護不方便,如果需要改變錨點值名稱
-
則需要改變 [使用次數 + 1(配置規則)] 個地方的程式碼
-
命名路由
-
1:給路由物件一個名稱
{ name:'home',path:'/home',component:Home}
-
2:在router-link的to屬性中描述這個規則
-
<router-link :to="{name:'home'}></router-link>"
-
通過名稱找路由物件,獲取其path,生成自己的href
-
-
大大降低維護成本,錨點值改變只用在main.js中改變path屬性即可
階段總結
-
vue-router使用步驟 : 1:引入 2:安裝外掛 3:建立路由例項 4:配置路由規則 5:將路由物件關聯vue 6:留坑
-
router-link to="/xxx" 命名路由
-
-
在路由規則物件中 加入name屬性
-
在router-link中 :to="{ name:"xxx'} "
-
-
-
生僻API梳理:
-
-
Vue.use(外掛物件); // 過程中會註冊一些全域性元件,及給vm或者元件物件掛在屬性
-
給vm及元件物件掛在的方式 : Object.defineProperty(Vue.prototype,'$router',{
get:function () { return 自己的router物件;
}
})
-
-
引數router-link,
-
Vue.prototype.xxx = {add:fn}
-
所有元件中,使用this.xxx就能拿到這個物件
-
查詢字串
-
1:配置
:to="{name:'detail',query:{id:hero.id} }"
-
2:規則
{name:'detail',path:'/detail',component:Detail}
-
3:獲取
this.$route.query.id
-
4:生成
<a href="/detail?id=1">
-
-
path方式
-
4:生成
<a href="/detail/1">
-
1:配置
:to="{name:'detail',params:{id:hero.id} }"
-
2:規則
{ name:'detail',path:'/detail/:id'}
-
3:獲取
this.$route.params.id
-
-
查詢字串配置引數
-
router-link一次
-
獲取的時候一次
-
-
path方式配置引數
-
router-link一次
-
規則配置的時候宣告位置
-
獲取的時候一次
-
-
總結書寫程式碼注意事項
-
path方式需要在路由規則中宣告位置
-
vue-router中的物件
-
$route 路由資訊物件,只讀物件
-
$router 路由操作物件,只寫物件
巢狀路由
-
市面上所謂的用單頁應用框架開發多頁應用
-
巢狀路由
-
-
案例
-
進入我的主頁顯示:電影、歌曲
-
-
程式碼思想
-
1:router-view的細分
-
router-view第一層中,包含一個router-view
-
-
2:每一個坑挖好了,要對應單獨的元件
-
-
使用須知: 1:router-view包含router-view 2:路由children路由
知識點介紹
-
路由meta後設資料 -> meta是對於路由規則是否需要驗證許可權的配置
-
路由物件中 和name屬性同級
{ meta:{ isChecked:true } }
-
-
路由鉤子 -> 許可權控制的函式執行時期
-
每次路由匹配後, 渲染元件到router-view之前
-
router.beforeEach(function(to,from,next) { } )
-
練習
-
1: 使用koa 編寫一個伺服器...
-
a. /login的請求.. ctx.body = { msg:'ok'}
前端用jq傳送ajax請求
-
-
2: 客戶端接收響應以後.如果是ok. localStroage中儲存該值
-
3: 在全域性路由守衛中,區分/login 不驗證(meta), /show 要驗證, 驗證條件就是從localStorage中獲取
程式設計導航
-
1: 跳到指定的錨點,並顯示頁面
this.$router.push({ name:'xxx',query:{id:1},params:{name:'abc'} });
-
2: 配置規則
{name:'xxx',path:'/xxx/:name'}
-
3: 根據歷史記錄.前進或後退
-
this.$router.go(-1|1);
-
1代表進一步,-1是退一步
-
axios
基本使用
Axios.method('url',[,..data],options) .then(function(res){ }) .catch(function(err) { } )
合併請求
-
this.$axios.all([請求1,請求2]) .then( this.$axios.spread(function(res1,res2){ }) )
攔截器
-
單請求配置options:
axios.post(url,data,options);
-
全域性配置defaults:
this.$axios.defaults
-
config :
請求攔截器中的引數
-
response.config
響應攔截器中的引數
-
options
-
baseURL 基礎URL路徑
-
params 查詢字串(物件)
-
transformRequest 轉換請求體資料
-
transformResponse 轉換響應體資料
-
headers 頭資訊
-
data 請求體資料
-
timeout 請求超時,請求多久以後沒有響應算是超時(毫秒)
-
模組化
-
webpack命令 npm init -y npm install webpack@3.6.0 --save-dev --registry https://registry.npm.taobao.org
-
package.json檔案
"scripts": { "test": "webpack ./main.js ./build.js" },
-
命令列執行 npm run test
ES6模組
-
匯入和匯出只能存在頂級作用域
-
require引入是程式碼執行的時候才載入
-
import 和export 都是提前載入 ,載入在程式碼執行之前
箭頭函式和function
-
一方面箭頭函式是種簡寫形式
-
應用場景: 由於箭頭函式本身沒有this和arguments,通常用在事件類的回撥函式上,讓其向上級function繫結this,而非事件物件
-
箭頭函式不可以作為建構函式
ES6函式簡寫
-
用在物件的屬性中
fn3() { //幹掉了:function,用在物件的屬性中 console.log(this); },
相關文章
- [Android] 元件化 & 模組化 & 外掛化演進Android元件化
- 什麼是模組化,元件化, 外掛化?元件化
- 前端模組化基礎前端
- vscode外掛-flutter業務模組化管理VSCodeFlutter
- Javascript模組化開發基礎JavaScript
- 3.03 模組外掛介紹
- 模組化打包工具-Webpack外掛與其他功能Web
- Postgresql Contrib模組外掛總結SQL
- Python基礎——模組Python
- ansible基礎-模組
- 熱修復與外掛化基礎——dex與class
- Python基礎12(模組與datetime模組)Python
- Python基礎之模組Python
- 切圖崽的自我修養-模組外掛化書寫方式
- Verilog外掛:補全模組例項模板
- 掌握Java9模組化系統-基礎部分Java
- Flutter外掛開發《iOS原生模組開發》FlutteriOS
- 蜻蜓安全編寫外掛模組 webcrack 實踐Web
- vscode中隱藏節點模組的外掛VSCode
- 【JS基礎】一文看懂前端模組化規範JS前端
- 9.Vue之webpack打包基礎---模組化思維VueWeb
- python 基礎之模組與包Python
- python基礎學習16—-模組Python
- python 基礎筆記——常用模組Python筆記
- Python基礎:常用系統模組Python
- 二、Ansible基礎之模組篇
- 【python基礎】os模組的使用Python
- phpcmsV9手機模組外掛,自帶模板PHP
- 如何透過模組/外掛機制,靈活組織Laravel工程Laravel
- 如何通過模組/外掛機制,靈活組織Laravel工程Laravel
- 用Kotlin擼一個圖片壓縮外掛-外掛基礎篇(二)Kotlin
- Android外掛化原理(一)Activity外掛化Android
- 爬蟲逆向基礎,理解 JavaScript 模組化程式設計 webpack爬蟲JavaScript程式設計Web
- 熱修復與外掛化基礎——Java與Android虛擬機器JavaAndroid虛擬機
- Vue.js的基礎Vue.js
- Gradle入門系列(五)——Gradle其它模組與Plugin外掛GradlePlugin
- OpenWrt 基礎軟體模組之procd
- Python基礎(九) 常用模組彙總Python