Javaweb之前端工程化的詳細解析

3 前端工程化

3.1 前端工程化介紹

我們目前的前端開發中,當我們需要使用一些資源時,例如:vue.js,和axios.js文件,都是直接再工程中導入的,如下圖所示:

但是上述開發模式存在如下問題:

  • 每次開發都是從零開始,比較麻煩

  • 多個頁面中的組件共用性不好

  • js、圖片等資源沒有規范化的存儲目錄,沒有統一的標準,不方便維護

所以現在企業開發中更加講究前端工程化方式的開發,主要包括如下4個特點

  • 模塊化:將js和css等,做成一個個可復用模塊

  • 組件化:我們將UI組件,css樣式,js行為封裝成一個個的組件,便于管理

  • 規范化:我們提供一套標準的規范的目錄接口和編碼規范,所有開發人員遵循這套規范

  • 自動化:項目的構建,測試,部署全部都是自動完成

所以對于前端工程化,說白了,就是在企業級的前端項目開發中,把前端開發所需要的工具、技術、流程、經驗進行規范化和標準化。從而提升開發效率,降低開發難度等等。接下來我們就需要學習vue的官方提供的腳手架幫我們完成前端的工程化。

3.2 前端工程化入門

3.2.1 環境準備

我們的前端工程化是通過vue官方提供的腳手架Vue-cli來完成的,用于快速的生成一個Vue的項目模板。Vue-cli主要提供了如下功能:

  • 統一的目錄結構

  • 本地調試

  • 熱部署

  • 單元測試

  • 集成打包上線

我們需要運行Vue-cli,需要依賴NodeJS,NodeJS是前端工程化依賴的環境。所以我們需要先安裝NodeJS,然后才能安裝Vue-cli

  • NodeJS安裝和Vue-cli安裝

    詳細安裝步驟,請參考資料/NodeJS安裝文檔/NodeJS安裝文檔.md文件

3.2.2 Vue項目簡介

環境準備好了,接下來我們需要通過Vue-cli創建一個vue項目,然后再學習一下vue項目的目錄結構。Vue-cli提供了如下2種方式創建vue項目:

  • 命令行:直接通過命令行方式創建vue項目

    vue create vue-project01

  • 圖形化界面:通過命令先進入到圖形化界面,然后再進行vue工程的創建

    vue ui

    圖形化界面如下:

3.2.2.1 創建vue項目

此處我們通過第二種圖形化界面方式給大家演示。

首先,我們再桌面創建vue文件夾,然后雙擊進入文件夾,來到地址目錄,輸入cmd,然后進入到vue文件夾的cmd窗口界面,如下圖所示:

然后進入如下界面:

然后再當前目錄下,直接輸入命令vue ui進入到vue的圖形化界面,如下圖所示:

然后我門選擇創建按鈕,在vue文件夾下創建項目,如下圖所示:

然后來到如下界面,進行vue項目的創建

然后預設模板選擇手動,如下圖所示:

然后再功能頁面開啟路由功能,如下圖所示:

然后再配置頁面選擇語言版本和語法檢查規范,如下圖所示:

然后創建項目,進入如下界面:

最后我們只需要等待片刻,即可進入到創建創建成功的界面,如下圖所示:

到此,vue項目創建結束

3.2.2.2 vue項目目錄結構介紹

我們通過VS Code打開之前創建的vue文件夾,打開之后,呈現如下圖所示頁面:

vue項目的標準目錄結構以及目錄對應的解釋如下圖所示:

其中我們平時開發代碼就是在src目錄

3.2.2.3 運行vue項目

那么vue項目開發好了,我們應該怎么運行vue項目呢?主要提供了2種方式

  • 第一種方式:通過VS Code提供的圖形化界面 ,如下圖所示:(注意:NPM腳本窗口默認不顯示,可以參考本節的最后調試出來)

  • 點擊之后,我們等待片刻,即可運行,在終端界面中,我們發現項目是運行在本地服務的8080端口,我們直接通過瀏覽器打開地址
  • 最終瀏覽器打開后,呈現如下界面,表示項目運行成功
  • 其實此時訪問的是 src/App.vue這個根組件,此時我們打開這個組件,修改代碼:添加內容Vue
  • 只要我們保存更新的代碼,我們直接打開瀏覽器,不需要做任何刷新,發現頁面呈現內容發生了變化,如下圖所示:
  • 這就是我們vue項目的熱更新功能

    對于8080端口,經常被占用,所以我們可以去修改默認的8080端口。我們修改vue.config.js文件的內容,添加如下代碼:

    devServer:{port:7000
    }

    如下圖所示,然后我們關閉服務器,并且重新啟動,

重新啟動如下圖所示:

端口更改成功,可以通過瀏覽器訪問7000端口來訪問我們之前的項目

  • 第二種方式:命令行方式

    直接基于cmd命令窗口,在vue目錄下,執行輸入命令npm run serve即可,如下圖所示:

補充:NPM腳本窗口調試出來

第一步:通過設置/用戶設置/擴展/MPM更改NPM默認配置,如下圖所示

然后重啟VS Code,并且雙擊打開package.json文件,然后點擊資源管理器處的3個小點勾選npm腳本選項,如圖所示

然后就能都顯示NPM腳本小窗口了。

3.2.3 Vue項目開發流程

那么我們訪問的首頁是index.html,但是我們找到public/index.html文件,打開之后發現,里面沒有什么代碼,但是能夠呈現內容豐富的首頁:如下圖所示:

我們自習觀察發現,index.html的代碼很簡潔,但是瀏覽器所呈現的index.html內容卻很豐富,代碼和內容不匹配,所以vue是如何做到的呢?接下來我們學習一下vue項目的開發流程。

對于vue項目,index.html文件默認是引入了入口函數main.js文件,我們找到src/main.js文件,其代碼如下:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
?
Vue.config.productionTip = false
?
new Vue({router,render: h => h(App)
}).$mount('#app')
?

上述代碼中,包括如下幾個關鍵點:

  • import: 導入指定文件,并且重新起名。例如上述代碼import App from './App.vue'導入當前目錄下得App.vue并且起名為App

  • new Vue(): 創建vue對象

  • $mount('#app');將vue對象創建的dom對象掛在到id=app的這個標簽區域中,作用和之前學習的vue對象的le屬性一致。

  • router: 路由,詳細在后面的小節講解

  • render: 主要使用視圖的渲染的。

來到public/index.html中,我們刪除div的id=app屬性,打開瀏覽器,發現之前訪問的首頁一片空白,如下圖所示,這樣就證明了,我們main.js中通過代碼掛在到index.html的id=app的標簽區域的。

此時我們知道了vue創建的dom對象掛在到id=app的標簽區域,但是我們還是沒有解決最開始的問題:首頁內容如何呈現的?這就涉及到render中的App了,如下圖所示:

那么這個App對象怎么回事呢,我們打開App.vue,注意的是.vue結尾的都是vue組件。而vue的組件文件包含3個部分:

  • template: 模板部分,主要是HTML代碼,用來展示頁面主體結構的

  • script: js代碼區域,主要是通過js代碼來控制模板的數據來源和行為的

  • style: css樣式部分,主要通過css樣式控制模板的頁面效果得

如下圖所示就是一個vue組件的小案例:

此時我們可以打開App.vue,觀察App.vue的代碼,其中可以發現,App.vue組件的template部分內容,和我們瀏覽器訪問的首頁內容是一致的,如下圖所示:

接下來我們可以簡化模板部分內容,添加script部分的數據模型,刪除css樣式,完整代碼如下:

<template><div id="app">{{message}}</div>
</template>
?
<script>
export default {data(){return {"message":"hello world"}}
}
</script>
<style>
?
</style>

保存直接,回到瀏覽器,我們發現首頁展示效果發生了變化,如下圖所示:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167839.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167839.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167839.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git的使用:本地git下載、sshkey的添加、github倉庫創建及文件上傳

一、github創建賬號 即github注冊賬號&#xff0c;登錄github官網&#xff0c;根據提示注冊即可 github官網 二、git客戶端下載安裝 已有很多git下載安裝的博文了&#xff0c;在此就不贅述 三、sshkey的生成與添加 1、sshkey的生成以及查看 // sshkey的生成命令&#xff…

OSS+CDN的資費和安全

文章目錄 花費OSSCDNOSS CDN 安全OSS防盜鏈跨域設置CORS數據加密 CDN防盜鏈URL鑒權Cookie鑒權遠程鑒權IP黑白名單UA黑白名單 回源服務自定義私有參數IP黑白名單數據加密 花費 OSS 存儲費用 &#xff1a;0.12元/GB/月下行流量費用 &#xff1a;0.5元/GB請求費用 &#xff1a;…

java全局異常處理(springboot)

介紹&#xff1a; 在日常項目開發中&#xff0c;異常是常見的&#xff0c;但是如何更高效的處理好異常信息&#xff0c;讓我們能快速定位到BUG&#xff0c;是很重要的&#xff0c;不僅能夠提高我們的開發效率&#xff0c;還能讓你代碼看上去更舒服&#xff0c;SpringBoot的項目…

C語言你愛我么?(ZZULIOJ 1205:你愛我么?)

題目描述 LCY買個n束花準備送給她暗戀的女生&#xff0c;但是他不知道這個女生是否喜歡他。這時候一個算命先生告訴他讓他查花瓣數&#xff0c;第一個花瓣表示"愛"&#xff0c;第二個花瓣表示"不愛"&#xff0c;第三個花瓣表示"愛"..... 為了使最…

某60區塊鏈安全之未初始化的存儲指針實戰二學習記錄

系列文章目錄 文章目錄 系列文章目錄未初始化的存儲指針實戰二實驗目的實驗環境實驗工具實驗原理實驗內容實驗過程EXP利用 未初始化的存儲指針實戰二 實驗目的 學會使用python3的web3模塊 學會分析以太坊智能合約未初始化的存儲指針漏洞 找到合約漏洞進行分析并形成利用 實驗…

機器學習之自監督學習(四)MoCo系列翻譯與總結(二)

MoCo中相關工作的對比分析 去噪自動編碼器&#xff08;Denoising Autoencoder&#xff09;是一種用于學習數據表示的神經網絡模型。它的主要目標是通過去除輸入數據中的噪聲&#xff0c;學習到輸入數據的有用表示&#xff0c;從而提高模型對干凈數據的魯棒性。下面是對去噪自動…

Flink 常用物理分區算子(Physical Partitioning)

Flink 物理分區算子(Physical Partitioning) 在Flink中&#xff0c;常見的物理分區策略有&#xff1a;隨機分配(Random)、輪詢分配(Round-Robin)、重縮放(Rescale)和廣播(Broadcast)。 接下來&#xff0c;我們通過源碼和Demo分別了解每種物理分區算子的作用和區別。 (1) 隨機…

win10安裝pytorch(py39)

cuda≤11.6&#xff0c;觀察控制面板 觀察torch對應cuda版本 https://download.pytorch.org/whl/torch/ 安裝cuda11.6.0 CUDA Toolkit Archive | NVIDIA Developer cmd輸入nvcc -V 編輯國內鏡像源 .condarc anaconda prompt輸入 查看環境 conda env list 安裝py3.9…

uniapp視頻倍速播放插件,uniapp視頻試看插件——sunny-video使用文檔

sunny-video視頻倍速播放器 組件名&#xff1a;sunny-video 效果圖 img1img2img3img4 平臺差異說明 目前已應用到APP&#xff08;安卓、iOS&#xff09;、微信&#xff08;小程序、H5&#xff09;其它平臺未測試 安裝方式 本組件符合easycom規范&#xff0c;HBuilderX 2.5…

emoji

圖標的網址&#xff1a; webfx emojipedia 1.可以直接復制粘貼 2.按照其格式文本表示&#xff08;Shortcodes&#xff09; &#x1f680; &#x1f604; &#x1f92b; ?? &#x1f480; 還有關于通過鏈接引用shield.io中的圖標&#xff0c;沒有深究&#xff0c;不…

第六十三周周報

學習目標&#xff1a; 項目 實驗和論文 學習時間&#xff1a; 2023.11.18-2023.11.24 學習產出&#xff1a; 論文 對論文進行了潤色和修改 實驗 1、上周DiffusionRelative的結果無法再次復現&#xff0c;新跑的FID與以前實驗跑的結果相差不大&#xff0c;上周的結果應…

