详解搭建一个vue-cli的移动端H5开发模板
前端  /  管理员 发布于 4年前   472
简介 vue-mobile 是是基于 vue-cli 实现的移动端 H5 开发模板,其中已经搭建好基本的开发框架,可帮助您实现快速开发。 技术栈:vue + vux + axios + less 源码地址:https://github.com/Michael-lzg/vue-mobile 功能 按如下文件目录搭建项目框架 配置 css 预处理器 1.安装依赖 2.在 build/webpack.base.conf.js 里参照如下代码进行配置 配置 vux 1.安装依赖 2.在 build/webpack.base.conf.js 里参照如下代码进行配置 3.局部注册使用 移动端适配 1.安装依赖 2.在 build/utils 进行如下配置 3.在 main.js 设置 html 跟字体大小 这是最简单的适配方法,后续跟单独对移动端 rem 适配做详细解读。 路由配置 1.通过配置路由对象的 meta[keepAlive]值来区分页面是否需要缓存 2.在 app.vue 做缓存判断 axios 请求封装 1.设置请求拦截和响应拦截 2.封装 get 和 post 请求方法 3.把 get,post 方法挂载到 vue 实例上。 2.在 main.js 通过 vue.use()注册 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。src 主要源码目录|-- assets 静态资源,统一管理|-- components 公用组件,全局组件|-- javascript JS相关操作处理 |-- ajax axios封装的请求拦截 |-- utils 全局封装的工具类 |-- datas 模拟数据,临时存放|-- router 路由,统一管理|-- store vuex, 统一管理|-- views 视图目录
npm install less less-loader --sava-dev
{ test: /\.less$/, loader: "style-loader!css-loader!less-loader"}
npm install vux vux-loader --save
const vuxLoader = require('vux-loader') //把vux-loader引入module.exports = vuxLoader.merge(webpackConfig, { //把新旧配置进行merge(放到页面最底部) plugins: ['vux-ui']})
npm install px2rem-loader --save-dev
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) }}
let cale = window.screen.availWidth > 750 ? 2 : window.screen.availWidth / 375window.document.documentElement.style.fontSize = `${100 * cale}px`
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) } }]
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;' // 请求显示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) })
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 }
// main.jsimport { get, post } from './js/ajax'Vue.prototype.$http = { get, post }工具类函数封装添加方法到 vue 实例的原型链上export default { install (Vue, options) { Vue.prototype.util = { method1(val) { ... }, method2 (val) { ... }, }}
import utils from './js/utils'Vue.use(utils)
您可能感兴趣的文章:
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号