详解搭建一个vue-cli的移动端H5开发模板

下面我将详细讲解如何搭建一个vue-cli的移动端H5开发模板。

准备工作

首先,需要安装node.js和npm。

然后,使用npm安装vue-cli:npm install -g vue-cli

创建项目

在命令行中执行以下命令创建一个基于webpack模板的vue项目:

vue init webpack my-project
cd my-project
npm install
npm run dev

这里创建的项目名为my-project,可以根据自己的需要修改。

执行完这些命令后,会创建一个基于webpack的vue项目,并安装了所需的依赖。然后运行npm run dev,启动webpack dev server,可以在浏览器中通过http://localhost:8080访问项目。

添加移动端适配

为了让项目能够适配不同的移动端设备,我们需要添加移动端适配方案。

这里以使用postcss-px-to-viewport插件为例,具体步骤如下:

  1. 安装插件:npm install postcss-px-to-viewport --save-dev

  2. 添加.postcssrc.js文件并配置:

{
  "plugins": {
    "postcss-px-to-viewport": {
      "viewportWidth": 750,
      "viewportHeight": 1334,
      "unitPrecision": 3,
      "viewportUnit": "vw",
      "selectorBlackList": [
        ".ignore",
        ".hairlines"
      ],
      "minPixelValue": 1,
      "mediaQuery": false
    }
  }
}

这里的配置中,viewportWidth和viewportHeight表示设计稿的宽度和高度,unitPrecision表示转换后保留的小数位数,viewportUnit表示转换后使用的单位,selectorBlackList表示不需要转换的类名,minPixelValue表示小于1px的值不转换,mediaQuery表示是否允许在媒体查询中转换。

  1. 修改webpack配置文件,在postcss-loader后添加postcss-px-to-viewport插件:
// webpack.config.js
module.exports = {
  // ...
  module: {
    rules: [
      // ...
      {
        test: /\.css$/,
        use: [
          'vue-style-loader',
          'css-loader',
          {
            loader: 'postcss-loader',
            options: {
              ident: 'postcss',
              plugins: [
                require('postcss-px-to-viewport')({
                  viewportWidth: 750,
                  viewportHeight: 1334,
                  unitPrecision: 3,
                  viewportUnit: 'vw',
                  selectorBlackList: [
                    '.ignore',
                    '.hairlines'
                  ],
                  minPixelValue: 1,
                  mediaQuery: false
                })
              ]
            }
          }
        ]
      }
    ]
  },
  // ...
}

这里的配置与.postcssrc.js文件中的配置一致。

添加完移动端适配后,在样式中使用px单位时,插件会自动将其转换为vw单位。

添加fastclick

移动端点击事件有延迟,需要添加fastclick插件来解决这个问题。

  1. 安装插件:npm install fastclick --save

  2. 在main.js文件中添加以下代码:

import FastClick from 'fastclick'
FastClick.attach(document.body)

这样就可以使用fastclick插件了。

示例说明

假设我们需要在首页显示一个头部标题和一个列表,每一个列表项都有一个图片和一个文字描述。

第一个示例

针对第一个示例,我们可以先使用vue-cli生成的项目模板在src/components目录下创建一个Header.vue组件和一个List.vue组件,分别用来显示头部和列表。

Header.vue内容示例:

<template>
  <div class="header">
    <h1>{{title}}</h1>
  </div>
</template>
<script>
export default {
  props: {
    title: {
      type: String,
      required: true
    }
  }
}
</script>
<style scoped>
.header {
  height: 100px;
  line-height: 100px;
  text-align: center;
  font-size: 36px;
}
</style>

List.vue内容示例:

<template>
  <div class="list">
    <div v-for="item in items" :key="item.id" class="item">
      <img :src="item.imgUrl" alt="">
      <div>{{item.desc}}</div>
    </div>
  </div>
</template>
<script>
export default {
  props: {
    items: {
      type: Array,
      required: true
    }
  }
}
</script>
<style scoped>
.list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.item {
  width: 48%;
  margin-bottom: 20px;
  border-radius: 5px;
  overflow: hidden;
  box-shadow: 0 3px 15px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.2s ease;
}
.item:hover {
  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.2);
}
.item img {
  width: 100%;
  height: 200px;
  object-fit: cover;
}
.item div {
  padding: 10px;
  font-size: 14px;
  color: #666;
}
</style>

然后在src/App.vue中使用这两个组件:

<template>
  <div>
    <Header title="头部标题" />
    <List :items="items" />
  </div>
</template>
<script>
import Header from './components/Header.vue'
import List from './components/List.vue'
export default {
  components: {
    Header,
    List
  },
  data() {
    return {
      items: [
        {
          id: 1,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项1'
        },
        {
          id: 2,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项2'
        },
        {
          id: 3,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项3'
        },
        {
          id: 4,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项4'
        }
      ]
    }
  }
}
</script>
<style scoped>
/* 根据需要添加样式 */
</style>

这样就完成了一个简单示例的搭建。

第二个示例

针对第二个示例,我们可以先创建一个Index.vue组件,然后在其中使用vanp-perfect-scrollbar组件来实现一个可滑动列表。

