最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3項(xiàng)目目錄結(jié)構(gòu)示例詳解

 更新時(shí)間:2023年02月03日 09:49:33   作者:仙說(shuō)  
更好的了解項(xiàng)目的目錄結(jié)構(gòu),能更好的去開(kāi)發(fā)項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于vue3項(xiàng)目目錄結(jié)構(gòu)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、vue3項(xiàng)目的目錄結(jié)構(gòu)詳解

  • node_modules:通過(guò) npm install 下載安裝的項(xiàng)目依賴包
  • public:存放靜態(tài)資源公共資源,不會(huì)被壓縮合并
    • —3DModel:存放.glb3D模型
    • —favicon.ico:網(wǎng)站圖標(biāo)
    • —index.html:首頁(yè)入口.html文件
  • src:項(xiàng)目開(kāi)發(fā)主要文件夾
    • —api
    • —assets:靜態(tài)文件,存放圖片
    • —components:存放組件
    • —store:與vuex相關(guān)
    • —styles:存放樣式
    • —utils
    • —views:界面組件
    • —App.vue:根組件
    • —main.js:入口文件
    • —router.js:存放路由,實(shí)現(xiàn)界面跳轉(zhuǎn)
  • .gitignore:用來(lái)配置那些文件不歸git管理
  • package.json:項(xiàng)目配置和包管理文件(項(xiàng)目依賴和技術(shù))
  • README.md:說(shuō)明文檔,主要看項(xiàng)目運(yùn)行的命令
  • vue.config.js:項(xiàng)目配置信息:跨域proxy代理

二、部分主要文件詳解

1、index.html

<%= BASE_URL %>

<%= htmlWebpackPlugin.options.title %>

將vue實(shí)例掛載到id為#app的dom上

<!DOCTYPE html>
<html lang="">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <link rel="icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow" >
  <link rel="stylesheet"  rel="external nofollow" >
  <title>
    <%= htmlWebpackPlugin.options.title %>
  </title>
</head>

<body>
  <noscript>
    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
        Please enable it to continue.</strong>
  </noscript>
  <!-- 將vue實(shí)例掛載到id為#app的dom上 -->
  <div id="app"></div>
  <!-- built files will be auto injected -->
  <style>
   	/* 公共樣式可以寫(xiě)在這里 */
  </style>
</body>
</html>

2、main.js(main.ts)

導(dǎo)入組件、路由等

vue3使用createApp這個(gè)api返回一個(gè)應(yīng)用實(shí)例,并且可以鏈?zhǔn)秸{(diào)用;這也是與vue2.0不同之處,vue2.0是通過(guò)new Vue() 來(lái)創(chuàng)建一個(gè)vue實(shí)例的

createApp(App).use(store).use(router).mount(‘#app’);

import {
  createApp
} from 'vue'
import App from './App.vue'
import router from './router'
import store from './store/index'
import * as Api from './api/index.js'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'dayjs/locale/zh-cn' //中文
import locale from 'element-plus/lib/locale/lang/zh-cn' //中文
import * as ElIcons from '@element-plus/icons-vue'
import permission from '@/constants/permission';
import UUID from 'vue-uuid';
import "vis/dist/vis.css";

var cesium = require('cesium/Cesium.js');
var widgets = require('cesium//Widgets/widgets.css');

// 創(chuàng)建實(shí)例
const app = createApp(App);

// 全局變量、屬性
app.config.globalProperties.$api = Api
app.config.globalProperties.Cesium = cesium
app.config.globalProperties.Widgets = widgets

// 添加widow對(duì)象
window.Cesium = cesium;

// 統(tǒng)一注冊(cè)Icon圖標(biāo)
for (const iconName in ElIcons) {
  app.component(iconName, ElIcons[iconName])
}

// 自定義指令實(shí)現(xiàn)權(quán)限控制
app.directive("permission", permission)

// app.use() 注冊(cè)全局組件
app.use(ElementPlus, {
  locale
});
app.use(store);
app.use(router);
app.use(UUID);

// 應(yīng)用實(shí)例掛載到#app中,一定要放在最后面
app.mount('#app');

3. package.json

a. scripts

可以使用npm run serve或yarn serve查看項(xiàng)目效果,就是因?yàn)橛衟ackage.json中的scripts起到了作用。

能使用vue-cli-service是因?yàn)関ue-cli自動(dòng)安裝了cli-service這個(gè)工具

  • serve : 在開(kāi)發(fā)時(shí)用于查看效果的命令,視頻中演示看一下效果
  • build : 打包打碼,一般用于生產(chǎn)環(huán)境中使用
  • lint : 檢查代碼中的編寫(xiě)規(guī)范
  • b. dependencies 生產(chǎn)環(huán)境 devDependencies 開(kāi)發(fā)環(huán)境

