一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Vue3入門:Vite創(chuàng)建項(xiàng)目和使用

 F2967527 2023-10-18 發(fā)布于天津

圖片

圖片

前言


vite是下一代前端開(kāi)發(fā)與構(gòu)建工具,目前官方推薦使用vite來(lái)構(gòu)建項(xiàng)目。下面我們來(lái)看看如何創(chuàng)建vue3項(xiàng)目。

圖片

創(chuàng)建項(xiàng)目


官方提供了多種創(chuàng)建命令,如下:

npm init vite@latest
yarn create vite
pnpm create vite

根據(jù)自己的情況選擇合適的命令即可,我使用的是pnpm,所以:

pnpm create vite

然后會(huì)讓給你輸入一個(gè)項(xiàng)目名稱。再選擇一個(gè)framework,因?yàn)槲覀儎?chuàng)建vue3項(xiàng)目,所以選擇vue即可。再選擇代碼語(yǔ)言,我習(xí)慣使用JavaScript。如下:

? Project name: … logistics-system? Select a framework: ? Vue? Select a variant: ? JavaScript

項(xiàng)目創(chuàng)建完成會(huì)提示你后續(xù)需要做的工作,如下:

  cd logistics-system  pnpm install  pnpm run dev

運(yùn)行項(xiàng)目

根據(jù)提示操作即可,先進(jìn)入項(xiàng)目,然后執(zhí)行

pnpm install

會(huì)自動(dòng)安裝所有依賴,安裝完成后執(zhí)行pnpm run devpnpm dev就可以運(yùn)行項(xiàng)目了,這時(shí)候可以看到:

  ?  Local:   http://localhost:5173/
? Network: use --host to expose
? press h to show help

說(shuō)明項(xiàng)目成功運(yùn)行起來(lái)了,訪問(wèn)http://localhost:5173/ 即可看到默認(rèn)頁(yè)面了。


圖片

配置項(xiàng)目


成功創(chuàng)建并運(yùn)行項(xiàng)目后,下面我們就需要進(jìn)行一些配置,這樣方便我們后續(xù)開(kāi)發(fā)。


setting.json

vscode可以在項(xiàng)目配置個(gè)性的設(shè)定,首先需要?jiǎng)?chuàng)建setting.json文件,在vscode中點(diǎn)擊左下角的設(shè)置按鈕,選擇命令面板(或者直接使用快捷鍵 shift+command+p),然后搜索“setting.json”,選擇“Open Workspace Setting(JSON)”即可。

然后就可以看到在項(xiàng)目的.vscode目錄下新建了一個(gè)setting.json文件,當(dāng)然這個(gè)是個(gè)空文件,我們按照相關(guān)規(guī)則進(jìn)行配置即可,下面是一個(gè)示例:

{ 'files.autoSave': 'off', 'git.autofetch': true, 'files.associations': { '*.cjson': 'jsonc', '*.wxss': 'css', '*.wxs': 'javascript', '*.wpy': 'javascriptreact', '*.py': 'python' }, 'emmet.includeLanguages': { 'wxml': 'html' }, 'minapp-vscode.disableAutoConfig': true, 'git.confirmSync': false, 'search.actionsPosition': 'right', 'search.exclude': { '**/dist': true }, '[javascript]': { 'editor.defaultFormatter': 'esbenp.prettier-vscode' }, 'editor.suggestSelection': 'first', 'files.exclude': { '**/node_modules': true, '*/node_modules': true }, 'sync.gist': '686f9b0e863088a613cdc96e5bc81c55', '[less]': { 'editor.defaultFormatter': 'esbenp.prettier-vscode' }, '[vue]': { 'editor.defaultFormatter': 'esbenp.prettier-vscode' }, 'beautify.language': { 'js': { 'type': ['javascript', 'json', 'jsonc'], 'filename': ['.jshintrc', '.jsbeautifyrc'] }, 'css': ['css', 'less', 'scss'], 'html': ['htm', 'html'] }, 'editor.tabSize': 2, 'sync.autoUpload': true, 'sync.forceUpload': false, 'sync.forceDownload': false, 'sync.autoDownload': true, 'beautify.config': '', 'prettier.trailingComma': 'none', 'prettier.arrowParens': 'avoid', 'editor.fontSize': 13, // 'workbench.colorTheme': 'Visual Studio Dark', 'editor.accessibilitySupport': 'on', 'diffEditor.ignoreTrimWhitespace': false, 'editor.quickSuggestions': { 'strings': true }, 'editor.rulers': [], '[html]': { 'editor.defaultFormatter': 'vscode.html-language-features' }, 'extensions.closeExtensionDetailsOnViewChange': true, '[javascriptreact]': { 'editor.defaultFormatter': 'svipas.prettier-plus' }, '[jsonc]': { 'editor.defaultFormatter': 'esbenp.prettier-vscode' }, '[json]': { 'editor.defaultFormatter': 'vscode.json-language-features' }, '[typescript]': { 'editor.defaultFormatter': 'esbenp.prettier-vscode' }, '[typescriptreact]': { 'editor.defaultFormatter': 'esbenp.prettier-vscode' }, 'eslint.format.enable': true, 'editor.formatOnSave': true, 'prettier.singleQuote': false, 'prettier.semi': true}

注意:這里使用了格式化配置,需要先在vscode中安裝插件prettier。這樣當(dāng)編輯文件后保存的時(shí)候就會(huì)自動(dòng)進(jìn)行格式化。


src別名

在vite.config.js中為src目錄配置一個(gè)別名,如下:

import { defineConfig } from 'vite';import vue from '@vitejs/plugin-vue';import path from 'path';...
// https://v/config/export default defineConfig({ resolve: { alias: { '@': path.resolve(__dirname, 'src') } }, plugins: [vue()] ...});

這樣在import的時(shí)候,就可以直接使用“@/...”了。

但是開(kāi)發(fā)過(guò)程中會(huì)發(fā)現(xiàn)輸入'@'并沒(méi)有智能補(bǔ)全的提示,還需要在jsconfig.json(沒(méi)有則創(chuàng)建一個(gè))中配置一下,如下:

{ 'compilerOptions': { 'target': 'es5', 'module': 'esnext', 'baseUrl': './', 'jsx': 'preserve', 'moduleResolution': 'node', 'emitDecoratorMetadata': true, 'experimentalDecorators': true, 'paths': { '@/*': ['./src/*'] }, 'lib': ['esnext', 'dom', 'dom.iterable', 'scripthost'] }, 'exclude': ['node_modules']}

在paths中配置一下,然后需要重啟一下vscode,否則無(wú)法生效。

圖片

開(kāi)啟https


在vite.config.js中可以進(jìn)行服務(wù)器相關(guān)配置,比如端口、代理、開(kāi)啟https,如下:

import { defineConfig } from 'vite';import vue from '@vitejs/plugin-vue';import path from 'path';

export default defineConfig({ resolve: { ... }, plugins: [ vue() ], base: '/', // 打包路徑 server: { host: '0.0.0.0', port: 3300, // 服務(wù)端口號(hào) open: true, // 服務(wù)啟動(dòng)時(shí)是否自動(dòng)打開(kāi)瀏覽器 cors: true, // 允許跨域 https: true // proxy: { // '/api/': { // target: 'https://', // ws: true, // changeOrigin: true // } // } }});

這樣當(dāng)我們執(zhí)行pnpm dev開(kāi)啟服務(wù)后會(huì)自動(dòng)打開(kāi)瀏覽器,并且以https的方式訪問(wèn)。

但是這里有一個(gè)問(wèn)題,在vite3之后單獨(dú)開(kāi)啟https并不夠,這時(shí)候運(yùn)行服務(wù)打開(kāi)后會(huì)發(fā)現(xiàn)打不開(kāi)頁(yè)面,提示“協(xié)議不受支持”。官方文檔這樣說(shuō)的:

server.https?

  • 類型:  boolean | https.ServerOptions

啟用 TLS + HTTP/2。注意:當(dāng) server.proxy 選項(xiàng) 也被使用時(shí),將會(huì)僅使用 TLS。

這個(gè)值也可以是一個(gè)傳遞給 https.createServer() 的 選項(xiàng)對(duì)象。

需要一個(gè)合法可用的證書。對(duì)基本使用的配置需求來(lái)說(shuō),你可以添加 @vitejs/plugin-basic-ssl 到項(xiàng)目插件中,它會(huì)自動(dòng)創(chuàng)建和緩存一個(gè)自簽名的證書。但我們推薦你創(chuàng)建和使用你自己的證書。

所以還需要安裝一個(gè)@vitejs/plugin-basic-ssl插件,執(zhí)行命令

pnpm install @vitejs/plugin-basic-ssl -D

在開(kāi)發(fā)環(huán)境使用即可,線上有正式簽名。

然后在vite.config.js中進(jìn)行配置,如下:

...import basicSsl from '@vitejs/plugin-basic-ssl';
export default defineConfig({ resolve: { ... }, plugins: [ ... vue(), basicSsl() ], base: '/', // 打包路徑 server: { host: '0.0.0.0', port: 3300, // 服務(wù)端口號(hào) open: true, // 服務(wù)啟動(dòng)時(shí)是否自動(dòng)打開(kāi)瀏覽器 cors: true, // 允許跨域 https: true // proxy: { // '/api/': { // target: 'https://', // ws: true, // changeOrigin: true // } // } }, ...});

這樣就可以正常訪問(wèn)了。

圖片

代理


上面提到可以在vite.config.js配置代理,通過(guò)代理可以解決跨越請(qǐng)求的問(wèn)題。

比如我們?cè)诒緳C(jī)(localhost)上調(diào)試,請(qǐng)求服務(wù)端接口的時(shí)候因?yàn)閔ost不同導(dǎo)致跨域,這樣就導(dǎo)致cookie帶不過(guò)去,但是服務(wù)端接口又是通過(guò)cookie來(lái)檢驗(yàn)用戶的,所以接口請(qǐng)求不成功。

類似的情況就可以用代理來(lái)解決,以axios為例,具體怎么使用這里就不細(xì)說(shuō)了,這里只關(guān)注請(qǐng)求接口的代碼,如下:

export async function getUserInfo() { return request({ url: 'https://xxx./userInfo', method: 'GET' }).catch(e => e);}

一個(gè)請(qǐng)求用戶信息的接口,本地調(diào)試cookie帶不過(guò)去,導(dǎo)致獲取不到數(shù)據(jù)。

我們先設(shè)置一個(gè)代理,如下:

...
export default defineConfig({ resolve: { ... }, plugins: [ ... ], base: '/', // 打包路徑 server: { host: '0.0.0.0', port: 3300, open: true, cors: true, https: true proxy: { //設(shè)置代理 '/api': { target: 'https://xxx.', changeOrigin: true, rewrite: path => path.replace(/^\/api/, '') } } }, ...});

代理的target就是原服務(wù)接口的host,這里我們將“/api”路徑代理到原接口,簡(jiǎn)單來(lái)說(shuō)就是將 https://localhost:3300/api/xxx代理到https://xxx./xxx

以上面用戶信息接口為例,就是將 https://localhost:3300/api/userInfo代理到https://xxx./userInfo

這里的'/api'是為了與前端頁(yè)面路徑進(jìn)行區(qū)分,所以在代理的時(shí)候需要通過(guò)rewrite去掉。

然后修改請(qǐng)求如下:

export async function getUserInfo() { return request({ url: '/api/userInfo', method: 'GET' }).catch(e => e);}

這樣請(qǐng)求端口的時(shí)候因?yàn)槭恰發(fā)ocalhost”,不跨域所以cookie正常,然后代理到原服務(wù)端接口就可以將cookie帶過(guò)去了。

代理還有另外一個(gè)作用,當(dāng)前端頁(yè)面是https的時(shí)候,如果服務(wù)端接口是http則無(wú)法請(qǐng)求,瀏覽器會(huì)限制。通過(guò)設(shè)置代理就可以正常進(jìn)行請(qǐng)求了。比如上面測(cè)試環(huán)境,就是將https://localhost:3300/apidev/xxx代理到http://dev./xxx

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美精品在线播放一区二区| 国语久精品在视频在线观看| 欧美久久一区二区精品| 国产亚洲精品岁国产微拍精品| 日本在线不卡高清欧美| 久久中文字人妻熟女小妇| 日韩成人动画在线观看| 久久精品国产在热亚洲| 国产对白老熟女正在播放| 日韩在线视频精品中文字幕| 欧美日韩中国性生活视频| 国产内射一级一片内射高清视频 | 国产成人午夜av一区二区| 日韩在线精品视频观看| 青青操成人免费在线视频| 视频在线观看色一区二区| 粉嫩国产一区二区三区在线| 中文字幕精品一区二区三| 国产日本欧美韩国在线| 丰满少妇被猛烈撞击在线视频| 欧美国产日本免费不卡| 成年人黄片大全在线观看| 国产精品一区二区传媒蜜臀| 精品女同在线一区二区| 国产精品内射视频免费| 五月天丁香亚洲综合网| 欧美中文字幕日韩精品| 精品日韩国产高清毛片| 亚洲午夜精品视频在线| 日韩在线视频精品视频| 国产精品丝袜一二三区| 夜色福利久久精品福利| 国产又粗又长又大的视频| 欧美日韩亚洲国产综合网| 国产在线观看不卡一区二区| 欧美不卡一区二区在线视频| 日本欧美在线一区二区三区| 国产一区二区三区不卡| 日本视频在线观看不卡| 国产又大又猛又粗又长又爽| 91福利视频日本免费看看|