從零到一詳聊如何創建Vue工程及遇到的常見問題


前言

本文也會在github上我的web-study倉庫中同步更新,歡迎star。 戳這里,傳送

准備工作

  1. 判斷是否需要翻牆或安裝鏡像,鏡像一般可安裝國內淘寶鏡像,詳情可看這里:cnpm
    npm install -g cnpm --registry="cnpm"全局安裝淘寶cnpm。

  2. 開發工具選擇很多,VUE無專用開發工具,開發項目多以SPA形式體現,本例使用 Visual Studio Code。

  3. 調試工具選擇很多,官方推薦 vue-devtools 。

    安裝方法:翻牆或者github主頁。https://github.com/vuejs/vue-devtools下載壓縮包,解壓到Chrome擴展程序。

環境搭建

  1. 安裝 Node.js 10.15.3, npm包管理工具(高版本node.js自帶npm)。

    安裝完成后,DOS命令行輸入命令檢查安裝情況npm -v,出現npm版本號即可。
    下載地址https://nodejs.org/en/download/

  2. 全局安裝 vue-cli腳手架

    DOS命令行安裝(-g 參數表示安裝至 npm 工作路徑,以后任意位置均可訪問)
    npm install -g vue-cli

  3. 安裝 開發工具 Visual Studio Code

    1. 下載地址 https://code.visualstudio.com/Download

      注意 User Installer / System Installer 不同(建議安裝系統版本)

    2. 安裝 Vetur ,vue 2 snippets插件

      文件 -> 首選項 -> 擴展 -> 搜索 -> 輸入 Vetur/vue 2 snippets -> 安裝

    3. 安裝 語言包(視個人喜好)

      文件 -> 首選項 -> 擴展 -> 搜索 -> 輸入 Chinese(Simplified)... -> 安裝

    4. 打開文件夾... 開發已存在項目

  4. 安裝 vue-devtools。

    1. 下載 https://github.com/vuejs/vue-devtools

    2. DOS 命令進入解壓后目錄
      修改 \shells\chrome\manifest.json中 background 節點 persistent 值為 true

    3. 運行 npm install 命令安裝依賴包。
      進度條等待完成,大約5-15分鍾,必要使用cnpm

    4. 運行 npm run build(一定要執行這步,不然后面會報錯)

    5. 啟動 Google Chrome -> 輸入 chrome://extensions/ -〉確認打開“開發者模式” -> 加載已解壓擴展程序 -> 選擇 shells\chrome 確定即可安裝

初始化項目

初始化項目有多種方式,建議采用 Webpack 模板模式

  1. 進入需要創建Vue項目文件夾,打開DOS命令行輸入:vue init webpack 項目名稱

  2. 然后終端會出現下圖“一問一答”模式

    “Project name”:這個是項目名稱,默認是輸入時的那個名稱,想改的話直接輸入修改,也可以直接回車

    “Install vue-router”:是否需要vue-router,這里默認選擇使用,這樣生成好的項目就會有相關的路由配置文件

    “Use ESLint to lint your code”:是否使用ESLint,剛才說了我們這個項目需要使用所以也是直接回車,默認使用,這樣會生成相關的ESLint配置

    “Setup unit tests with Karma + Moch?”: 是否安裝單元測試。由於我們現在還沒有單元測試,所以這里選擇的是”N”

    “Setup e2e tests with Nightwatch”:是否安裝e2e測試,這里我也同樣選擇的是“N”

  3. 下載依賴包

    cd ‘項目文件’ 終端執行命令:npm install .這個過程會生成一個node_modules 文件夾

  4. 調試項目

    終端輸入:npm run dev/start

  5. 打開Google Chrome ,默認項目地址:localhost://8080,訪問即可。F12啟用開發者調試工具,調試菜單欄選擇 Vue

開發過程

  1. 相關文件說明

    build和config >webpack配置相關文件

    node_modules>項目需要的模板文件

    src/main.js>入口js文件

    src/assets>公共的樣式,圖片文件

    src/components>各種vue組件文件

    src/App.vue>頁面主組件

    src/router>vue-router 路由配置文件

    static>靜態資源文件(不會被webpack處理)

    .eslintrc.js>eslint檢查配置文件

    .editorconfig>代碼編輯環境配置文件

    .eslintignore>eslint檢查忽略文件

    .babelrc>babel編譯參數配置文件

    index.html>主頁,項目入口文件

    package.json>項目配置文件,描述項目信息和依賴

    README.md>項目的說明文檔

  2. 新增組件

    在 \src\components 目錄新建 vue 文件(每一個.vue文件都是一個單獨vue組件,用來實現頁面特定的功能界面,包括基本的骨架html+CSS+js)。例如 Hellovue.vue,vue文件代碼標准模板樣式如下:

        <template>
        <div id="...">
            組件html模板
        </div>
        </template>

        <style>
            css相關樣式
        </style>

        <script>
        export default {  //默認向外暴露一個對象
            name:'Hellovue',
            data () {
                return {};// data保存數據必須返回一個對象
            }
        };
        </script>
  1. 引入組件

    1. 在App.vue主文件中script標簽添加import Hellovue form ./components/Hellovue.vue導入子組件。

    2. 組件模板對象添加components屬性。

    3. 重啟項目即可看到自己定義的組件。

    4. 新增頁面(利用vue路由實現)在 \router\index.js 添加新增頁面路由

import Hellovue from '@/components/Hellovue'
...
    {
      path: '/Hellovue',
      name: 'Hellovue',
      component: Hellovue
    }

