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

html5 移动端开发模板,搭建一个vue-cli的移动端H5开发模板简介vue-mobile是是基于vue-cli实现的移动端H5开发模板,其中已经搭建好基本的开发框架,可帮助您实现快速开发。技术栈:vue+vux+axios+less功能搭建项目目录配置css预处理器配置UI组件库vux解决移动端适配配置页面路由缓存axios请求封装工具类函数封装toast组件封装dialog组件封装底部导航组件封装列表页demo表单页…

大家好,又见面了,我是你们的朋友全栈君。

简介

vue-mobile 是是基于 vue-cli 实现的移动端 H5 开发模板,其中已经搭建好基本的开发框架,可帮助您实现快速开发。

技术栈:vue + vux + axios + less

功能

搭建项目目录

配置 css 预处理器

配置 UI 组件库 vux

解决移动端适配

配置页面路由缓存

axios 请求封装

工具类函数封装

toast 组件封装

dialog 组件封装

底部导航组件封装

列表页 demo

表单页 demo

搭建项目目录

按如下文件目录搭建项目框架

src 主要源码目录

|– assets 静态资源,统一管理

|– components 公用组件,全局组件

|– javascript JS相关操作处理

|– ajax axios封装的请求拦截

|– utils 全局封装的工具类

|– datas 模拟数据,临时存放

|– router 路由,统一管理

|– store vuex, 统一管理

|– views 视图目录

复制代码

配置 css 预处理器

安装依赖

npm install less less-loader –sava-dev

复制代码在 build/webpack.base.conf.js 里进行以下配置

{

test: /\.less$/,

loader: “style-loader!css-loader!less-loader”

}

复制代码

配置 vux

安装依赖包

npm install vux vux-loader –save

复制代码在 build/webpack.base.conf.js 里参照如下代码进行配置

const vuxLoader = require(‘vux-loader’) //把vux-loader引入

module.exports = vuxLoader.merge(webpackConfig, {

//把新旧配置进行merge(放到页面最底部)

plugins: [‘vux-ui’]

})

复制代码局部注册使用

;

import { Group, Cell } from ‘vux’ //引入所需组件

export default {

name: ‘App’,

components: {

//注册组件

Group,

Cell

}

}复制代码

移动端适配

安装依赖

npm install px2rem-loader –save-dev

复制代码在 build/utils 进行如下配置

const px2remLoader = {

loader: ‘px2rem-loader’,

options: {

remUnit: 100

}

}

function generateLoaders(loader, loaderOptions){

const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]

if (loader) {

loaders.push({

loader: loader + ‘-loader’,

options: Object.assign({}, loaderOptions, {

sourceMap: options.sourceMap

})

})

}

// Extract CSS when that option is specified

// (which is the case during production build)

if (options.extract) {

return ExtractTextPlugin.extract({

use: loaders,

fallback: ‘vue-style-loader’

})

} else {

return [‘vue-style-loader’].concat(loaders)

}

}

复制代码在 main.js 设置 html 跟字体大小

let cale = window.screen.availWidth > 750 ? 2 : window.screen.availWidth / 375

window.document.documentElement.style.fontSize = `${100 * cale}px`

复制代码

这是最简单的适配方法,后续跟单独对移动端 rem 适配做详细解读。

路由配置

通过配置路由对象的 meta[keepAlive]值来区分页面是否需要缓存

routes: [

{

path: ‘/’,

name: ‘index’,

meta: { keepAlive: true }, //需要缓存

component: resolve => {

require([‘../views/index’], resolve)

}

},

{

path: ‘/list’,

name: ‘listr’,

meta: { keepAlive: false }, //不需要缓存

component: resolve => {

require([‘../views/list’], resolve)

}

}

]

复制代码在 app.vue 做缓存判断

复制代码

axios 请求封装

设置请求拦截和响应拦截

const PRODUCT_URL = ‘https://xxxx.com’

const MOCK_URL = ‘http://xxxx.com’

let http = axios.create({

baseURL: process.env.NODE_ENV === ‘production’ ? PRODUCT_URL : MOCK_URL

})

// 请求拦截器

http.interceptors.request.use(

config => {

// 设置token,Content-Type

var token = sessionStorage.getItem(‘UserLoginToken’)

config.headers[‘token’] = token

config.headers[‘Content-Type’] = ‘application/json;charset=UTF-8’

// 请求显示loading效果

if (config.loading === true) {

vm.$loading.show()

}

return config

},

error => {

vm.$loading.hide()

return Promise.reject(error)

}

)

// 响应拦截器

http.interceptors.response.use(

res => {

vm.$loading.hide()

// token失效,重新登录

if (res.data.code === 401) {

// 重新登录

}

return res

},

error => {

vm.$loading.hide()

return Promise.reject(error)

}

)

复制代码封装 get 和 post 请求方法

function get(url, data, lodaing){

return new Promise((resolve, reject) => {

http

.get(url)

.then(

response => {

resolve(response)

},

err => {

reject(err)

}

)

.catch(error => {

reject(error)

})

})

}

