<h1> 全棧的自我修養: 使用@vue/cli進行vue.js環境搭建 </h1>css
Success, real success, is being willing to do the things that other people are not.
成功,真正的成功,是願意作別人不肯意作的事情。
Table of Contentshtml
@[TOC]前端
當你看到這篇文章的時候,暫且認爲你對如何作一個網站有了興趣.vue
上一篇講述了使用 vue-cli
搭建 epimetheus-frontend
, 在一些老項目中確實是這樣的, 不過前端框架發版就和坐火箭🚀同樣, 你方唱罷我登場
, 一代新人換舊人, 今天來介紹下 @vue/cli
的使用node
Vue CLI 是一個基於 Vue.js 進行快速開發的完整系統,提供:jquery
一個運行時依賴 (@vue/cli-service),該依賴:webpack
Vue CLI 致力於將 Vue 生態中的工具基礎標準化。它確保了各類構建工具可以基於智能的默認配置便可平穩銜接,這樣你能夠專一在撰寫應用上,而沒必要花好幾天去糾結配置的問題。與此同時,它也爲每一個工具提供了調整配置的靈活性,無需 eject。ios
Vue CLI 的介紹來自於官網,文末有對應的參考地址
刪代碼,做爲程序員來講應該是一件很是身心愉悅的事情
在上一篇文檔咱們已經使用老版的 vue-cli
建立了 epimetheus-frontend
, 首先第一步咱們先刪除了他git
epimetheus$ rm -rf epimetheus-frontend
由於新老版本的 vue cli
都是使用的 vue
命令,此時須要把上次安裝的 vue-cli
卸載程序員
epimetheus$ npm uninstall vue-cli -g
這樣咱們又有一個乾淨的環境了
Node 版本要求 <br/><br/>
Vue CLI 須要 Node.js 8.9 或更高版本 (推薦 8.11.0+)。
在上篇中,咱們使用了 npm install -g vue-cli
完成 vue-cli
的安裝
做爲新版本,Vue CLI
的包名稱由 vue-cli
改爲了 @vue/cli
. 咱們須要執行如下命令安裝
epimetheus$ npm install -g @vue/cli
安裝速度仍是比較慢的,你們能夠喝杯水
安裝完成後能夠 vue --version
看下版本號
epimetheus$ vue --version @vue/cli 4.4.6
這裏咱們繼續建立一遍 epimetheus-frontend
epimetheus
目錄vue create epimetheus-frontend
建立項目第一步會提示選擇一個preset
, 這裏選擇默認的 Babel + ESLint
<br/>
第二步會提示選擇package manager
, 這裏咱們仍是選擇 Yarn
安裝過程可能有點慢,安裝完成後,以下
epimetheus$ vue create epimetheus-frontend Vue CLI v4.4.6 ? Please pick a preset: default (babel, eslint) ? Pick the package manager to use when installing dependencies: Yarn Vue CLI v4.4.6 ✨ Creating project in /Users/zhangyunan/project/scoding/epimetheus/epimetheus-frontend. 🗃 Initializing git repository... ⚙️ Installing CLI plugins. This might take a while... yarn install v1.15.2 info No lockfile found. [1/4] 🔍 Resolving packages... success Saved lockfile. info To upgrade, run the following command: $ curl --compressed -o- -L https://yarnpkg.com/install.sh | bash ✨ Done in 30.95s. 🚀 Invoking generators... 📦 Installing additional dependencies... yarn install v1.15.2 [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 🔨 Building fresh packages... success Saved lockfile. ✨ Done in 5.79s. ⚓ Running completion hooks... 📄 Generating README.md... 🎉 Successfully created project epimetheus-frontend. 👉 Get started with the following commands: $ cd epimetheus-frontend $ yarn serve
從上面的提示中,咱們看到默認建立了一個 git
項目.
根據最後提示,咱們能夠進入 epimetheus-frontend
, 並在控制檯運行 yarn serve
,便可開始運行咱們的項目
epimetheus$ cd epimetheus-frontend epimetheus/epimetheus-frontend$ (master) yarn serve yarn run v1.15.2 $ vue-cli-service serve INFO Starting development server... 98% after emitting CopyPlugin DONE Compiled successfully in 2275ms 下午10:13:29 App running at: - Local: http://localhost:8080/ - Network: http://192.168.1.4:8080/ Note that the development build is not optimized. To create a production build, run yarn build.
從控制檯信息能夠看出,訪問路徑爲:http://localhost:8080
這樣準備工做基本就完成了
相信開發上篇文檔,已經可使用 code
命令,若是仍是不能使用,能夠根據下面的提示進行安裝,這裏咱們直接使用 code .
打開當前目錄
例如:
epimetheus/epimetheus-frontend$ code .
則會將當前文件夾 epimetheus/epimetheus-frontend
在 VSCode
中打開,
如何你安裝VSCode
後,使用code
命令時,提示 not fund, 能夠經過 查看 -> 命令面板 輸入code
進行安裝
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jvkCJ2Uz-1593393770883)(img/vscode_install_code.png)]
這裏使用了 VSCode
,打開項目後如圖:
├── README.md # Default README file ├── babel.config.js ├── package.json # build scripts and dependencies ├── public │ ├── favicon.ico │ └── index.html # index.html template ├── src │ ├── App.vue # main app component │ ├── assets # module assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue │ └── main.js # app entry file └── yarn.lock
其中,咱們主要修改 src 下文件,上面提到項目訪問端口爲:8080
, 爲了防止與其餘項目形成衝突,這裏將端口改成:7000
, 提供兩種方式:
"scripts": { "serve": "vue-cli-service serve --port 7000", }
package.json
同級目下建立 vue.config.js
, 並添加如下內容module.exports = { devServer: { port: 7000 } }
兩種方式都可
這裏使用了
官網:http://element-cn.eleme.io/#/...
這裏咱們進入剛纔的項目目錄:並執行 yarn add element-ui
並配置 main.js
import Vue from 'vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import App from './App.vue' Vue.use(ElementUI); Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount('#app')
Vuex 是一個專爲 Vue.js 應用程序開發的狀態管理模式。它採用集中式存儲管理應用的全部組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。Vuex 也集成到 Vue 的官方調試工具 devtools extension,提供了諸如零配置的 time-travel 調試、狀態快照導入導出等高級調試功能。
也就是經過 Vuex ,各個組件能夠實時的共享狀態
官網:https://vuex.vuejs.org/zh-cn/...
安裝
首先咱們先安裝它 yarn add vuex
配置
首先在 src
下建立 store
文件夾並在其下建立 store.js
文件
即 src/store/store.js
, 同時建立 src/assets/util/cookie.js
src/assets/utils/cookie.js 文件內容
該文件主要用於操做cookie
let cookie = { setCookie (cname, value, expiredays) { let exdate = new Date() exdate.setTime(exdate.getTime() + expiredays) exdate.setDate(exdate.getDate() + expiredays) document.cookie = cname + '=' + escape(value) + ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString()) }, getCookie (name) { let reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)') let arr = document.cookie.match(reg) if (arr) { return (arr[2]) } else { return null } }, delCookie (name) { let exp = new Date() exp.setTime(exp.getTime() - 1) let cval = cookie.getCookie(name) if (cval != null) { document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;' } } } export default cookie
src/store/store.js 內容
這裏定義了 userInfo
用來保存當前的用戶信息,包含一個 name
和 token
import Vue from 'vue' import Vuex from 'vuex' import cookie from '../assets/utils/cookie' Vue.use(Vuex) const userInfo = { name: cookie.getCookie('name') || '', token: cookie.getCookie('token') || '' } const store = new Vuex.Store({ state: { userInfo: userInfo }, mutations: { setUserInfo (state) { state.userInfo = { name: cookie.getCookie('name'), token: cookie.getCookie('token'), } } } }) export default store
在 main.js
添加Vuex
配置,
import Vue from 'vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import store from './store/store' import App from './App.vue' Vue.use(ElementUI); Vue.config.productionTip = false new Vue({ store, render: h => h(App), }).$mount('#app')
Promise based HTTP client for the browser and node.js
axios 是一個基於 Promise 的 http client, 經過他,咱們向後端進行數據交互,若是你不喜歡它,可使用jquery
的 ajax
代替.
咱們來安裝一下 yarn add axios
最終 main.js
import Vue from 'vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import store from './store/store' import App from './App.vue' Vue.use(ElementUI); Vue.config.productionTip = false new Vue({ store, render: h => h(App), }).$mount('#app')
https://github.com/zhangyunan...