在App.vue主頁面掛載<router-link to='Hellovue'>跳轉我的頁面</router-link>即可

  1. 打包編譯

    終端運行命令編譯
    npm run build
    即可產品dist文件,項目上線后只需把dist文件丟到服務器即可。ps:如果本地測試,則需修改webpack生產環境下的assetsPublicPath配置

注意事項:

  1. 最好使用cnpm代替npm安裝依賴,因為開發過程中少部分包如果用npm是無法下載完成,一直卡住,換為cnpm毫無壓力記得加上--save選項,否則別人安裝的話會缺少包.

  2. 路徑說明

    ‘/‘, 表示項目根目錄

    ‘./‘,表示當前目錄

    ‘../‘ ,表示上一級目錄,可以連續多個,比如‘../../../‘表示往外層退3級目錄

  3. 所有組件的數據都必須放置在data函數返回的對象中,無論是否有數據,否則會報錯。

  4. 一個template組件下只能有一個並列的div,否則報錯。

  5. ESLint 格式問題

    1. vue 創建項目時,ESLint 選擇啟用時候,因 ESLint 代碼檢查極其嚴格,縮進空格數量,尾部空行等皆在檢查之列,可以選擇關閉。
      build/webpack.base.conf.js 注釋掉 module->rules 中 ESLint 規則,關閉代碼:
      //...(config.dev.useEslint ? [createLintingRule()] : []),
      規范起見,修改 .eslintrc.js 文件 rules 節點,關閉指定格式檢查。

      例如'semi': ['off', 'always'], 需要分號的地方即錄入,否則 ESLint 強制檢查不錄入分號。說明參照https://eslint.org/docs/rules/semi。隨后重新 npm run dev 即可。完整說明參照https://github.com/standard/standard/blob/master/docs/RULES-zhcn.md。或者在.eslintignore文件下配置相關忽略ESlint檢查的文件格式,如:*.js,eslint則默認忽略根目錄下所有的js文件。

    2. Tab Size 調整

      多數開發工具 Tab Size 默認 4,ESLint 默認 2,需要將開發工具 Tab Size 默認值調為2或關閉 ESLint

    3. VUE 腳本結束標志 </script> 或者.vue文件結尾</style>不能作為文件結尾,其后必須另起一行寫入其它代碼,必要時插入空行.

常見問題:

  1. npm run dev 提示 webpack-dev-server --inline --progress --config build/webpack.dev.conf.js

    not found module ‘xxx’

    原因:依賴庫不完整

    方案:項目所在目錄運行 npm install xxx -S 安裝相關依賴包,或按照如下指定安裝相關版本,npm install xx@版本號 -S

  2. 安裝插件提示 npm WARN rollback Rolling back ...... failed (this is probably harmless): EPERM: operation not permitted

    原因:npm 權限不足

    方案:安裝所在目錄設置權限

    npm config set user 0

    npm config set unsafe-perm true

  3. npm run build 后,打包生成的dist文件本地測試發現404錯誤。

    原因:本地測試當前文件默認路徑以‘./’開頭,vue配置文件中默認以‘/’開頭

    方案:設置config/index.js中assetsPublicPath屬性值為‘./’

vue項目啟動原理

  1. 讀取 package.json 文件 scripts 內部節點,例 start / build / dev 節點,根據節點值獲得相應啟動參數

  2. Webpack配置項目入口文件,出口文件名。

    .\build\webpack.base.conf.js文件配置入口文件module.exports.entry值即項目總入口,默認為 ./src/main.js。

    在config/index.js文件中build對象assetsRoot中配置打包后文件名。

  3. ./src/main.js。頁面入口js文件,實例化一個Vue,平且引入vue和主入口組件。componens和template屬性缺一不可。

new Vue({
  el: '#app',
  router,
  components: { App },  // 定義組件映射
  template: '<App/>'   // 定義組件模板
})
  1. 打包項目提交到Svn或github注意不要提交node_modules文件夾,以免造成資源浪費

附件

  1. 幫助文檔

    vuex狀態管理庫:https://vuex.vuejs.org/zh/guide/

    vue中文網https://cn.vuejs.org/

    vue-axioshttps://www.npmjs.com/package/vue-axios

    vue-routerhttps://router.vuejs.org/zh/

    webpack中文網https://www.webpackjs.com/

  2. 安裝 cnpm 淘寶鏡像避免翻牆

    npm install -g cnpm --registry=https://registry.npm.taobao.org
    完成后安裝相關命令可用 cnpm 代替 npm。

    淘寶鏡像包與原包存在一定差異,避免莫名其妙問題起見,盡量使用原包命令 npm 安裝,可以使用 hosts 翻牆模式。

  3. 依賴包出錯刪除重裝

    刪除全局包
    npm uninstall -g 包名

    刪除本地包
    npm uninstall 包名

    不成功可以采用 remove 代替 uninstall

  4. 引用外部 js

    引用外部 js 有全局引用、VUE 外部引用、VUE 內部引用等多種方法

    1. 內部引用

      A. 安裝模塊至項目目錄(jQuery案例)
      npm install jquery --save

      B. 確認 package.json dependencies 節點已添加依賴
      "jquery": "^3.3.1",

      C. Vue 文件直接引用
      import $ from 'jquery'

    2. 全局引用

      A. 在package.json中添加依賴文件dependencies:{"jquery":"^2.2.1"} //可以自己指定版本

      B. 重新安裝項目依賴cnpm install

      c. 在webpack.base.conf.js中module.exports中提供一個全局變量:$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM