前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vuecli实现移动端视频类webAPP-项目搭建

vuecli实现移动端视频类webAPP-项目搭建

作者头像
前端逗逗飞
发布2021-04-30 10:26:03
7420
发布2021-04-30 10:26:03
举报
文章被收录于专栏:前端逗逗飞前端逗逗飞

前言

在平时的前端开发中,我们更多的是完成螺丝钉的角色,即在公司的前端框架下,实现各种业务逻辑,Vue技术栈并不是难点所在,难点往往在于从 0 到 1 搭建一个完整的实践项目,以及项目开发过程中对于很多技术细节的再学习和处理,帮助读者具备开发和统筹一个完整项目的能力是此项目的目标,本项目将通过技术栈的详细讲解、多个功能模块的开发实践、并结合实际项目开发中的产品流程来完成这个任务。

技术栈

  • vue
  • vue-cli 4.0.5
  • router
  • vuex
  • vant 2.10.2
  • 阿里图标字体
  • axios

基础环境搭建

vue-cli 脚手架初始化

首先通过 vue-cli 这个脚手架工具生成项目的初始化化结构。

代码语言:javascript
复制
vue create dou-yin

你会被提示选取一个 preset。这个地方我们选择“手动选择特性”来选取需要的特性。(这个地方会详细介绍)

  • 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保存我们的噢诶这文件)

项目创建成功,根据提示:

代码语言:javascript
复制
 $ cd dou-yin

启动项目

代码语言:javascript
复制
 $ yarn serve

项目目录说明

代码语言:javascript
复制
|- 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
代码语言:javascript
复制
yarn add vant babel-plugin-import style-resources-loader postcss-pxtorem
yarn add postcss-px2rem -D
  • 采用按需引入的方式 配置组件的引入

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

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

在项目中引入Vant组件 通过如下方式

代码语言:javascript
复制
import {Button} from 'vant'
  • 移动端自适应(Rem 适配)

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

lib-flexible 用于设置rem基准值

在项目中 新建 postcss.config.js 内容如下

代码语言:javascript
复制
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,内容如下

代码语言:javascript
复制
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

代码语言:javascript
复制
NODE_ENV="development";
BASE_URL='/'
VUE_APP_BASE_API="/dev-api"

.env.development

代码语言:javascript
复制
VUE_APP_ERUDA=true
NODE_ENV="development";
BASE_URL='/'
VUE_APP_BASE_API="/dev-api"

.env.production

代码语言:javascript
复制
NODE_ENV="production";
BASE_URL='/'
VUE_APP_BASE_API="/prod-api"

引入移动端调试神器 eruda

代码语言:javascript
复制
    <% 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 屏幕

iphone plus 屏幕

Eruda

下一章 继续完成 项目基本骨架

  • 截图

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 技术栈
  • 基础环境搭建
    • vue-cli 脚手架初始化
      • 项目目录说明
        • 引入第三方UI组件库
          • 配置 webpack
            • 创建 .env、.env.development、.env.production文件
              • 引入移动端调试神器 eruda
              • 总结
                • iphon6 屏幕
                  • iphone plus 屏幕
                    • Eruda
                      • 下一章 继续完成 项目基本骨架
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档