主頁 > 企業開發 > Vue.js系列(一):Vue專案創建詳解

Vue.js系列(一):Vue專案創建詳解

2020-09-29 00:24:54 企業開發

引言

Vue.js作為目前最熱門最具前景的前端框架之一,其提供了一種幫助我們快速構建并開發前端專案的新的思維模式,本文旨在幫助大家認識Vue.js,并詳細介紹使用vue-cli腳手架工具快速的構建Vue專案,以及對專案目錄結構的解釋說明,使大家清晰的了解Vue專案的開發流程,

簡介

Vue (讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式框架,與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用,Vue 的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有專案整合,另一方面,當與現代化的工具鏈以及各種支持類別庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動,

Vue.js 還提供了 MVVM 資料系結和一個可組合的組件系統,具有簡單、靈活的 API,其目標是通過盡可能簡單的 API 實作回應式的資料系結和可組合的視圖組件,

Vue.js 的主要特點

Vue.js 是一個優秀的前端界面開發 JavaScript 庫,它之所以非常火,是因為有眾多突出的特點,其中主要的特點有以下幾個,

1) 輕量級的框架

Vue.js 能夠自動追蹤依賴的模板運算式和計算屬性,提供 MVVM 資料系結和一個可組合的組件系統,具有簡單、靈活的 API,使讀者更加容易理解,能夠更快上手,

2) 雙向資料系結

宣告式渲染是資料雙向系結的主要體現,同樣也是 Vue.js 的核心,它允許采用簡潔的模板語法將資料宣告式渲染整合進 DOM,

3) 指令

Vue.js 與頁面進行互動,主要就是通過內置指令來完成的,指令的作用是當其運算式的值改變時相應地將某些行為應用到 DOM 上,

4) 組件化

組件(Component)是 Vue.js 最強大的功能之一,組件可以擴展 HTML 元素,封裝可重用的代碼,

在 Vue 中,父子組件通過 props 傳遞通信,從父向子單向傳遞,子組件與父組件通信,通過觸發事件通知父組件改變資料,這樣就形成了一個基本的父子通信模式,

在開發中組件和 HTML、JavaScript 等有非常緊密的關系時,可以根據實際的需要自定義組件,使開發變得更加便利,可大量減少代碼撰寫量,

組件還支持熱多載(hotreload),當我們做了修改時,不會重繪頁面,只是對組件本身進行立刻多載,不會影響整個應用當前的狀態,CSS 也支持熱多載,

5) 客戶端路由

Vue-router 是 Vue.js 官方的路由插件,與 Vue.js 深度集成,用于構建單頁面應用,Vue 單頁面應用是基于路由和組件的,路由用于設定訪問路徑,并將路徑和組件映射起來,傳統的頁面是通過超鏈接實作頁面的切換和跳轉的,

6) 狀態管理

狀態管理實際就是一個單向的資料流,State 驅動 View 的渲染,而用戶對 View 進行操作產生 Action,使 State 產生變化,從而使 View 重新渲染,形成一個單獨的組件,

SPA和MPA對比

MPA

傳統的專案大多使用多頁應用結構(MultiPage Application, MPA),需要切換內容的時候我們往往會進行單個html檔案的跳轉,這個時候受網路、性能影響,瀏覽器會出現不定時間的空白界面,用戶體驗不好,

SPA       

單頁面應用SPA應用(single page application)就是用戶通過某些操作更改地址欄url之后,動態的進行不同模板內容的無重繪切換,用戶體驗好,

Vue中會使用官方提供的vue-router插件來使用單頁面,原理就是通過檢測地址欄變化后將對應的路由組件進行切換(卸載和安裝),

兩者對比

SPA vs MPA單頁面應用(single page application, SPA)多頁面應用(MultiPage Application, MPA)
組成 一個外殼頁面和多個頁面片段組成 多個完整頁面構成
資源共享(css、js) 共用只需要在外殼部分加載 不共用,每個頁面都需要加載
重繪方式 頁面區域重繪或更改 整頁重繪
url模式

a.com/#/pagone

a.com/#/pagtow

a.com/#/pagone.html

a.com/#/pagtwo.html

用戶體驗 頁面片段切換快,用戶體驗好 頁面切換加載緩慢,流暢度不夠用戶體驗較差
轉場影片 容易實作 無法實作
資料傳遞 容易 依賴url傳參、或者cookie、localStorage等
搜索引擎優化(SEO) 需要單獨方案、實作較為困難、不利于SEO檢索 可以利用服務器端渲染(ssr)優化 實作方法簡易
適用范圍 高要求的體驗度,追求界面流暢的應用 適用于追求高度支持搜索引擎的應用
開發成本 較高,常需借助專業的框架 較低,但頁面重復代碼多
維護成本 相對容易 相對復雜