這兩個(gè)都是用來(lái)記錄安裝包信息的,

生產(chǎn)環(huán)境:就是代碼已經(jīng)上線,放到了正式的服務(wù)器上,公司開(kāi)始運(yùn)營(yíng)去賺錢(qián)的代碼。

開(kāi)發(fā)環(huán)境: 作為一個(gè)程序員,每天作的事情都是在開(kāi)發(fā)環(huán)境中,編寫(xiě)代碼、測(cè)試代碼、修改 Bug。也就說(shuō)這些代碼沒(méi)有上線。

dependencies下的包是生產(chǎn)環(huán)境中必須用到的,當(dāng)然開(kāi)發(fā)環(huán)境也需要。devDependencies是只有開(kāi)發(fā)環(huán)境中使用的,上線后這些包就沒(méi)用了,打包后也不會(huì)打包進(jìn)去的代碼。

  "name": "simulator",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@element-plus/icons-vue": "^1.1.4",
    "axios": "^0.26.1",
    "cesium": "*",
    "core-js": "^3.8.3",
    "element-plus": "^2.1.2",
    "file-loader": "^6.2.0",
    "js-md5": "^0.7.3",
    "node-sass": "^7.0.1",
    "nprogress": "^0.2.0",
    "pdfjs-dist": "^2.4.456",
    "sass-loader": "^12.6.0",
    "url-loader": "^4.1.1",
    "vis": "^4.21.0-EOL",
    "vue": "^3.2.13",
    "vue-pdf": "^4.3.0",
    "vue-router": "^4.0.14",
    "vue-uuid": "^3.0.0",
    "vue3-pdf": "^4.2.6",
    "vuedraggable": "^4.1.0",
    "vuex": "^4.0.2"
  },
  "devDependencies": {
    "@babel/core": "^7.12.16",
    "@babel/eslint-parser": "^7.12.16",
    "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
    "@babel/plugin-proposal-optional-chaining": "^7.16.7",
    "@babel/plugin-proposal-private-methods": "^7.16.11",
    "@types/pdfjs-dist": "^2.10.378",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "copy-webpack-plugin": "^5.1.2",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/vue3-essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "@babel/eslint-parser"
    },
    "rules": {
      "vue/multi-word-component-names": "off",
      "no-unused-vars": "off",
      "no-undef": "off"
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead",
    "not ie 11"
  ]
}

三、其他說(shuō)明

1. node版本錯(cuò)誤

注意,不同的node版本,安裝依賴包可能會(huì)報(bào)錯(cuò)

在vue3項(xiàng)目中,我使用的node版本是 v14.15.1

推薦nvm對(duì)不同的node版本進(jìn)行管理

nvm :node版本管理器

2. 如何調(diào)用全局屬性

如果在其他.vue文件中你使用的是<script setup>,你會(huì)發(fā)現(xiàn)直接使用this.$api會(huì)報(bào)錯(cuò),

這里提供一個(gè)新的api:getCurrentInstance 獲取vue當(dāng)前實(shí)例,掛載在全局上的東西都需要通過(guò)實(shí)例去拿

未親測(cè)過(guò),感興趣的可以親測(cè)過(guò)告訴我可行性~

import { getCurrentInstance } from "vue";
// 拿到實(shí)例
const _this = getCurrentInstance ();
// 在實(shí)例中有個(gè)ctx上下文
_this.ctx.$api

我直接用的是<script>即vue2.0寫(xiě)法編寫(xiě)js代碼,則可以直接使用this.$api

3. vue文件中應(yīng)用vue3.0的api

vue3.0中用setup去包含了所有的鉤子等,所有使用的鉤子都需要提前導(dǎo)入