點大商城V2.5.3分包小程序端+小程序上傳提示限制分包制作教程

這幾天很多播播資源會員反饋點大商城V2.5.3小程序端上傳時提示大小超限&#xff0c;官方默認單個包都不能超過2M&#xff0c;總分包不能超20M。如下圖提示超了93KB&#xff0c;如果出現超的不多情況下可采用手動刪除一些images目錄下不使用的圖片&#xff0c;只要刪除超過100KB…

鴻蒙4.0開發筆記之DevEco Studio如何使用低代碼開發模板進行開發的詳細流程(六)

鴻蒙低代碼開發 一、什么是低代碼二、如何進行鴻蒙低代碼開發1、 創建低代碼開發工程&#xff08;方式壹&#xff09;2、已有工程則創建Visual文件&#xff08;方拾貳&#xff09; 三、低代碼開發界面介紹四、低代碼實現頁面跳轉五、低代碼開發建議 一、什么是低代碼 所謂低代碼…

Qt+xml解析

文章目錄 一、xml文件介紹1.1 XML 文件結構和基本概念1.2 XML 文件示例二、Qt讀取xml文件2.1 Qt讀取xml 步驟2.2 基本操作和函數 QXmlStreamReader2.3 錯誤處理errorString和hasError2.4 Qt讀取xml實例三、實際項目一、xml文件介紹 1.1 XML 文件結構和基本概念 XML(可擴展標…

三、ts高級筆記,

文章目錄 18、d.ts聲明文件19、Mixin混入20、Decorator裝飾器的使用21、-高級proxy攔截_Reflect元儲存22、-高級寫法Partial-Pick23、Readonly只讀_Record套對象24、高階寫法Infer占位符25、Inter實現提取類型和倒敘遞歸26、object、Object、{}的區別27、localStorage封裝28、協…

基于 STM32F7 和神經網絡的實時人臉特征提取與匹配算法實現

本文討論了如何使用 STM32F7 和神經網絡模型來實現實時人臉特征提取與匹配算法。首先介紹了 STM32F7 的硬件和軟件特點&#xff0c;然后討論了人臉特征提取和匹配算法的基本原理。接下來&#xff0c;我們將重點討論如何在 STM32F7 上實現基于神經網絡的人臉特征提取與匹配算法&…

微機原理_3

一、單項選擇題(本大題共15小題,每小題3分,共45分。在每小題給出的四個備選項中,選出一個正確的答案,請將選定的答案填涂在答題紙的相應位置上。) 在 8086 微機系統中&#xff0c;完成對指令譯碼操作功能的部件是&#xff08;)。 A. EU B. BIU C. SRAM D. DRAM 使計算機執行某…

【機器學習】聚類(一):原型聚類:K-means聚類

文章目錄 一、實驗介紹1. 算法流程2. 算法解釋3. 算法特點4. 應用場景5. 注意事項 二、實驗環境1. 配置虛擬環境2. 庫版本介紹 三、實驗內容0. 導入必要的庫1. Kmeans類a. 構造函數b. 閔可夫斯基距離c. 初始化簇心d. K-means聚類e. 聚類結果可視化 2. 輔助函數3. 主函數a. 命令…

ElasticSearch之虛擬內存

查看當前Linux系統中vm.max_map_count變量的值&#xff0c;命令如下&#xff1a; sysctl vm.max_map_count執行結果的樣例&#xff0c;如下&#xff1a; vm.max_map_count 65530修改參數vm.max_map_count的值&#xff0c;命令如下&#xff1a; sysctl -w vm.max_map_count2…

數組題目: 665. 非遞減數列、453. 最小移動次數使數組元素相等、283. 移動零、189. 旋轉數組、396. 旋轉函數

665. 非遞減數列 題解&#xff1a; 題目要求一個非遞減數列&#xff0c;我們可以考慮需要更改的情況&#xff1a; nums {4, 2, 5} 對于這個nums&#xff0c;由于2的出現導致非遞減&#xff0c;更改的情況就是要么4調到<2&#xff0c;要么2調到4,5. nums {1, 4, 2, 5} …