前端最基礎的就是 HTML+CSS+Javascript
。掌握了這三門技術就算入門,但也僅僅是入門,如今前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS
),本着提高技術水平,打牢基礎知識的中心思想,咱們開課啦(每週四)。css
前面咱們學習 vue 基本的使用,如今咱們要開始更好的使用 vue 。
通常來講咱們使用 vue 無非下面幾種方式html
webpack 的方式也是咱們今天要講的,不過 webpack 配置太繁瑣了。咱們直接上 vue-cli。前端
能夠看到,經過 webpack 等工具咱們可讓前端項目更加健壯,並且也解決了許多痛點。vue
vue-cli 是 vue 的腳手架,能夠快速配置一個開發環境,基於 Vue.js 進行快速開發的完整系統。html5
前端就一個問題,更新賊快,基本不兼容,本文基於 vue-cli@4.3.1 版本。node
Vue CLI 致力於將 Vue 生態中的工具基礎標準化。
它確保了各類構建工具可以基於智能的默認配置便可平穩銜接,這樣你能夠專一在撰寫應用上,而沒必要花好幾天去糾結配置的問題。
它也爲每一個工具提供了調整配置的靈活性,無需 eject。linux
Vue CLI 須要 Node.js 8.9 或更高版本 (推薦 8.11.0+,其實我感受 10.x 是極好,12.x 最好先不要上)。你可使用 nvm 或 nvm-windows 在同一臺電腦中管理多個 Node 版本webpack
# 使用 npm 全局安裝 npm install -g @vue/cli # OR 使用 yarn 全局安裝 yarn global add @vue/cli # 查看 vue-cli 版本 vue -V
# 使用命令提示行建立一個項目 vue create lilnong-top-cli # OR 使用可視化界面建立一個項目 vue ui
Please pick a preset:git
manually select features
手動選擇,自由組合(Babel、TS、PWA、Router、Vuex、css pre-processors、linter/formatter、Unit Testing、E2E Testing)github
()=>
等。TS 是指代碼基於 TS 來編寫,固然仍是會編譯成 JS 來在瀏覽器中執行的。
css pre-processors 就是 postcss、sass 之類的預處理工具。
linter/formatter 代碼語法檢測/代碼美化
Pick the package manager to use when installing dependencise
使用 vue serve
和 vue build
命令對單個 *.vue
文件進行快速原型開發,不過這須要先額外安裝一個全局的擴展:
npm install -g @vue/cli-service-global
vue serve
的缺點就是它須要安裝全局依賴,這使得它在不一樣機器上的一致性不能獲得保證。所以這隻適用於快速原型開發。
vue serve MyComponent.vue
- lilnong-top-cli: project項目文件 -- .gitignore -- babel.config.js: babel 配置文件 -- node_modules: 包 -- package-lock.json -- package.json:webpack 配置文件,vue-cli 也是使用 webpack 的,因此主要看這個文件。 -- public: 資源 -- README.md -- src: 代碼
~/
是指當前用戶目錄,好比我,登錄用戶名是 linong
,linux 中就是 /home/linong
,window 中是 C:\Users\linong
。
~/.vuerc
保存的是手動選擇特性。在操做提示的最後你能夠選擇將已選項保存爲一個未來可複用的 preset。
Vue CLI 使用了一套基於插件的架構。
若是你查閱一個新建立項目的 package.json
,就會發現依賴都是以 @vue/cli-plugin-
開頭的。
插件能夠修改 webpack 的內部配置,也能夠向 vue-cli-service
注入命令。
在項目建立的過程當中,絕大部分列出的特性都是經過插件來實現的。
基於插件的架構使得 Vue CLI 靈活且可擴展。若是你對開發一個插件感興趣,請翻閱插件開發指南。
能夠經過 vue ui
命令使用 GUI 安裝和管理插件,可使用命令行的方式 vue add eslint
。
建議使用 vue ui ,圖形化的界面仍是比較容易使用
該部分不重要,能夠直接掠過
Usage: serve [options] [entry] 在開發環境模式下零配置爲 .js 或 .vue 文件啓動一個服務器 Options: -o, --open 打開瀏覽器 -c, --copy 將本地 URL 複製到剪切板 -h, --help 輸出用法信息
Usage: build [options] [entry] 在生產環境模式下零配置構建一個 .js 或 .vue 文件 Options: -t, --target <target> 構建目標 (app | lib | wc | wc-async, 默認值:app) -n, --name <name> 庫的名字或 Web Components 組件的名字 (默認值:入口文件名) -d, --dest <dir> 輸出目錄 (默認值:dist) -h, --help 輸出用法信息
建立一個由 `vue-cli-service` 提供支持的新項目 用法:create [options] <app-name> 選項: -p, --preset <presetName> 忽略提示符並使用已保存的或遠程的預設選項 -d, --default 忽略提示符並使用默認預設選項 -i, --inlinePreset <json> 忽略提示符並使用內聯的 JSON 字符串預設選項 -m, --packageManager <command> 在安裝依賴時使用指定的 npm 客戶端 -r, --registry <url> 在安裝依賴時使用指定的 npm registry -g, --git [message] 強制 / 跳過 git 初始化,並可選的指定初始化提交信息 -n, --no-git 跳過 git 初始化 -f, --force 覆寫目標目錄可能存在的配置 -c, --clone 使用 git clone 獲取遠程預設選項 -x, --proxy 使用指定的代理建立項目 -b, --bare 建立項目時省略默認組件中的新手指導信息 -h, --help 輸出使用幫助信息
這個命令就是咱們 npm run serve
執行的 "serve": "vue-cli-service serve",
用法:vue-cli-service serve [options] [entry] 選項: --open 在服務器啓動時打開瀏覽器 --copy 在服務器啓動時將 URL 複製到剪切版 --mode 指定環境模式 (默認值:development) --host 指定 host (默認值:0.0.0.0) --port 指定 port (默認值:8080) --https 使用 https (默認值:false)
這個是 npm run build
時執行代碼
用法:vue-cli-service build [options] [entry|pattern] 選項: --mode 指定環境模式 (默認值:production) --dest 指定輸出目錄 (默認值:dist) --modern 面向現代瀏覽器帶自動回退地構建應用 --target app | lib | wc | wc-async (默認值:app) --name 庫或 Web Components 模式下的名字 (默認值:package.json 中的 "name" 字段或入口文件名) --no-clean 在構建項目以前不清除目標目錄 --report 生成 report.html 以幫助分析包內容 --report-json 生成 report.json 以幫助分析包內容 --watch 監聽文件變化
咱們知道兼容性分爲 JS 兼容性、CSS 兼容性、html 兼容性
vue-cli 使用 package.json
文件裏的 browserslist
字段 (或一個單獨的 .browserslistrc
文件),指定了項目的目標瀏覽器的範圍。這個值會被 @babel/preset-env 和 Autoprefixer 用來肯定須要轉譯的 JavaScript 特性和須要添加的 CSS 瀏覽器前綴。瞭解如何指定瀏覽器範圍。
html 兼容性,比較小衆,並且 vue 也有必定的兼容性要求,因此就不放開說了。
JS 兼容性,這裏分爲幾種:語法兼容性、特性兼容、函數方法兼容性
Object.defineProperty()
、 Proxy
babel-polyfill
解決個差很少。好比說 Promise、String.prototype.padStart 之類的。若是以前使用了 node 能夠先刪除掉
使用 nvm 安裝對應版本的 nodejs
# 安裝 10.20.1 版本 nvm install 10.20.1 # 切換版本爲 10.20.1 nvm use 10.20.1 # 查看 node 版本 node -v # 切換資源源 nvm npm_mirror https://npm.taobao.org/mirrors/npm/