天天看點

vuecli實作移動端視訊類webAPP-項目搭建前言技術棧基礎環境搭建總結

前言

在平時的前端開發中,我們更多的是完成螺絲釘的角色,即在公司的前端架構下,實作各種業務邏輯,Vue技術棧并不是難點所在,難點往往在于從 0 到 1 搭建一個完整的實踐項目,以及項目開發過程中對于很多技術細節的再學習和處理,幫助讀者具備開發和統籌一個完整項目的能力是此項目的目标,本項目将通過技術棧的詳細講解、多個功能子產品的開發實踐、并結合實際項目開發中的産品流程來完成這個任務。

技術棧

  • vue
  • vue-cli 4.0.5
  • router
  • vuex
  • vant 2.10.2
  • 阿裡圖示字型
  • axios

基礎環境搭建

vue-cli 腳手架初始化

首先通過 vue-cli 這個腳手架工具生成項目的初始化化結構。

vue create dou-yin
           

複制

你會被提示選取一個 preset。這個地方我們選擇“手動選擇特性”來選取需要的特性。(這個地方會詳細介紹)

vuecli實作移動端視訊類webAPP-項目搭建前言技術棧基礎環境搭建總結
  • Use history mode for router (這個地方我們選擇history的路由方式,history 方式的路徑後不會添加#)
  • Pick a CSS pre-processor (因為項目中Less編寫樣式 是以需要css 預處理)
  • Pick a linter/formatter config (項目中使用ESLint 代碼風格檢查,另外我們也希望可以通過額外的配置檔案對 eslint做定制化配置 我們選擇代碼儲存的時候做ESLint檢查)
  • Save this as a preset for future projects (這個地方我們選擇n 我們不需要vue-cli儲存我們的噢诶這檔案)

項目建立成功,根據提示:

$ cd dou-yin
           

複制

啟動項目

$ yarn serve
           

複制

項目目錄說明

|- assets   				// 資源檔案夾
	  |--- fonts                   //  圖示字型 阿裡圖示字型
	  |--- icons                   //  項目圖示
      |--- style                   //  封裝的公共樣式 一像素邊框    
|- componments   			// 封裝的元件檔案夾
|- request   				//  axios 網絡請求封裝
|- router   				//  路由
|- store   					// vuex 
|- styles   				// 公共樣式檔案夾
|- utils   					// 工具類
|- views   					// 視圖頁面
  main.js 					//vue項目入口
  App.vue 					//跟頁面
 .eslint.js  				// eslint配置檔案
  babel.config.js			// 解析babel的配置檔案

           

複制

引入第三方UI元件庫

市面上有很多優秀的vue移動端UI元件庫,cube-ui、vant 之類的,本人比較推薦vant(其實也沒什麼原因 就是用的比較順手而已)。

  • 在項目内 安裝vant
yarn add vant babel-plugin-import style-resources-loader postcss-pxtorem
yarn add postcss-px2rem -D
           

複制

  • 采用按需引入的方式 配置元件的引入

babel.config.js 修改成如下内容

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset',
  ],
  "plugins": [
    ["import", {
      "libraryName": "vant",
      "libraryDirectory": "es",
      "style": true
    }]
  ]
};

           

複制

在項目中引入Vant元件 通過如下方式

import {Button} from 'vant'
           

複制

  • 移動端自适應(Rem 适配)

postcss-pxtorem 是一款postcss插件,用于将px轉換成rem。

lib-flexible 用于設定rem基準值

在項目中 建立 postcss.config.js 内容如下

module.exports = {
    plugins: {
      autoprefixer: {
        browsers: [
          'Android >= 4.0',
          'iOS >= 8'
        ]
      },
      'postcss-pxtorem': {
        rootValue: 37.5,
        propList: [
          '*'
        ]
      },
      'postcss-px2rem': {
        remUnit: 37.5
      }
    }
  }


           

複制

如上的配置 是按照UI設計搞 750* 1334 配置的 (如果是其它尺寸的設計搞則改成 對應的即可)

配置 webpack

再項目中間建立 vue.config.js,内容如下

console.log(process.env.NODE_ENV)
const port = process.env.port || 10086;
const path = require('path');

function resolve(dir) {
  // __dirname:項目的路徑
  return path.join(__dirname, dir);
}


module.exports = {
  outputDir: process.env.NODE_ENV === 'production' ?  'dist': 'ych5' ,
  productionSourceMap: false, // 生産環境是否 生成SourceMap
  devServer: {
    port,
    // 啟動之後 自動打開浏覽器
    open: true,
    // 報錯的時候全屏顯示錯誤
    overlay: {
      warnings: false,
      errors: true
    },
    // host:'0.0.0.0',
    // hot: true,
    // hotOnly: false,
    // https: false,
    //代理
    proxy: {
      '/api': {
        target: 'http://192.168.43.154:8080',
        ws: true,
        changeOrigin: true
      },

    }
  },
  css: {

  },
  configureWebpack: {
    resolve: {
      alias: {
        '@': resolve('src'),
        'assets': resolve('src/assets'),
        'store': resolve('src/store'),
        'views': resolve('src/views'),
        'api': resolve('src/api'),
        'components': resolve('src/components'),
        'utils': resolve('src/utils'),
        'styles': resolve('src/styles'),
      }
    }
  },
  chainWebpack: config => {
    const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
    types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)))
  },
}

// 全局樣式 變量、函數
function addStyleResource(rule) {
  rule.use('style-resource')
    .loader('style-resources-loader')
    .options({
      patterns: [
        resolve('src/styles/variables.less'),
        resolve('src/styles/mixin.less'),
      ],
    })
}

複制代碼           

複制

建立 .env、.env.development、.env.production檔案

.env

NODE_ENV="development";
BASE_URL='/'
VUE_APP_BASE_API="/dev-api"
           

複制

.env.development

VUE_APP_ERUDA=true
NODE_ENV="development";
BASE_URL='/'
VUE_APP_BASE_API="/dev-api"

           

複制

.env.production

NODE_ENV="production";
BASE_URL='/'
VUE_APP_BASE_API="/prod-api"
           

複制

引入移動端調試神器 eruda

<% if (VUE_APP_ERUDA === 'true') { %>
      <script src="//cdn.bootcss.com/eruda/1.5.2/eruda.min.js">script>
      <script> window.eruda.init(); script>
    <% } %>
複制代碼           

複制

總結

通過如上配置 則完成了 vue移動端項目基礎機構搭建。 如截圖

iphon6 螢幕

vuecli實作移動端視訊類webAPP-項目搭建前言技術棧基礎環境搭建總結

iphone plus 螢幕

vuecli實作移動端視訊類webAPP-項目搭建前言技術棧基礎環境搭建總結

Eruda

vuecli實作移動端視訊類webAPP-項目搭建前言技術棧基礎環境搭建總結

下一章 繼續完成 項目基本骨架

  • 截圖
vuecli實作移動端視訊類webAPP-項目搭建前言技術棧基礎環境搭建總結