- 001-尚品匯-教程簡(jiǎn)介
- 002-尚品匯-vue-cli腳手架初始化項(xiàng)目
- 003-尚品匯-項(xiàng)目的其他配置
- 004-尚品匯-項(xiàng)目的路由分析
- 005-尚品匯-Header與Footer非路由組件完成
- 006-尚品匯-完成路由組件的搭建
- 007-尚品匯-路由元信息的使用
- 008-尚品匯-路由傳遞參數(shù)
- 009-尚品匯-路由傳遞參數(shù)相關(guān)面試題
- 010-尚品匯-重寫(xiě)push與replace方法
- 011-尚品匯-home首頁(yè)組件拆分業(yè)務(wù)分析
- 012-尚品匯-TypeNav三級(jí)聯(lián)動(dòng)全局組件完成
- 013-尚品匯-Home首頁(yè)拆分靜態(tài)組件
- 補(bǔ)錄視頻-說(shuō)明(接口等問(wèn)題)
- 014-尚品匯-POSTMAN工具測(cè)試接口
- 015-尚品匯-axios二次封裝
- 016-尚品匯-API接口統(tǒng)一管理
- 017-尚品匯-nprogress進(jìn)度條的使用
- 018-尚品匯-vuex模塊式開(kāi)發(fā)
- 019-尚品匯-動(dòng)態(tài)展示三級(jí)聯(lián)動(dòng)數(shù)據(jù)
- 020-尚品匯-完成三級(jí)聯(lián)動(dòng)動(dòng)態(tài)背景顏色
- 021-尚品匯-通過(guò)JS控制二三級(jí)分類顯示與隱藏
- 022-尚品匯-演示卡頓現(xiàn)象引入防抖與節(jié)流
- 023-尚品匯-函數(shù)防抖的理解
- 024-尚品匯-函數(shù)節(jié)流的理解
- 025-尚品匯-三級(jí)聯(lián)動(dòng)節(jié)流
- 026-尚品匯-三級(jí)聯(lián)動(dòng)路由跳轉(zhuǎn)的分析
- 027-尚品匯-完成三級(jí)聯(lián)動(dòng)的路由跳轉(zhuǎn)與傳遞參數(shù)業(yè)務(wù)
- 028-尚品匯-復(fù)習(xí)
- 029-尚品匯-Search模塊中商品分類與過(guò)渡動(dòng)畫(huà)
- 030-尚品匯-typeNav商品分類列表的優(yōu)化
- 031-尚品匯-合并參數(shù)
- 032-尚品匯-mockjs模擬數(shù)據(jù)
- 033-尚品匯-獲取Banner輪播圖的數(shù)據(jù)
- 034-尚品匯-swiper基本使用
- 035-尚品匯-Banner實(shí)現(xiàn)輪播圖第一種解決方案
- 036-尚品匯-輪播圖通過(guò)watch+nectTick解決問(wèn)題
- 037-尚品匯-獲取floor組件mock數(shù)據(jù)‘
- 038-尚品匯-動(dòng)態(tài)展示Floor組件
- 039-尚品匯-共用組件Carsouel
- 040-尚品匯-Search模塊的靜態(tài)組件
- 041-尚品匯-search模塊vuex操作
- 042-尚品匯-search模塊中動(dòng)態(tài)展示產(chǎn)品列表
- 043-尚品匯-Search模塊根據(jù)不同的參數(shù)獲取數(shù)據(jù)展示
- 044-尚品匯-Search模塊中子組件動(dòng)態(tài)開(kāi)發(fā)
- 045-尚品匯-監(jiān)聽(tīng)路由的變化再次發(fā)請(qǐng)求獲取數(shù)據(jù)
- 046-商品柜-面包屑處理分類的操作
- 047-尚品匯-面包屑處理關(guān)鍵字
- 048-尚品匯-面包屑處理品牌信息
- 049-尚品匯-平臺(tái)售賣(mài)屬性的操作
- 050-尚品匯-排序操作上
- 051-尚品匯-排序操作下
- 052-尚品匯-分頁(yè)器靜態(tài)組件
- 053-尚品匯-排序復(fù)習(xí)
- 054-尚品匯-分頁(yè)功能分析
- 055-尚品匯-分頁(yè)器起始與結(jié)束數(shù)字計(jì)算
- 056-山硅谷-尚品匯-分頁(yè)器動(dòng)態(tài)展示
- 057-尚品匯-分頁(yè)器完成
- 058-尚品匯-分頁(yè)器添加類名
- 059-尚品匯-滾動(dòng)行為
- 060-尚品匯-產(chǎn)品詳情數(shù)據(jù)獲取
- 061-尚品匯-產(chǎn)品詳情展示動(dòng)態(tài)數(shù)據(jù)
- 062-尚品匯-分頁(yè)器復(fù)習(xí)-裁剪
- 063-尚品匯-zoom放大鏡展示數(shù)據(jù)-裁剪
- 064-尚品匯-detail路由組件展示商品售賣(mài)屬性-裁剪
- 065-尚品匯-產(chǎn)品售賣(mài)屬性值排他操作-裁剪
- 066-尚品匯-放大鏡操作上
- 067-尚品匯-放大鏡結(jié)束‘
- 068-尚品匯-購(gòu)買(mǎi)產(chǎn)品個(gè)數(shù)的操作
- 069-尚品匯-加入購(gòu)物車(chē)
- 070-尚品匯-加入購(gòu)物車(chē)成功與失敗的判斷
- 071-尚品匯-加入購(gòu)物車(chē)操作
- 072-尚品匯-路由傳遞參數(shù)結(jié)合會(huì)話存儲(chǔ)
- 073-尚品匯-購(gòu)物車(chē)靜態(tài)組件與修改
- 074-尚品匯-uuid游客身份獲取購(gòu)物車(chē)數(shù)據(jù)
- 075-尚品匯-購(gòu)物車(chē)動(dòng)態(tài)展示數(shù)據(jù)
- 076-尚品匯-處理產(chǎn)品數(shù)量
- 077-尚品匯-修改購(gòu)物車(chē)產(chǎn)品的數(shù)量完成
- 078-尚品匯-刪除購(gòu)物車(chē)產(chǎn)品的操作
- 079-尚品匯-修改產(chǎn)品狀態(tài)
- 080-尚品匯-復(fù)習(xí)
- 081-尚品匯-刪除全部選中的商品
- 082-尚品匯-全部產(chǎn)品的勾選狀態(tài)修改
- 083-尚品匯-登錄注冊(cè)靜態(tài)組件
- 084-尚品匯-注冊(cè)業(yè)務(wù)上
- 085-尚品匯-注冊(cè)業(yè)務(wù)下
- 086-尚品匯-登錄業(yè)務(wù)(token)
- 087-尚品匯-用戶登錄攜帶token獲取用戶信息
- 088-尚品匯-登錄業(yè)務(wù)中講解存在問(wèn)題‘
- 089-尚品匯-退出登錄
- 090-尚品匯-導(dǎo)航守衛(wèi)理解
- 091-尚品匯-導(dǎo)航守衛(wèi)的判斷
- 092-尚品匯-導(dǎo)航守衛(wèi)用戶登錄操作
- 093-尚品匯-trade靜態(tài)組件
- 094-尚品匯-獲取交易頁(yè)數(shù)據(jù)
- 095-尚品匯-用戶地址信息的展示
- 096-商品匯-交易頁(yè)面完成
- 097-尚品匯-提交訂單
- 098-尚品匯-獲取訂單號(hào)與展示支付信息
- 099-尚品匯-支付頁(yè)面中使用ElementUI以及按需引入
- 100-尚品匯-微信支付業(yè)務(wù)上
- 101-尚品匯-微信支付下、
- 102-尚品匯-個(gè)人中心二級(jí)路由搭建
- 103-尚品匯-我的訂單
- 104-尚品匯-未登錄的導(dǎo)航守衛(wèi)判斷
- 105-尚品匯-用戶登錄(路由獨(dú)享與組件內(nèi)守衛(wèi))
- 106-尚品匯-圖片懶加載
- 107-尚品匯-vee-validate表單驗(yàn)證使用
- 108-尚品匯-路由懶加載
- 109-尚品匯-處理map文件
- 110-尚品匯-購(gòu)買(mǎi)服務(wù)器
- 111-尚品匯-安全組與xshell操作
- 112-尚品匯-nginx反向代理
- 001-組件通信-組件通信6種方式
- 002-組件通信-自定義事件深入
- 003-組件通信-v-model深入
- 004-組件通信-sync屬性修飾符
- 005-組件通信-
- 006-組件通信-
- 007-組件通信-混入mixin
- 008-組件通信-作用域插槽
- 009-后臺(tái)管理系統(tǒng)項(xiàng)目-后臺(tái)管理系統(tǒng)項(xiàng)目簡(jiǎn)介
- 010-后臺(tái)管理系統(tǒng)-后臺(tái)管理系統(tǒng)模板介紹
- 011-后臺(tái)管理系統(tǒng)-登錄業(yè)務(wù)完成
- 012-后臺(tái)管理系統(tǒng)-退出登錄
- 013-后臺(tái)管理系統(tǒng)-路由的搭建
- 014-后臺(tái)管理系統(tǒng)-品牌管理靜態(tài)組件
- 015-后臺(tái)管理系統(tǒng)-品牌列表展示
- 016-后臺(tái)管理系統(tǒng)-添加品牌與修改品牌靜態(tài)完成
- 017-后臺(tái)管理系統(tǒng)-添加品牌完成
- 018-后臺(tái)管理系統(tǒng)-修改品牌完成
- 019-后臺(tái)管理系統(tǒng)-品牌的表單驗(yàn)證(自定義校驗(yàn)規(guī)則)
- 020-后臺(tái)管理系統(tǒng)-刪除品牌操作
- 021-后臺(tái)管理系統(tǒng)-商品管理之三級(jí)聯(lián)動(dòng)靜態(tài)組件
- 022-后臺(tái)管理系統(tǒng)-三級(jí)聯(lián)動(dòng)動(dòng)態(tài)展示
- 023-后臺(tái)管理系統(tǒng)-三級(jí)聯(lián)動(dòng)完成
- 024-后臺(tái)管理系統(tǒng)-平臺(tái)屬性管理動(dòng)態(tài)展示屬性
- 025-后臺(tái)管理系統(tǒng)-平臺(tái)屬性之添加屬性與修改屬性靜態(tài)完成
- 026-后臺(tái)管理系統(tǒng)-收集屬性名的操作
- 027-后臺(tái)管理-收集屬性值操作
- 028-后臺(tái)管理系統(tǒng)-解決返回按鈕數(shù)據(jù)回顯問(wèn)題
- 029-后臺(tái)管理系統(tǒng)-修改屬性操作
- 030-后臺(tái)管理系統(tǒng)-查看模式與修改模式切換
- 031-后臺(tái)管理系統(tǒng)-查看模式與編輯模式注意事項(xiàng)
- 032-后臺(tái)管理系統(tǒng)-修改屬性的查看與編輯模式切換
- 033-后臺(tái)管理系統(tǒng)-表單元素自動(dòng)聚焦的實(shí)現(xiàn)
- 034-后臺(tái)管理系統(tǒng)-刪除屬性值的操作
- 035-后臺(tái)管理系統(tǒng)-保存操作
- 036-后臺(tái)管理系統(tǒng)-按鈕與三級(jí)聯(lián)動(dòng)的可操作性
- 037-后臺(tái)管理系統(tǒng)-SPU管理模塊業(yè)務(wù)介紹
- 038-后臺(tái)管理系統(tǒng)-SPU管理模塊靜態(tài)
- 039-后臺(tái)管理系統(tǒng)-動(dòng)態(tài)展示SPU列表
- 040-后臺(tái)管理系統(tǒng)-Spu管理內(nèi)容的切換
- 041-后臺(tái)管理系統(tǒng)-SpuForm靜態(tài)組件完成
- 042-后臺(tái)管理系統(tǒng)-SpuForm請(qǐng)求業(yè)務(wù)得分析
- 043-后臺(tái)管理系統(tǒng)-獲取SpuForm數(shù)據(jù)
- 044-后臺(tái)管理系統(tǒng)-SpuForm組件數(shù)據(jù)展示與收集數(shù)據(jù)
- 045-后臺(tái)管理系統(tǒng)-SpuForm銷售屬性的數(shù)據(jù)展示
- 046-后臺(tái)管理系統(tǒng)-完成SpuForm照片墻數(shù)據(jù)的收集
- 047-后臺(tái)管理系統(tǒng)-銷售屬性的添加的操作
- 048-后臺(tái)管理系統(tǒng)-銷售屬性值展示與收集
- 049-后臺(tái)管理系統(tǒng)-刪除銷售屬性與屬性值操作
- 050-后臺(tái)管理系統(tǒng)-完成修改Spu的保存操作
- 051-后臺(tái)管理系統(tǒng)-完成添加SPU的操作
- 052-后臺(tái)管理系統(tǒng)-刪除SPU的操作
- 053-后臺(tái)管理系統(tǒng)-完成SKU靜態(tài)組件
- 054-后臺(tái)管理系統(tǒng)-獲取SkuForm數(shù)據(jù)
- 055-后臺(tái)管理系統(tǒng)-展示SKU與收集SKU的數(shù)據(jù)
- 056-后臺(tái)管理系統(tǒng)-添加SKU圖片列表數(shù)據(jù)的展示與收集
- 057-后臺(tái)管理系統(tǒng)-完成添加SKU保存操作
- 058-后臺(tái)管理系統(tǒng)-SKU列表的展示
- 059-后臺(tái)管理系統(tǒng)-loading效果
- 060-后臺(tái)管理系統(tǒng)-sku模塊數(shù)據(jù)展示與分頁(yè)功能
- 061-尚品匯-SKU上架與下架操作
- 062-后臺(tái)管理系統(tǒng)-SKU詳情查看完成
- 063-后臺(tái)管理系統(tǒng)-深度選擇器
- 064-后臺(tái)管理系統(tǒng)-數(shù)據(jù)可視化簡(jiǎn)介
- 065-后臺(tái)管理系統(tǒng)-canvas繪制線段
- 066-后臺(tái)管理系統(tǒng)-canvas繪制矩形
- 067-后臺(tái)管理系統(tǒng)-繪制圓形
- 068-后臺(tái)管理系統(tǒng)-畫(huà)布清除與繪制文字
- 069-后臺(tái)管理系統(tǒng)-繪制柱狀圖
- 070-后臺(tái)管理系統(tǒng)-svg基本使用
- 071-后臺(tái)管理系統(tǒng)-echarts基本使用
- 072-上硅谷-后臺(tái)管理系統(tǒng)-echarts展示多個(gè)圖表
- 073-后臺(tái)管理系統(tǒng)-一個(gè)容器顯示多個(gè)圖表
- 074-后臺(tái)管理系統(tǒng)-echart中數(shù)據(jù)集dataset使用
- 075-后臺(tái)管理系統(tǒng)-echarts內(nèi)置組件使用
- 076-后臺(tái)管理系統(tǒng)-echarts坐標(biāo)體系
- 077-后臺(tái)管理系統(tǒng)-Home首頁(yè)Card靜態(tài)組件
- 078-后臺(tái)管理系統(tǒng)-折線圖完成
- 079-后臺(tái)管理系統(tǒng)-柱狀圖和進(jìn)度條完成
- 080-后臺(tái)管理系統(tǒng)-sale靜態(tài)組件-上
- 081-后臺(tái)管理系統(tǒng)-sale靜態(tài)組件-中
- 082-后臺(tái)管理系統(tǒng)-sale組件完畢
- 083-后臺(tái)管理系統(tǒng)-observe靜態(tài)組件
- 084-后臺(tái)管理系統(tǒng)-動(dòng)態(tài)展示mock數(shù)據(jù)
- 085-后臺(tái)管理系統(tǒng)-權(quán)限管理模塊介紹
- 086-后臺(tái)管理系統(tǒng)-權(quán)限管理模塊的串講
- 087-后臺(tái)管理系統(tǒng)-菜單&按鈕權(quán)限
前端兩個(gè)比較重要的框架就是 Vue 和 React 了,Vue 基本是屬于必須技能了,就算是后端開(kāi)發(fā),也可以了解一下。
Vue 3 項(xiàng)目實(shí)戰(zhàn)總結(jié)
作為今年前端圈中最大的新聞之一,vue 3 的正式版的發(fā)布引起了幾乎所有前端 er 的圍觀。步入 2021 年,我開(kāi)始在項(xiàng)目中使用 vue 3 進(jìn)行開(kāi)發(fā)。以下是我使用 vue 3 一個(gè)月后的一些經(jīng)驗(yàn)總結(jié)以及看法。
開(kāi)發(fā)環(huán)境方面
一般我們使用 vue 3 都是使用 vue 官方的腳手架新建項(xiàng)目,要么是 vue-cli 或者 vite。考慮到 vite 是新出的東西,兼容性方面還有待檢測(cè),于是我使用的是 vue-cli 來(lái)新建項(xiàng)目。
vue.config.js 的 externals 設(shè)置
作為一家小公司的前端工程師,我覺(jué)得 externals 這一個(gè)設(shè)置幾乎是整個(gè)開(kāi)發(fā)環(huán)境中最重要的東西。
首先簡(jiǎn)單介紹一下 externals 這個(gè)設(shè)置的作用。
Externals 是來(lái)自于 webpack 的配置項(xiàng),主要作用是提供了「從輸出的 bundle 中排除依賴」的方法。簡(jiǎn)單舉個(gè)例子就是,假如有個(gè)幾個(gè)項(xiàng)目都使用到了 axios,那么如果不使用 externals,每個(gè)項(xiàng)目都會(huì)打包一份 axios 到 ventor 中。使用了 externals 之后,可以把 axios 進(jìn)行外部引入,而 axios 的庫(kù)文件可以用第三方 cdn 或者放到統(tǒng)一的 cdn 服務(wù)器上面。
配置方法十分簡(jiǎn)單:
const externals = {
jquery: "jQuery",
};
module.exports = {
configureWebpack: (config) => {
Object.assign(config, {
externals,
});
},
};
這里要打開(kāi) jquery.min.js 的查看 jquery 暴露的全局名稱,jquery 的是 jQuery,然后在 index.html 中使用 script 引入就可以了:
src="https://code.jquery.com/jquery-3.1.0.js"
integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
crossorigin="anonymous">
Externals 為什么如此重要,我認(rèn)為有以下幾個(gè)原因:
節(jié)省服務(wù)器空間,減少項(xiàng)目之間的代碼重復(fù)
充分使用 cdn 服務(wù)器
減少開(kāi)發(fā)過(guò)程中,編譯的時(shí)間
開(kāi)發(fā)過(guò)程中的模擬數(shù)據(jù)
模擬數(shù)據(jù)在前端開(kāi)發(fā)中經(jīng)常用到,在后端同事沒(méi)有完成接口的時(shí)候,前端需要自己模擬后端返回?cái)?shù)據(jù),提高工作效率。
目前我接觸到的模擬數(shù)據(jù)方法有幾個(gè):
Mock.js:
Mock.js 應(yīng)該算最常用的模擬數(shù)據(jù)庫(kù)了,通過(guò)簡(jiǎn)單配置即可模擬接口數(shù)據(jù)。優(yōu)點(diǎn)在于配置方便快捷,功能相對(duì)齊全。缺點(diǎn)是維護(hù) mock.js 的人不多,很多代碼已經(jīng)是幾年前的代碼
Postman:
Postman 中有自帶 mock 的功能,配置也非常簡(jiǎn)單,而且不需要在項(xiàng)目中引入任何額外的庫(kù)。而這個(gè)方法的問(wèn)題是 Postman mock 的原理是把配置的接口上傳到 postman 的服務(wù)器,很多公司的項(xiàng)目不希望自己的接口數(shù)據(jù)被別人知道,安全性不足 自建 json 文件:自己新建接口返回值對(duì)應(yīng)的 json 文件,代碼中判斷是開(kāi)發(fā)模式還是生產(chǎn)來(lái)切換。好處是所有的數(shù)據(jù)都能自己配置,不受其他庫(kù)和平臺(tái)的約束。不足是需要自己寫(xiě)代碼,不夠簡(jiǎn)便
最后一個(gè)是我一直在使用的方法,因?yàn)?vue cli 內(nèi)部是使用 webpack dev server,而 webpack dev server 使用 express,利用 webpack 的 proxy 功能搭配上 express 可以自建一個(gè) api 服務(wù)器,具體操作如下:
使用 before 調(diào)用內(nèi)部 express 的 app 實(shí)例
const { setApi } = require('./mock/api');
// vue.config.js
devServer: {
open: process.platform === 'darwin',
host: '0.0.0.0',
port: 3000,
https: false,
disableHostCheck: true,
before: (app) => {
setApi(app)
}
}
使用 app 實(shí)例創(chuàng)建 api 服務(wù)器(可以加入 swagger 等等的庫(kù),增加 api 服務(wù)器的用戶體驗(yàn)):
// ./mock/api.js
const swaggerUi = require("swagger-ui-express");
const submit = require("./submit");
const setApi = (app) => {
const apiData = {
api: [...cj, ...submit, ...question, ...vote],
};
const swaggerDocument = {
swagger: "2.0",
paths: {
"/pets": {},
},
};
apiData.api.forEach((api) => {
app[api.type](`/api${api.paths}`, (req, res) => {
res.json(api.responses);
});
swaggerDocument.paths[`/api${api.paths}`] = {
[api.type]: {
tags: [api.tags],
responses: {
[api.responses.statusCode]: {
description: `successful operation ${JSON.stringify(
api.responses
)}`,
},
},
},
};
});
app.use(
"/api/docs",
swaggerUi.serve,
swaggerUi.setup(swaggerDocument, {
swaggerOptions: {
validatorUrl: null,
},
})
);
};
module.exports = { setApi };
// ./mock/submit.js
module.exports = [{
type: "post",
paths: "/submit",
tags: "submit",
responses: {
statusCode: "200",
data: "",
msg: "提交成功!",
},
}
]
最終效果是請(qǐng)求 http://ip地址/api/接口名稱 可以請(qǐng)求數(shù)據(jù),請(qǐng)求 http://ip地址/api/docs ,可以看到自定義的接口文檔
圖片
模塊導(dǎo)入
Vue 3 當(dāng)中的模塊導(dǎo)入,其實(shí)跟 vue 2 區(qū)別不大,但是因?yàn)?vue 3 使用了 typescript,所以涉及到 typescript 模塊的一些知識(shí)。
搭配 externals 的模塊導(dǎo)入
當(dāng)我們使用前面說(shuō)到的 externals 的時(shí)候,原則上來(lái)說(shuō)我們不再需要去安裝已經(jīng)設(shè)置了 externals 的模塊。正如上面的例子:
src="https://code.jquery.com/jquery-3.1.0.js"
integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
crossorigin="anonymous">
Script 引入了 jquery 之后,我們不需要再 npm i jquery。然而由于我們一般會(huì)使用 eslint 進(jìn)行代碼格式檢驗(yàn),如果我們不安裝 jquery 的話,eslint 會(huì)報(bào)錯(cuò)。這個(gè)時(shí)候,使用 javascript 開(kāi)發(fā)的話,我們需要配置一下 eslint 規(guī)則,會(huì)把 jquery 設(shè)置成 core-modules:
// .eslintrc.js
settings: {
'import/core-modules': ['jquery'],
}
但是如果是用 typescript 的話,設(shè)置了 core-modules 還不行,因?yàn)榫庉嬈鳎╲scode)沒(méi)有找到對(duì)應(yīng)的 d.ts 文件,所以就算 eslint 不報(bào)錯(cuò),開(kāi)發(fā)起來(lái)也沒(méi)有 typescript 的提示。這時(shí)候,我的解決辦法是,依舊使用 npm i 安裝對(duì)應(yīng)依賴的聲明文件。如果庫(kù)聲明文件包含在庫(kù)里面,則直接安裝依賴。
這樣處理雖然 node_modules 會(huì)變大,但是編譯的時(shí)候 webpack 是不會(huì)把 node_modules 中的庫(kù)打包進(jìn)項(xiàng)目中。