安裝工具

第一步:

安裝node.js,具體可以參考博客Node.js安裝詳細步驟教程(Windows版),

第二步:

安裝webpack,具體參考博客Webpack安裝配置及打包詳細程序,

第三步:

安裝vue-cli,輸入如下命令,全域安裝vue-cli,其中cnpm是淘寶鏡像,安裝速度快,i是install的縮寫,g是global的縮寫,

cnpm i vue-cli -g

vue-cli創建程序

第一步:

安裝完成后,運行CMD,并切換到需要創建Vue專案的目錄,輸入如下命令開始創建,

vue init webpack vue-test //注:其中專案名稱必須全部小寫,否則會報錯

第二步:

接著開始進行專案選項設定,具體如下:

  • Project name---專案名稱,直接回車;
  • Project description---專案描述,輸入“Vue專案測驗”,點擊回車;
  • Author---作者,輸入“aizai846”,點擊回車;
  • Runtime + Compiler: recommended for most users和Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specificHTML) are ONLY allowed in .vue files - render functions are required elsewhere兩個選項---第一個是運行加編譯,推薦使用,第二個僅運行時,通過鍵盤上下按鈕選擇后,點擊回車;
  • Install vue-router?<Y/n>---是否安裝vue路由插件,輸入“Y”,點擊回車;
  • Use ESLint to lint your code? <Y/n>---是否使用ESLint管理代碼,ESLint是個代碼風格管理工具,是用來統一代碼風格的,一般專案中都會使用,但作為初學者,建議不進行安裝,輸入“n”,點擊回車;
  • Set up unit tests<Y/n>---是否安裝單元測驗,這里輸入“n”,點擊回車;
  • Setup e2e tests with Nightwatch?<Y/n>?---是否安裝e2e測驗,這里輸入“n”,點擊回車;
  • Should we run “npm install” for you after the project has been created?<recommended><use arrow keys>Yes, use NPM   Yes, use Yarn    No, I will handle that myself---三個選項,這里我們選擇第三個,因為通過npm install安裝vue專案依賴庫,非常的慢,我們可以在專案創建后,自己通過“cnpm install”安裝,

以上就是我們創建專案的整個程序,如下圖所示,

 第三步:

由于在第二步最后一個項,我們選擇了自己安裝專案包依賴,所以在這里輸入如下命令,完成專案包依賴的安裝,

cd F:\JsCodeProject\vue-test//切換到專案目錄

cnpm i //其中,cnpm是通過淘寶鏡像安裝,速度非常的快

第四步:

輸入如下命令,測驗專案是否能正常運行,

npm run dev

  成功運行后,在shell命令框中,輸出如下資訊,

 此時,在瀏覽器中,輸入上邊的網址,可以訪問我們新創建的vue專案,如下圖所示

vue目錄介紹

通過VSCode打開我們新建的專案,具體目錄結構如下圖所示,

在package.json檔案中,我們可以到開發和生產環境的組態檔入口,

 "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "build": "node build/build.js"
  }

  其中,開發環境的入口檔案為“webpack.dev.conf.js”;生產環境的入口檔案為“build.js”,他們都在build檔案下,如下圖所示,

 其中部分檔案說明如下:

  • build.js---生產環境的入口檔案,為構建打包檔案,會將原始碼進行構建(編譯、壓縮等)后打包;
  • utils.js---一個被使用頻率的檔案,這個檔案包含了三個工具函式:生成靜態資源的路徑、生成 ExtractTextPlugin物件或loader字串、生成 style-loader的配置;
  • webpack.base.conf.js---在webpack.dev.conf.js中出現webpack.base.conf.js,這個檔案是開發環境和生產環境,甚至測驗環境,這些環境的公共webpack配置;
  • webpack.dev.conf.js---開發環境中webpack的配置入口,
  • webpack.prod.conf.js---為生產環境中webpack的配置入口,同時,它也依賴于前面提到的webpack.base.conf.js、utils.js和config/index.js;

打包部署

專案開發的檔案放到src目錄下,在專案開發完成之后,使用 如下命令來打包專案,

npm run build

 打包完成后會生成dist檔案夾,如圖所示,專案上線時,直接將dist檔案夾放到服務器即可,

總結

本文通過描述Vue專案的創建程序,及Vue目錄結構的解釋說明,可以使我們更加清晰的認識Vue專案的開發流程,對于初學的童鞋,能起到很好引路作用,專案里面還有很多沒有解釋到位的地方,童鞋可以添加關注,我們將在后續的博文中詳細講解,文中若有不足之處,還望海涵,同時,在創建中遇到問題,可留言交流!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/135973.html

標籤:JavaScript

上一篇:JavaScript DOM 滑鼠拖拽

下一篇:輸出一個區間的所有質數

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more