function post(url, data, loading){

return new Promise((resolve, reject) => {

http

.post(url, data, { loading: loading })

.then(

response => {

resolve(response)

},

err => {

reject(err)

}

)

.catch(error => {

reject(error)

})

})

}

export { get, post }

复制代码把 get,post 方法挂载到 vue 实例上。

// main.js

import { get, post } from ‘./js/ajax’

Vue.prototype.$http = { get, post }

复制代码

工具类函数封装

添加方法到 vue 实例的原型链上

export default {

install (Vue, options) {

Vue.prototype.util = {

method1(val) {

},

method2 (val) {

},

}

}

复制代码在 main.js 通过 vue.use()注册

import utils from ‘./js/utils’

Vue.use(utils)

复制代码

组件封装

在开发项目过程中,通常会用到很多功能和设计相类似的组件,为了避免重复造轮子,我们经常会用到一些第三方组件,比如 vux,vant。但是这样会引入太多没用到的组件,造成打包体积过大。所以我们有必要封装一些基础的组件用于开发。

toast 和 dialog 组件封装

toast 和 dialog 组件基本是每一个移动端项目都会用到的,下面我将介绍如何封装这两个组件,并发布到 npm 供下载使用。

必备知识储备

vue 的基础知识

Vue.extend 构造器

$mount 手动挂载实例

vue 组件的传值传参

理解 Vue 构造函数及 prototype

webpack 打包

npm 基础知识

最终我们要达到这样的效果,从 npm 下载依赖包,直接调用

this.$toast({ msg: ‘手机号码不能为空’ })

this.$toast({

msg: ‘成功提示’,

type: ‘success’

})

this.$dialog({

title: ‘删除提示’,

text: ‘是否确定删除此标签?’,

showCancelBtn: true,

confirmText: ‘确认’,

confirm(content) {

alert(‘删除成功’)

}

})

复制代码

效果图如下。具体封装过程可参考文章:

6844904005265522696

c328e91ad5898ca84d109beed21bf3b6.png

相关文章

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151970.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql全文索引实现搜索功能(关键词查询)

    mysql全文索引实现搜索功能(关键词查询)最近在做一个关键词查询功能。所以开始了解mysql的全文索引技术。接下来我将一步一步告诉大家。我是如何一步一步实现关键词检索的。1.了解到mysql全文检索是以词为基础的。MySQL默认的分词是所有非字母和数字的特殊符号都是分词符。所以我存在数据库的样子是这样的。(左边的字段用于显示,右边的字段用于全文查询)2.全文检索的sqlSELECT*FROMtbk_item_coupon…

    2022年6月21日
    50
  • PhpStorm激活码2025.1.0.1版本最新教程,永久有效激活码,亲测可用,记得收藏

    PhpStorm激活码教程永久有效2025.1.0.1激活码教程-Windows版永久激活-持续更新,Idea激活码2025.1.0.1成功激活

    2025年5月23日
    3
  • ios消息推送机制_iPhone消息推送

    ios消息推送机制_iPhone消息推送原文地址:http://www.apkbus.com/android-130195-1-5.html推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台“个推”(非广告 )。今天要

    2022年9月28日
    3
  • 三菱modbus rtu通讯实例_三菱modbusRTU通讯实例

    三菱modbus rtu通讯实例_三菱modbusRTU通讯实例FX系列作为三菱基本款的PLC,它们之间的通讯方式分别如下:CC-LINK,N:N网络连接,并联连接。1.CC-LINK连接CC-LINK连接图如下:对应的PLC可为FX1N、FX1NC、FX2N、FX2NC、FX3U、FX3UC,因为在使用CC-LINK通讯时要扩展CC-LINK模块,而FX1S没有扩展模块功能,故FX1S不能用于此通讯方式。2)FX1N/FX2N/FX3U即可以作为主站,也可以…

    2025年10月19日
    3
  • linux的上传和下载命令_yum安装rz命令

    linux的上传和下载命令_yum安装rz命令要使用rz、sz命令传输文件需要给服务器安装lrzsz:yum-yinstalllrzsz命令sz、rz的使用方法rz中的r意为received(接收),输入rz时,意为服务器接收文件,即将文件从本地上传到服务器。sz中的s意为send(发送),输入sz时,意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。注意:不论是send还是rec…

    2022年8月24日
    4
  • QT5编程入门教程(非常详细)「建议收藏」

    QT5编程入门教程(非常详细)「建议收藏」Qt是一个跨平台的C++框架(C++库),目前最新的版本是Qt5。Qt5还包含了很多小版本,其中推荐Qt5.6或Qt5.9,这两个版本是LTS版本(即长期支持版本),Bug较少,相对稳定。Qt除了支持界面设计(GUI编程),还封装了与网络编程、多线程、数据库连接、视频音频等相关的功能。这套Qt教程以Qt5.9为基础来介绍Qt开发,配有精美的图片以及完整的示例程序,几乎涉及Qt编程的所有模块。注意,本教程不再对C++语法进行介绍,没有C++基础的读者…

    2022年5月16日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号