<template>
  <div class="index">
    <van-perfect-scrollbar>
      <div class="list">
        <div v-for="item in items" :key="item.id" class="item">
          <img :src="item.imgUrl" alt="" />
          <div>{{item.desc}}</div>
        </div>
      </div>
    </van-perfect-scrollbar>
  </div>
</template>

<script>
import VanPerfectScrollbar from 'van-perfect-scrollbar'
import 'van-perfect-scrollbar/dist/van-perfect-scrollbar.css'

export default {
  components: {
    VanPerfectScrollbar
  },
  data() {
    return {
      items: [
        {
          id: 1,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项1'
        },
        {
          id: 2,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项2'
        },
        {
          id: 3,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项3'
        },
        {
          id: 4,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项4'
        }
      ]
    }
  }
}
</script>
<style scoped>
.index {
  padding: 20px;
}
.list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.item {
  width: 48%;
  margin-bottom: 20px;
  border-radius: 5px;
  overflow: hidden;
  box-shadow: 0 3px 15px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.2s ease;
}
.item:hover {
  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.2);
}
.item img {
  width: 100%;
  height: 200px;
  object-fit: cover;
}
.item div {
  padding: 10px;
  font-size: 14px;
  color: #666;
}
</style>

这里使用了van-perfect-scrollbar组件,需要先安装组件:npm install van-perfect-scrollbar --save。然后在组件中引入并注册即可使用。

这样就完成了第二个示例的搭建。

至此,我们已经完成了搭建一个vue-cli的移动端H5开发模板需要的全部步骤,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解搭建一个vue-cli的移动端H5开发模板 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 如何在JavaScript中使用localStorage详情

    当我们在客户端开发中需要在用户的设备上存储一些数据时,可以使用localStorage。localStorage是HTML5的一个新特性,它允许你在客户端存储名称/值对,并且还支持在不同的浏览器标签之间共享数据。下面是在JavaScript中使用localStorage的详细攻略: 一、localStorage的基本使用 首先在JavaScript中使用lo…

    JavaScript 2023年6月11日
    00
  • js判断文件格式及大小的简单实例(必看)

    正如该文章标题所示,该篇文章提供的是一个关于使用JavaScript来判断文件格式及大小的简单实例。文章主要分为两个部分:判断文件格式和判断文件大小。 判断文件格式 如果想要判断一个文件的格式,一般可以通过文件的后缀名来进行判断。比如说,通常”jpeg”后缀的文件都是jpg格式,”png”后缀的文件都是png格式,等等。 下面我们来看一下代码示例: func…

    JavaScript 2023年5月27日
    00
  • 跟我学习javascript的全局变量

    下面是详细的攻略。 跟我学习JavaScript的全局变量 什么是全局变量 全局变量就是定义在全局作用域内的变量,可以在代码的任何地方被访问到。无论在哪个函数内或者是代码的外部,我们都可以访问及操作它。 在全局作用域内声明变量 在全局作用域内声明变量有两种方式: 使用var关键字 javascript var globalVar = “This is a g…

    JavaScript 2023年6月10日
    00
  • js取滚动条的尺寸的函数代码

    JavaScript取得滚动条的尺寸通常需要创建一个函数,以下为具体的实现方式: 创建获取滚动条尺寸的函数 function getScrollWidth() { var div = document.createElement(‘div’); // 设置样式,避免在计算尺寸时产生影响 div.style.width = ‘100px’; div.style…

    JavaScript 2023年6月11日
    00
  • 正则表达式中test、exec、match的区别介绍及括号的用法

    正则表达式是用于匹配文本的强大工具,它允许您使用模式来搜索、替换和操作文本。在使用正则表达式时,test、exec、match及括号都是常用的概念,它们的用法与意义都不同。 test、exec、match的区别介绍 test方法 test方法是RegExp对象的方法之一,它的作用是测试一个字符串是否匹配某个正则表达式,返回布尔值。如果匹配成功,test方法返…

    JavaScript 2023年6月10日
    00
  • Ajax请求WebService跨域问题的解决方案

    跨域即浏览器从一个域名的网页,向另一个域名的服务器请求数据,因为同源策略的限制,Ajax请求WebService跨域通常会出现问题。那么如何解决这个问题呢?下面是一种常见的解决方案: 方案一:Jsonp跨域 JSONP(JSON with Padding)是 JSON 的一种“使用模式”,可用于解决跨域问题。JSONP 的原理是通过 标签的 src 属性不受…

    JavaScript 2023年6月11日
    00
  • javascript模拟实现计算器

    为了让大家更好地理解,我先解释一下什么是JavaScript模拟实现计算器,然后再提供完整攻略。 JavaScript模拟实现计算器,是指使用JavaScript语言来模拟实现一个计算器的功能,可以通过输入数字、运算符和特殊符号等来进行基本的数学运算,如加、减、乘、除以及求余数等。 现在来说一下实现这个功能的具体攻略: HTML 部分 首先在 HTML 中创…

    JavaScript 2023年5月27日
    00
  • Web开发之JavaScript

    Web开发之JavaScript 一、JavaScript入门 1. JavaScript是什么 JavaScript是一种广泛应用于Web开发的脚本语言,主要用于为网页添加动态效果、实现交互功能等。 2. 学习JavaScript的基本要素 (1)掌握HTML和CSS的基本用法 在使用JavaScript进行Web开发时,HTML和CSS是最基本的语言。 …

    JavaScript 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部