總結(jié)

到此這篇關(guān)于vue3項(xiàng)目目錄結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)vue3項(xiàng)目目錄結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2中前端實(shí)現(xiàn)語(yǔ)音播報(bào)的詳細(xì)過(guò)程

    vue2中前端實(shí)現(xiàn)語(yǔ)音播報(bào)的詳細(xì)過(guò)程

    vue中語(yǔ)音播報(bào),目前本人寫(xiě)的過(guò)程中,遇到了兩種情況,第一種是后端直接返回一個(gè)mp3的播放url,第二種就是播報(bào)的內(nèi)容需要前端自己拼接的,關(guān)于兩種方法,我都說(shuō)一下如何實(shí)現(xiàn),感興趣的朋友一起看看吧
    2024-07-07
  • Vue富文本插件(quill-editor)的使用及說(shuō)明

    Vue富文本插件(quill-editor)的使用及說(shuō)明

    這篇文章主要介紹了Vue富文本插件(quill-editor)的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-02-02
  • Vue后臺(tái)實(shí)現(xiàn)點(diǎn)擊圖片放大功能的示例代碼

    Vue后臺(tái)實(shí)現(xiàn)點(diǎn)擊圖片放大功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Vue實(shí)現(xiàn)點(diǎn)擊圖片放大功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-12-12
  • 詳解Vue3中useLocalStorage的用法

    詳解Vue3中useLocalStorage的用法

    這篇文章主要為大家詳細(xì)介紹了Vue3中useLocalStorage用法的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-10-10
  • vue2老項(xiàng)目vite升級(jí)改造過(guò)程記錄

    vue2老項(xiàng)目vite升級(jí)改造過(guò)程記錄

    目前vite主要默認(rèn)是支持給vue3使用的,并且如果使用官方的cli創(chuàng)建的項(xiàng)目一樣會(huì)默認(rèn)使用vue3去構(gòu)建項(xiàng)目,此時(shí)對(duì)于一些vue2的老項(xiàng)目就顯得不友好了,下面這篇文章主要給大家介紹了關(guān)于vue2老項(xiàng)目vite升級(jí)改造的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • vue 設(shè)置 input 為不可以編輯的實(shí)現(xiàn)方法

    vue 設(shè)置 input 為不可以編輯的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇vue 設(shè)置 input 為不可以編輯的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • vue 解決文本框被鍵盤(pán)遮住的問(wèn)題

    vue 解決文本框被鍵盤(pán)遮住的問(wèn)題

    今天小編就為大家分享一篇vue 解決文本框被鍵盤(pán)遮住的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • JavaScript實(shí)現(xiàn)簡(jiǎn)單的圖片切換功能(實(shí)例代碼)

    JavaScript實(shí)現(xiàn)簡(jiǎn)單的圖片切換功能(實(shí)例代碼)

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單的圖片切換功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-04-04
  • Vue中封裝input組件的實(shí)例詳解

    Vue中封裝input組件的實(shí)例詳解

    這篇文章主要介紹了Vue中封裝input組件的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • Vue中設(shè)置登錄驗(yàn)證攔截功能的思路詳解

    Vue中設(shè)置登錄驗(yàn)證攔截功能的思路詳解

    今天在做vue和springboot交互的一個(gè)項(xiàng)目的時(shí)候,想要基于前端實(shí)現(xiàn)一些只有登錄驗(yàn)證之后才能訪問(wèn)某些頁(yè)面的操作,所以在這里總結(jié)一下實(shí)現(xiàn)該功能的一個(gè)解決方案
    2021-10-10

最新評(píng)論

海安县| 雅江县| 蓬安县| 福州市| 新沂市| 西乌珠穆沁旗| 柳河县| 互助| 延安市| 京山县| 丽江市| 邢台县| 广河县| 越西县| 江口县| 万安县| 洛南县| 武乡县| 大新县| 灵石县| 安平县| 江华| 禄丰县| 定日县| 浦县| 石家庄市| 安义县| 桦川县| 镇赉县| 宁陵县| 科技| 额济纳旗| 涟源市| 安顺市| 龙游县| 黑龙江省| 博湖县| 北川| 白城市| 麻城市| 盈江县|